2021-11-08 16:31:38 +01:00
|
|
|
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');
|
|
|
|
}
|
|
|
|
|
2022-06-22 14:55:43 +02:00
|
|
|
async getAllUserSplashes(user: User): Promise<Record<string, boolean>> {
|
2021-11-08 16:31:38 +01:00
|
|
|
if (user.isAPI) {
|
2022-06-22 14:55:43 +02:00
|
|
|
return {};
|
2021-11-08 16:31:38 +01:00
|
|
|
}
|
|
|
|
try {
|
2022-06-22 14:55:43 +02:00
|
|
|
return (
|
|
|
|
await this.userSplashStore.getAllUserSplashes(user.id)
|
2021-11-09 20:39:13 +01:00
|
|
|
).reduce(
|
|
|
|
(splashObject, splash) => ({
|
|
|
|
...splashObject,
|
|
|
|
[splash.splashId]: splash.seen,
|
|
|
|
}),
|
|
|
|
{},
|
|
|
|
);
|
2021-11-08 16:31:38 +01:00
|
|
|
} catch (err) {
|
|
|
|
this.logger.error(err);
|
2021-11-12 13:19:06 +01:00
|
|
|
return {};
|
2021-11-08 16:31:38 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-11-09 11:52:02 +01:00
|
|
|
async getSplash(user_id: number, splash_id: string): Promise<IUserSplash> {
|
2021-11-08 16:31:38 +01:00
|
|
|
return this.userSplashStore.getSplash(user_id, splash_id);
|
|
|
|
}
|
|
|
|
|
|
|
|
async updateSplash(splash: IUserSplash): Promise<IUserSplash> {
|
|
|
|
return this.userSplashStore.updateSplash(splash);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = UserSplashService;
|