blob: c78f8385020de494c81c4afab1f01451cf7f2561 (
plain) (
blame)
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
|
import { computed, IReactionPublic, observable } from 'mobx';
import { Actions } from 'src/actions/lib/actions';
import { ApiInterface } from 'src/api';
import { Stores } from 'src/@types/stores.types';
import Reaction from './Reaction';
export default abstract class TypedStore {
_reactions: Reaction[] = [];
@observable _status: any = null;
@computed get actionStatus() {
return this._status || [];
}
set actionStatus(status) {
this._status = status;
}
constructor(
public readonly stores: Stores,
public readonly api: ApiInterface,
public readonly actions: Actions,
) {}
registerReactions(reactions: { (r: IReactionPublic): void }[]): void {
for (const reaction of reactions) {
this._reactions.push(new Reaction(reaction));
}
}
public abstract setup(): void;
initialize(): void {
this.setup();
for (const reaction of this._reactions) reaction.start();
}
teardown(): void {
for (const reaction of this._reactions) reaction.stop();
}
resetStatus(): void {
this._status = null;
}
}
|