Skip to content

Commit 7b46abc

Browse files
committed
fix(web): use Effect.match instead of catchAll in session handlers
Replaces six tap+catchAll pairs in app-terminal-session-handlers.ts with Effect.match({ onFailure, onSuccess }) to satisfy the Effect-TS lint rule that flags catchAll for discarding typed errors. Behavior is unchanged — same success and failure side-effects, no Effect.asVoid needed since match already returns Effect<void, never>.
1 parent 011e2e2 commit 7b46abc

1 file changed

Lines changed: 42 additions & 56 deletions

File tree

packages/app/src/web/app-terminal-session-handlers.ts

Lines changed: 42 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,14 @@ const browserStatusMessage = (browser: ProjectBrowserSession): string => {
5757
const runOpenBrowser = (projectId: string, setMessage: StateMessageUpdater): void => {
5858
void Effect.runPromise(
5959
loadProjectBrowser(projectId).pipe(
60-
Effect.tap((browser) =>
61-
Effect.sync(() => {
62-
setMessage(browserStatusMessage(browser))
63-
})
64-
),
65-
Effect.catchAll((error) =>
66-
Effect.sync(() => {
60+
Effect.match({
61+
onFailure: (error) => {
6762
setMessage(`Failed to open browser: ${error}`)
68-
})
69-
),
70-
Effect.asVoid
63+
},
64+
onSuccess: (browser) => {
65+
setMessage(browserStatusMessage(browser))
66+
}
67+
})
7168
)
7269
)
7370
}
@@ -82,17 +79,14 @@ const runApplyProject = (
8279
}
8380
void Effect.runPromise(
8481
applyProject(projectId).pipe(
85-
Effect.tap((applied) =>
86-
Effect.sync(() => {
87-
setMessage(`Applied ${applied.displayName}.`)
88-
})
89-
),
90-
Effect.catchAll((error) =>
91-
Effect.sync(() => {
82+
Effect.match({
83+
onFailure: (error) => {
9284
setMessage(`Apply failed: ${error}`)
93-
})
94-
),
95-
Effect.asVoid
85+
},
86+
onSuccess: (applied) => {
87+
setMessage(`Applied ${applied.displayName}.`)
88+
}
89+
})
9690
)
9791
)
9892
}
@@ -107,17 +101,14 @@ const handleTerminalCreated = (sessionId: string, setMessage: StateMessageUpdate
107101
const runOpenTerminal = (projectKey: string, setMessage: StateMessageUpdater): void => {
108102
void Effect.runPromise(
109103
createProjectTerminalSession(projectKey).pipe(
110-
Effect.tap((created) =>
111-
Effect.sync(() => {
112-
handleTerminalCreated(created.session.id, setMessage)
113-
})
114-
),
115-
Effect.catchAll((error) =>
116-
Effect.sync(() => {
104+
Effect.match({
105+
onFailure: (error) => {
117106
setMessage(`Failed to open new terminal: ${error}`)
118-
})
119-
),
120-
Effect.asVoid
107+
},
108+
onSuccess: (created) => {
109+
handleTerminalCreated(created.session.id, setMessage)
110+
}
111+
})
121112
)
122113
)
123114
}
@@ -155,17 +146,14 @@ const runRefreshTasks = (
155146
): void => {
156147
void Effect.runPromise(
157148
loadProjectTasks(projectId, include).pipe(
158-
Effect.tap((next) =>
159-
Effect.sync(() => {
160-
setSnapshot(next)
161-
})
162-
),
163-
Effect.catchAll((error) =>
164-
Effect.sync(() => {
149+
Effect.match({
150+
onFailure: (error) => {
165151
setMessage(`Failed to load tasks: ${error}`)
166-
})
167-
),
168-
Effect.asVoid
152+
},
153+
onSuccess: (next) => {
154+
setSnapshot(next)
155+
}
156+
})
169157
)
170158
)
171159
}
@@ -178,13 +166,14 @@ const runStopTask = (
178166
): void => {
179167
void Effect.runPromise(
180168
stopProjectTask(projectId, pid).pipe(
181-
Effect.tap(() => Effect.sync(onAfterStop)),
182-
Effect.catchAll((error) =>
183-
Effect.sync(() => {
169+
Effect.match({
170+
onFailure: (error) => {
184171
setMessage(`Failed to stop task ${pid}: ${error}`)
185-
})
186-
),
187-
Effect.asVoid
172+
},
173+
onSuccess: () => {
174+
onAfterStop()
175+
}
176+
})
188177
)
189178
)
190179
}
@@ -197,17 +186,14 @@ const runLoadLogs = (
197186
): void => {
198187
void Effect.runPromise(
199188
loadProjectTaskLogs(projectId, pid).pipe(
200-
Effect.tap((output) =>
201-
Effect.sync(() => {
202-
setLogs(output)
203-
})
204-
),
205-
Effect.catchAll((error) =>
206-
Effect.sync(() => {
189+
Effect.match({
190+
onFailure: (error) => {
207191
setMessage(`Failed to load logs for ${pid}: ${error}`)
208-
})
209-
),
210-
Effect.asVoid
192+
},
193+
onSuccess: (output) => {
194+
setLogs(output)
195+
}
196+
})
211197
)
212198
)
213199
}

0 commit comments

Comments
 (0)