@@ -3,7 +3,7 @@ import { Clipboard } from "@tui/util/clipboard"
33import { Selection } from "@tui/util/selection"
44import { MouseButton , TextAttributes } from "@opentui/core"
55import { RouteProvider , useRoute } from "@tui/context/route"
6- import { Switch , Match , createEffect , untrack , ErrorBoundary , createSignal , onMount , batch , Show , on } from "solid-js"
6+ import { Switch , Match , createEffect , untrack , ErrorBoundary , createSignal , onMount , onCleanup , batch , Show , on } from "solid-js"
77import { win32DisableProcessedInput , win32FlushInputBuffer , win32InstallCtrlCGuard } from "./win32"
88import { Installation } from "@/installation"
99import { Flag } from "@/flag/flag"
@@ -691,66 +691,69 @@ function App() {
691691 }
692692 } )
693693
694- sdk . event . on ( TuiEvent . CommandExecute . type , ( evt ) => {
695- command . trigger ( evt . properties . command )
696- } )
697-
698- sdk . event . on ( TuiEvent . ToastShow . type , ( evt ) => {
699- toast . show ( {
700- title : evt . properties . title ,
701- message : evt . properties . message ,
702- variant : evt . properties . variant ,
703- duration : evt . properties . duration ,
704- } )
705- } )
706-
707- sdk . event . on ( TuiEvent . SessionSelect . type , ( evt ) => {
708- route . navigate ( {
709- type : "session" ,
710- sessionID : evt . properties . sessionID ,
711- } )
712- } )
694+ const unsubs = [
695+ sdk . event . on ( TuiEvent . CommandExecute . type , ( evt ) => {
696+ command . trigger ( evt . properties . command )
697+ } ) ,
713698
714- sdk . event . on ( SessionApi . Event . Deleted . type , ( evt ) => {
715- if ( route . data . type === "session" && route . data . sessionID === evt . properties . info . id ) {
716- route . navigate ( { type : "home" } )
699+ sdk . event . on ( TuiEvent . ToastShow . type , ( evt ) => {
717700 toast . show ( {
718- variant : "info" ,
719- message : "The current session was deleted" ,
701+ title : evt . properties . title ,
702+ message : evt . properties . message ,
703+ variant : evt . properties . variant ,
704+ duration : evt . properties . duration ,
720705 } )
721- }
722- } )
706+ } ) ,
723707
724- sdk . event . on ( SessionApi . Event . Error . type , ( evt ) => {
725- const error = evt . properties . error
726- if ( error && typeof error === "object" && error . name === "MessageAbortedError" ) return
727- const message = ( ( ) => {
728- if ( ! error ) return "An error occurred"
708+ sdk . event . on ( TuiEvent . SessionSelect . type , ( evt ) => {
709+ route . navigate ( {
710+ type : "session" ,
711+ sessionID : evt . properties . sessionID ,
712+ } )
713+ } ) ,
729714
730- if ( typeof error === "object" ) {
731- const data = error . data
732- if ( "message" in data && typeof data . message === "string" ) {
733- return data . message
734- }
715+ sdk . event . on ( SessionApi . Event . Deleted . type , ( evt ) => {
716+ if ( route . data . type === "session" && route . data . sessionID === evt . properties . info . id ) {
717+ route . navigate ( { type : "home" } )
718+ toast . show ( {
719+ variant : "info" ,
720+ message : "The current session was deleted" ,
721+ } )
735722 }
736- return String ( error )
737- } ) ( )
723+ } ) ,
724+
725+ sdk . event . on ( SessionApi . Event . Error . type , ( evt ) => {
726+ const error = evt . properties . error
727+ if ( error && typeof error === "object" && error . name === "MessageAbortedError" ) return
728+ const message = ( ( ) => {
729+ if ( ! error ) return "An error occurred"
730+
731+ if ( typeof error === "object" ) {
732+ const data = error . data
733+ if ( "message" in data && typeof data . message === "string" ) {
734+ return data . message
735+ }
736+ }
737+ return String ( error )
738+ } ) ( )
738739
739- toast . show ( {
740- variant : "error" ,
741- message,
742- duration : 5000 ,
743- } )
744- } )
740+ toast . show ( {
741+ variant : "error" ,
742+ message,
743+ duration : 5000 ,
744+ } )
745+ } ) ,
745746
746- sdk . event . on ( Installation . Event . UpdateAvailable . type , ( evt ) => {
747- toast . show ( {
748- variant : "info" ,
749- title : "Update Available" ,
750- message : `OpenCode v${ evt . properties . version } is available. Run 'opencode upgrade' to update manually.` ,
751- duration : 10000 ,
752- } )
753- } )
747+ sdk . event . on ( Installation . Event . UpdateAvailable . type , ( evt ) => {
748+ toast . show ( {
749+ variant : "info" ,
750+ title : "Update Available" ,
751+ message : `OpenCode v${ evt . properties . version } is available. Run 'opencode upgrade' to update manually.` ,
752+ duration : 10000 ,
753+ } )
754+ } ) ,
755+ ]
756+ onCleanup ( ( ) => unsubs . forEach ( ( fn ) => fn ( ) ) )
754757
755758 return (
756759 < box
0 commit comments