-
Notifications
You must be signed in to change notification settings - Fork 103
/
activity-router.ts
81 lines (74 loc) · 2.7 KB
/
activity-router.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { get, writable } from 'svelte/store'
import { Subrouter } from '@core/router'
import { ActivityType, claimActivity, getAssetById, NotVerifiedStatus, rejectActivity } from '@core/wallet'
import { ActivityAction, selectedActivity } from '@/contexts/dashboard'
import { ActivityRoute } from '../../enums'
import { IActivityRouterEvent } from '../../interfaces'
import { dashboardRouter, tokenRouter } from '../../routers'
import { resetRouterWithDrawerDelay } from '../../utils'
export const activityRoute = writable<ActivityRoute>(null)
export const activityRouter = writable<ActivityRouter>(null)
export class ActivityRouter extends Subrouter<ActivityRoute> {
private backToDashboard = false
constructor() {
super(ActivityRoute.Details, activityRoute, get(dashboardRouter))
}
public next(event: IActivityRouterEvent = {}): void {
const { action, activity, isUnlocked } = event
if (activity) {
selectedActivity.set(activity)
if (activity.type === ActivityType.Basic) {
const asset = getAssetById(activity.assetId)
if (asset?.verification?.status === NotVerifiedStatus.New) {
get(tokenRouter)?.next({ asset })
return
}
}
}
switch (action) {
case ActivityAction.FastClaim:
this.backToDashboard = true
this.claim(isUnlocked)
return
case ActivityAction.FastReject:
this.backToDashboard = true
this.reject()
return
case ActivityAction.Claim:
this.claim(isUnlocked)
return
case ActivityAction.Reject:
this.reject()
}
}
public closeDrawer(): void {
selectedActivity.set(null)
get(dashboardRouter).previous()
resetRouterWithDrawerDelay(get(activityRouter))
}
public previous(): void {
if (this.backToDashboard) {
get(dashboardRouter).previous()
this.backToDashboard = false
} else {
super.previous()
}
}
private claim(isUnlocked: boolean | undefined): void {
if (!isUnlocked) {
this.setNext(ActivityRoute.Password)
} else {
claimActivity(get(selectedActivity))
selectedActivity.set(null)
get(dashboardRouter).previous()
}
}
private reject(): void {
if (get(activityRoute) === ActivityRoute.Reject) {
rejectActivity(get(selectedActivity).id)
get(dashboardRouter).previous()
} else {
this.setNext(ActivityRoute.Reject)
}
}
}