chore: Move to Typescript (#2783)
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously. closes #1282
This commit is contained in:
34
app/stores/ViewsStore.ts
Normal file
34
app/stores/ViewsStore.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { reduce, filter, find, orderBy } from "lodash";
|
||||
import View from "~/models/View";
|
||||
import BaseStore, { RPCAction } from "./BaseStore";
|
||||
import RootStore from "./RootStore";
|
||||
|
||||
export default class ViewsStore extends BaseStore<View> {
|
||||
actions = [RPCAction.List, RPCAction.Create];
|
||||
|
||||
constructor(rootStore: RootStore) {
|
||||
super(rootStore, View);
|
||||
}
|
||||
|
||||
inDocument(documentId: string): View[] {
|
||||
return orderBy(
|
||||
filter(this.orderedData, (view) => view.documentId === documentId),
|
||||
"lastViewedAt",
|
||||
"desc"
|
||||
);
|
||||
}
|
||||
|
||||
countForDocument(documentId: string): number {
|
||||
const views = this.inDocument(documentId);
|
||||
return reduce(views, (memo, view) => memo + view.count, 0);
|
||||
}
|
||||
|
||||
touch(documentId: string, userId: string) {
|
||||
const view = find(
|
||||
this.orderedData,
|
||||
(view) => view.documentId === documentId && view.user.id === userId
|
||||
);
|
||||
if (!view) return;
|
||||
view.touch();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user