-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
AppSubscriptionActivity.ts
35 lines (28 loc) · 1.06 KB
/
AppSubscriptionActivity.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
// MIT © 2017 azu
import { AppSubscriptionActivityItem } from "./AppSubscriptionActivityItem";
import { SubscriptionIdentifier } from "../../Subscriptions/Subscription";
export interface AppSubscriptionActivityArgs {
items: AppSubscriptionActivityItem[];
}
export class AppSubscriptionActivity {
items: AppSubscriptionActivityItem[];
constructor(args: AppSubscriptionActivityArgs) {
this.items = args.items;
}
isReadRecently(subscriptionId: SubscriptionIdentifier): boolean {
const RECENT = 3;
return this.items.slice(-RECENT).some(item => subscriptionId.equals(item.id));
}
get current(): AppSubscriptionActivityItem | undefined {
return this.items[this.items.length - 1];
}
get currentId(): SubscriptionIdentifier | undefined {
return this.current ? this.current.id : undefined;
}
addItem(item: AppSubscriptionActivityItem) {
return new AppSubscriptionActivity({
...(this as AppSubscriptionActivityArgs),
items: this.items.concat(item)
});
}
}