1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/src/lib/services/user-splash-service.ts

53 lines
1.5 KiB
TypeScript
Raw Normal View History

import { Logger } from '../logger';
import { IUnleashStores } from '../types/stores';
import { IUnleashConfig } from '../types/option';
import User from '../types/user';
import {
IUserSplash,
IUserSplashStore,
} from '../types/stores/user-splash-store';
export default class UserSplashService {
private userSplashStore: IUserSplashStore;
private logger: Logger;
constructor(
{ userSplashStore }: Pick<IUnleashStores, 'userSplashStore'>,
{ getLogger }: Pick<IUnleashConfig, 'getLogger'>,
) {
this.userSplashStore = userSplashStore;
this.logger = getLogger('services/user-splash-service.js');
}
async getAllUserSplashes(user: User): Promise<Record<string, boolean>> {
if (user.isAPI) {
return {};
}
try {
return (
await this.userSplashStore.getAllUserSplashes(user.id)
2021-11-09 20:39:13 +01:00
).reduce(
(splashObject, splash) => ({
...splashObject,
[splash.splashId]: splash.seen,
}),
{},
);
} catch (err) {
this.logger.error(err);
2021-11-12 13:19:06 +01:00
return {};
}
}
2021-11-09 11:52:02 +01:00
async getSplash(user_id: number, splash_id: string): Promise<IUserSplash> {
return this.userSplashStore.getSplash(user_id, splash_id);
}
async updateSplash(splash: IUserSplash): Promise<IUserSplash> {
return this.userSplashStore.updateSplash(splash);
}
}
module.exports = UserSplashService;