1- import * as Cause from "effect/Cause" ;
21import * as Context from "effect/Context" ;
32import * as Effect from "effect/Effect" ;
43import * as Layer from "effect/Layer" ;
54import * as Ref from "effect/Ref" ;
5+ import * as Schema from "effect/Schema" ;
66import * as Scope from "effect/Scope" ;
77
88import type * as Electron from "electron" ;
@@ -15,6 +15,18 @@ import * as ElectronTheme from "../electron/ElectronTheme.ts";
1515import * as DesktopState from "./DesktopState.ts" ;
1616import * as DesktopWindow from "../window/DesktopWindow.ts" ;
1717
18+ export class DesktopLifecycleRelaunchError extends Schema . TaggedErrorClass < DesktopLifecycleRelaunchError > ( ) (
19+ "DesktopLifecycleRelaunchError" ,
20+ {
21+ reason : Schema . String ,
22+ cause : Schema . Defect ( ) ,
23+ } ,
24+ ) {
25+ override get message ( ) : string {
26+ return `Desktop relaunch failed for reason "${ this . reason } ".` ;
27+ }
28+ }
29+
1830export type DesktopLifecycleRuntimeServices =
1931 | DesktopEnvironment . DesktopEnvironment
2032 | DesktopShutdown . DesktopShutdown
@@ -142,11 +154,10 @@ export const make = DesktopLifecycle.of({
142154 } ) ;
143155 yield * electronApp . exit ( 0 ) ;
144156 } ) . pipe (
145- Effect . catchCause ( ( cause ) =>
146- logLifecycleError ( "desktop relaunch failed" , {
147- cause : Cause . pretty ( cause ) ,
148- } ) ,
149- ) ,
157+ Effect . catchCause ( ( cause ) => {
158+ const error = new DesktopLifecycleRelaunchError ( { reason, cause } ) ;
159+ return logLifecycleError ( error . message , { error } ) ;
160+ } ) ,
150161 Effect . forkDetach ,
151162 Effect . asVoid ,
152163 ) ;
0 commit comments