Skip to content

Commit 9bc4138

Browse files
refactor: flatten nested call chains (#26350)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent ff42480 commit 9bc4138

102 files changed

Lines changed: 423 additions & 414 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎apps/desktop/src/app/DesktopAppActivation.ts‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// @effect-diagnostics nodeBuiltinImport:off -- Local socket ownership checks need lstat, an atomic rename, and a directory watch at the Node adapter boundary.
2+
import { pipe } from "effect/Function";
23
import * as NodeCrypto from "node:crypto";
34
import * as NodeFS from "node:fs";
45
import * as NodeFSP from "node:fs/promises";
@@ -151,8 +152,10 @@ export async function startDesktopAppControlServer(input: {
151152
}
152153

153154
if (!isDesktopAppActivationRequest(parsed)) {
154-
finish(
155-
invalidResponse(requestIdFromUnknown(parsed), "The desktop app request is invalid."),
155+
pipe(
156+
requestIdFromUnknown(parsed),
157+
(requestId) => invalidResponse(requestId, "The desktop app request is invalid."),
158+
finish,
156159
);
157160
return;
158161
}

‎apps/desktop/src/snapShot/DesktopSnapShot.ts‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// @effect-diagnostics globalTimers:off -- Capture timeouts and Electron overlay animation timers run at native callback boundaries outside Effect fibers.
22

3+
import { pipe } from "effect/Function";
34
import {
45
DEFAULT_CLIENT_SETTINGS,
56
DesktopPendingSnapShot,
@@ -1288,10 +1289,10 @@ export const make = Effect.gen(function* () {
12881289
if (isModifierPairShortcut(shortcut)) {
12891290
registered = yield* Effect.tryPromise(() =>
12901291
startPairShortcutProcess(snapShotShortcutModifierPair(shortcut), onCurrentShortcut, () => {
1291-
void runPromise(
1292-
setShortcutFailure(
1293-
snapShotShortcutRegistrationFailureMessage(shortcut, environment.platform),
1294-
),
1292+
void pipe(
1293+
snapShotShortcutRegistrationFailureMessage(shortcut, environment.platform),
1294+
setShortcutFailure,
1295+
runPromise,
12951296
).catch(() => undefined);
12961297
}),
12971298
).pipe(

‎apps/mobile/src/features/connection/ConnectionDiagnosisDetails.tsx‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
} from "@t3tools/client-runtime/connection";
1111
import type { EnvironmentId } from "@t3tools/contracts";
1212
import Constants from "expo-constants";
13-
import * as Option from "effect/Option";
1413
import { AsyncResult } from "effect/reactivity";
1514
import { Linking, View } from "react-native";
1615

@@ -28,8 +27,8 @@ export function useConnectionDiagnosis(
2827
environmentId: EnvironmentId,
2928
presentation: EnvironmentPresentation | null,
3029
) {
31-
const state = Option.getOrElse(
32-
AsyncResult.value(useAtomValue(environmentCatalog.stateAtom(environmentId))),
30+
const state = AsyncResult.getOrElse(
31+
useAtomValue(environmentCatalog.stateAtom(environmentId)),
3332
() => AVAILABLE_CONNECTION_STATE,
3433
);
3534
if (presentation === null || !presentation.entry.enabled) return { diagnosis: null, state };

‎apps/mobile/src/features/pull-requests/usePullRequestFilesViewed.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { usePullRequestConnected } from "./usePullRequestConnected";
22
import { RegistryContext, useAtomRefresh, useAtomValue } from "@effect/atom-react";
33
import { squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";
44
import type { PullRequestDetail } from "@t3tools/contracts";
5-
import * as Option from "effect/Option";
65
import { AsyncResult } from "effect/reactivity";
76
import { use, useState } from "react";
87
import { composerPullRequests } from "../../state/pull-requests";
@@ -50,8 +49,9 @@ export function usePullRequestFilesViewed(params: PullRequestParams, pr: PullReq
5049
input: { ...target.input, files: [{ path, viewed }] },
5150
});
5251
// The read that is current once the write lands still predates it; a newer one carries it.
53-
const readAtWrite = Option.getOrNull(
54-
AsyncResult.value(registry.get(composerPullRequests.filesViewed(target))),
52+
const readAtWrite = AsyncResult.getOrElse(
53+
registry.get(composerPullRequests.filesViewed(target)),
54+
() => null,
5555
);
5656
setState((current) => {
5757
if (current.key !== scopeKey || current.presses[path]?.version !== version) return current;

‎apps/mobile/src/features/pull-requests/usePullRequestList.ts‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { executeAtomQuery, squashAtomCommandFailure } from "@t3tools/client-runt
33
import type { EnvironmentId, PullRequestDiffStat, PullRequestListInput } from "@t3tools/contracts";
44
import * as Cause from "effect/Cause";
55
import * as Effect from "effect/Effect";
6-
import * as Option from "effect/Option";
76
import { AsyncResult, Atom, type AtomRegistry } from "effect/reactivity";
87
import { use, useMemo, useState } from "react";
98
import { environmentCatalog } from "../../connection/catalog";
@@ -32,7 +31,7 @@ type Read = <A>(atom: Atom.Atom<A>) => A;
3231

3332
/** The head the list query holds now, cached or answered. */
3433
function currentHead(read: Read, target: ListTarget) {
35-
return Option.getOrNull(AsyncResult.value(read(composerPullRequests.list(target))));
34+
return AsyncResult.getOrElse(read(composerPullRequests.list(target)), () => null);
3635
}
3736

3837
function currentPages(read: Read, target: ListTarget): PullRequestListPages | null {

‎apps/mobile/src/features/settings/EnvironmentRoutesSection.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export function EnvironmentRoutesSection({
5656
const entry = useAtomValue(environmentCatalog.catalogValueAtom).entries.get(environmentId);
5757
const prepared = useAtomValue(environmentSession.preparedConnectionValueAtom(environmentId));
5858
const sessionResult = useAtomValue(environmentSession.sessionStateAtom(environmentId));
59-
const session = Option.getOrNull(AsyncResult.value(sessionResult));
59+
const session = AsyncResult.getOrElse(sessionResult, () => null);
6060
const [permissionsOpen, setPermissionsOpen] = useState(false);
6161
const reorder = useAtomCommand(environmentCatalog.reorderRoutes, "route reorder");
6262
const removeRoute = useAtomCommand(environmentCatalog.removeRoute, "route removal");

‎apps/mobile/src/features/settings/environmentUpdateCheck.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const environmentReleaseCheckAtom = Atom.family((environmentId: Environme
4040
export function releaseCheckValue(
4141
result: AsyncResult.AsyncResult<EnvironmentReleaseCheck, Error>,
4242
): EnvironmentReleaseCheck | null {
43-
return Option.getOrNull(AsyncResult.value(result));
43+
return AsyncResult.getOrElse(result, () => null);
4444
}
4545

4646
export function releaseCheckError(

‎apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { AppText as Text } from "../../components/ui/AppText";
2020
import { TerminalContextSheet } from "./TerminalContextSheet";
2121
import { hasNativeTerminalSurface, supportsNativeTerminalOutput } from "./nativeTerminalModule";
2222
import * as Clipboard from "expo-clipboard";
23-
import * as Option from "effect/Option";
2423
import * as Schema from "effect/Schema";
2524
import { AsyncResult } from "effect/reactivity";
2625
import {
@@ -340,7 +339,7 @@ function readLiveTerminalSessions(
340339
): ReadonlyArray<TerminalMenuSession> {
341340
if (!readEnvironmentScope(environmentId, AuthTerminalReadScope)) return [];
342341
const result = appAtomRegistry.get(terminalEnvironment.metadata({ environmentId, input: null }));
343-
const summaries = Option.getOrElse(AsyncResult.value(result), () => []);
342+
const summaries = AsyncResult.getOrElse(result, () => []);
344343
return summaries
345344
.filter((summary) => summary.threadId === threadId)
346345
.map((summary) => ({

‎apps/mobile/src/features/threads/LinkRequestCard.tsx‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { pipe } from "effect/Function";
12
import { useAtomValue } from "@effect/atom-react";
23
import {
34
type LinkableMachine,
@@ -125,7 +126,7 @@ function PendingLinkRequest(props: {
125126
setDeclining(false),
126127
);
127128
if (result._tag === "Failure" && !isAtomCommandInterrupted(result)) {
128-
setError(linkRequestFailureMessage(squashAtomCommandFailure(result)));
129+
pipe(squashAtomCommandFailure(result), linkRequestFailureMessage, setError);
129130
}
130131
};
131132

@@ -311,7 +312,7 @@ function LinkRequestSheet(props: {
311312
setPairingCode("");
312313
props.onClose();
313314
} else if (!isAtomCommandInterrupted(result)) {
314-
setError(linkRequestFailureMessage(squashAtomCommandFailure(result)));
315+
pipe(squashAtomCommandFailure(result), linkRequestFailureMessage, setError);
315316
}
316317
};
317318

‎apps/mobile/src/features/threads/SecretRequestCard.tsx‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { pipe } from "effect/Function";
12
import {
23
SECRET_REQUEST_DEFAULT_PLACEHOLDER,
34
secretRequestAnswerInput,
@@ -91,7 +92,7 @@ function PendingSecretRequestForm(props: {
9192
return;
9293
}
9394
if (!isAtomCommandInterrupted(result)) {
94-
setError(secretRequestFailureMessage(squashAtomCommandFailure(result)));
95+
pipe(squashAtomCommandFailure(result), secretRequestFailureMessage, setError);
9596
}
9697
};
9798

0 commit comments

Comments
 (0)