diff options
Diffstat (limited to 'packages/main/src/stores/Service.ts')
-rw-r--r-- | packages/main/src/stores/Service.ts | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/packages/main/src/stores/Service.ts b/packages/main/src/stores/Service.ts index cbd8662..d98e52e 100644 --- a/packages/main/src/stores/Service.ts +++ b/packages/main/src/stores/Service.ts | |||
@@ -40,7 +40,10 @@ const Service = defineServiceModel(ServiceSettings) | |||
40 | return self.currentUrl ?? self.settings.url; | 40 | return self.currentUrl ?? self.settings.url; |
41 | }, | 41 | }, |
42 | get shouldBeLoaded(): boolean { | 42 | get shouldBeLoaded(): boolean { |
43 | return self.state !== 'crashed'; | 43 | return !self.crashed; |
44 | }, | ||
45 | get shouldBeVisible(): boolean { | ||
46 | return this.shouldBeLoaded && !self.failed; | ||
44 | }, | 47 | }, |
45 | })) | 48 | })) |
46 | .volatile( | 49 | .volatile( |
@@ -67,17 +70,20 @@ const Service = defineServiceModel(ServiceSettings) | |||
67 | setTitle(title: string): void { | 70 | setTitle(title: string): void { |
68 | self.title = title; | 71 | self.title = title; |
69 | }, | 72 | }, |
70 | startedLoading(): void { | 73 | startLoading(): void { |
71 | self.state = 'loading'; | 74 | self.state = { type: 'loading' }; |
72 | }, | 75 | }, |
73 | finishedLoading(): void { | 76 | finishLoading(): void { |
74 | if (self.state === 'loading') { | 77 | if (self.loading) { |
75 | // Do not overwrite crashed state if the service haven't been reloaded yet. | 78 | // Do not overwrite crashed state if the service haven't been reloaded yet. |
76 | self.state = 'loaded'; | 79 | self.state = { type: 'loaded' }; |
77 | } | 80 | } |
78 | }, | 81 | }, |
79 | crashed(): void { | 82 | setFailed(errorCode: number, errorDesc: string): void { |
80 | self.state = 'crashed'; | 83 | self.state = { type: 'failed', errorCode, errorDesc }; |
84 | }, | ||
85 | setCrashed(reason: string, exitCode: number): void { | ||
86 | self.state = { type: 'crashed', reason, exitCode }; | ||
81 | }, | 87 | }, |
82 | setUnreadCount({ direct, indirect }: UnreadCount): void { | 88 | setUnreadCount({ direct, indirect }: UnreadCount): void { |
83 | if (direct !== undefined) { | 89 | if (direct !== undefined) { |
@@ -98,7 +104,7 @@ const Service = defineServiceModel(ServiceSettings) | |||
98 | }, | 104 | }, |
99 | reload(ignoreCache = false): void { | 105 | reload(ignoreCache = false): void { |
100 | if (self.serviceView === undefined) { | 106 | if (self.serviceView === undefined) { |
101 | this.startedLoading(); | 107 | self.state = { type: 'initializing' }; |
102 | } else { | 108 | } else { |
103 | self.serviceView?.reload(ignoreCache); | 109 | self.serviceView?.reload(ignoreCache); |
104 | } | 110 | } |
@@ -109,12 +115,9 @@ const Service = defineServiceModel(ServiceSettings) | |||
109 | go(url: string): void { | 115 | go(url: string): void { |
110 | if (self.serviceView === undefined) { | 116 | if (self.serviceView === undefined) { |
111 | self.currentUrl = url; | 117 | self.currentUrl = url; |
112 | this.startedLoading(); | 118 | self.state = { type: 'initializing' }; |
113 | } else { | 119 | } else { |
114 | self.serviceView?.loadURL(url).catch((error) => { | 120 | self.serviceView?.loadURL(url); |
115 | log.warn('Error while loading', url, error); | ||
116 | this.crashed(); | ||
117 | }); | ||
118 | } | 121 | } |
119 | }, | 122 | }, |
120 | goHome(): void { | 123 | goHome(): void { |