-
-
Notifications
You must be signed in to change notification settings - Fork 768
/
Copy pathuser-splash-service.ts
52 lines (45 loc) · 1.53 KB
/
user-splash-service.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import type { Logger } from '../logger';
import type { IUnleashStores } from '../types/stores';
import type { IUnleashConfig } from '../types/option';
import type { IUser } from '../types/user';
import type {
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: IUser): Promise<Record<string, boolean>> {
if (user.isAPI) {
return {};
}
try {
return (
await this.userSplashStore.getAllUserSplashes(user.id)
).reduce(
(splashObject, splash) => ({
...splashObject,
[splash.splashId]: splash.seen,
}),
{},
);
} catch (err) {
this.logger.error(err);
return {};
}
}
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;