History

Normalize branch and model selection handling

- Deduplicate terminal IDs and favorite model slugs with trim-aware iteration - Use effect-based filtering for local branch and built-in model lists - Switch stable array handling to non-mutating `toSorted`

Julius Marminge committed 6 months ago

Commit 7793bd61 parent 7f03f4d8 files · +63 −23Browse files

Showing the changes to apps/web/src/components/settings (1 of 8 files). Show all

Unified · Split

apps/web/src/components/settings/SettingsPanels.tsx+11−4
@@ -14,8 +14,10 @@ import { · 13 unmodified lines
1414 import { scopeThreadRef } from "@t3tools/client-runtime";
1515 import { DEFAULT_UNIFIED_SETTINGS } from "@t3tools/contracts/settings";
1616 import { createModelSelection } from "@t3tools/shared/model";
17+import * as Arr from "effect/Array";
1718 import * as Duration from "effect/Duration";
1819 import * as Equal from "effect/Equal";
20+import * as Result from "effect/Result";
1921 import { APP_VERSION, HOSTED_APP_CHANNEL, HOSTED_APP_CHANNEL_LABEL } from "../../branding";
2022 import {
2123 canCheckForUpdate,
@@ -1143,7 +1145,12 @@ export function ProviderSettingsPanel() { · 1121 unmodified lines
11431145 nextFavoriteModels: ReadonlyArray<string>,
11441146 ) => {
11451147 const favoriteModels = [
1146− ...new Set(nextFavoriteModels.map((slug) => slug.trim()).filter((slug) => slug.length > 0)),
1148+ ...new Set(
1149+ Arr.filterMap(nextFavoriteModels, (slug) => {
1150+ const trimmedSlug = slug.trim();
1151+ return trimmedSlug.length > 0 ? Result.succeed(trimmedSlug) : Result.failVoid;
1152+ }),
1153+ ),
11471154 ];
11481155 updateSettings({
11491156 favorites: [
@@ -1249,9 +1256,9 @@ export function ProviderSettingsPanel() { · 99 unmodified lines
12491256 hiddenModels: [],
12501257 modelOrder: [],
12511258 };
1252− const favoriteModels = (settings.favorites ?? [])
1253− .filter((favorite) => favorite.provider === row.instanceId)
1254− .map((favorite) => favorite.model);
1259+ const favoriteModels = Arr.filterMap(settings.favorites ?? [], (favorite) =>
1260+ favorite.provider === row.instanceId ? Result.succeed(favorite.model) : Result.failVoid,
1261+ );
12551262 const resetLabel = driverOption?.label ?? String(row.driver);
12561263 const headerAction =
12571264 row.isDefault && row.isDirty ? (