aboutsummaryrefslogtreecommitdiffstats
path: root/packages/main/src/stores/Service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/main/src/stores/Service.ts')
-rw-r--r--packages/main/src/stores/Service.ts31
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 {