/
settings-router.ts
56 lines (48 loc) · 1.44 KB
/
settings-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
import { get, writable, Writable } from 'svelte/store'
import { ISettingsRouterEvent } from '../interfaces'
import { Subrouter } from '@core/router'
import { profileRouter } from '.'
import { SettingsRoute } from '../enums'
export const settingsRoute = writable<SettingsRoute>(null)
export const settingsRouter = writable<SettingsRouter>(null)
const needsUnlockStore = writable<boolean>(false)
export class SettingsRouter extends Subrouter<SettingsRoute> {
constructor() {
super(SettingsRoute.Init, settingsRoute, get(profileRouter))
}
next(event: ISettingsRouterEvent = {}): void {
const { goTo } = event
let nextRoute: SettingsRoute
const currentRoute = get(this.routeStore)
switch (currentRoute) {
case SettingsRoute.Init: {
if (goTo) {
super.goTo(goTo)
}
break
}
default: {
this.previous()
break
}
}
this.setNext(nextRoute)
}
previous(): void {
if (get(needsUnlockStore)) {
needsUnlockStore.set(false)
} else {
super.previous()
}
}
getNeedsUnlockStore(): Writable<boolean> {
return needsUnlockStore
}
setNeedsUnlock(value: boolean): void {
needsUnlockStore.set(value)
}
reset(): void {
super.reset()
needsUnlockStore.set(false)
}
}