


























@@ -933,16 +933,14 @@ export function applyModelFallbacksFromSelection(
933933scopeKeySet && !includesResolvedPrimary
934934 ? rawSelectedFallbacks.filter((key) => existingFallbackSet.has(key))
935935 : rawSelectedFallbacks;
936-const fallbacks = scopeKeySet
937- ? mergeScopedFallbackSelection({
938- existingFallbacks,
939- selectedFallbacks,
940- scopeKeySet,
941-})
942- : mergeUnscopedFallbackSelection({
943- existingFallbacks,
944- selectedFallbacks,
945-});
936+const preserveExistingFallback = scopeKeySet
937+ ? (fallback: string) => !scopeKeySet.has(fallback)
938+ : (fallback: string) => !isModelPickerVisibleModelRef(fallback);
939+const fallbacks = mergeFallbackSelection({
940+ existingFallbacks,
941+ selectedFallbacks,
942+ preserveExistingFallback,
943+});
946944const nextModel = {
947945 ...preservedModelFields,
948946 ...(existingPrimary != null ? { primary: existingPrimary } : {}),
@@ -973,41 +971,16 @@ export function applyModelFallbacksFromSelection(
973971};
974972}
975973976-function mergeScopedFallbackSelection(params: {
977-existingFallbacks: string[];
978-selectedFallbacks: string[];
979-scopeKeySet: Set<string>;
980-}): string[] {
981-const selected = new Set(params.selectedFallbacks);
982-const fallbacks: string[] = [];
983-for (const fallback of params.existingFallbacks) {
984-if (!params.scopeKeySet.has(fallback)) {
985-fallbacks.push(fallback);
986-continue;
987-}
988-if (selected.delete(fallback)) {
989-fallbacks.push(fallback);
990-}
991-}
992-for (const fallback of params.selectedFallbacks) {
993-if (selected.has(fallback)) {
994-fallbacks.push(fallback);
995-}
996-}
997-return fallbacks;
998-}
999-1000-function mergeUnscopedFallbackSelection(params: {
974+function mergeFallbackSelection(params: {
1001975existingFallbacks: string[];
1002976selectedFallbacks: string[];
977+preserveExistingFallback: (fallback: string) => boolean;
1003978}): string[] {
1004979const selected = new Set(params.selectedFallbacks);
1005980const fallbacks: string[] = [];
1006981for (const fallback of params.existingFallbacks) {
1007-if (!isModelPickerVisibleModelRef(fallback)) {
982+if (params.preserveExistingFallback(fallback)) {
1008983fallbacks.push(fallback);
1009-// Defensive: future callers may pass a hidden fallback in the selected list.
1010-selected.delete(fallback);
1011984continue;
1012985}
1013986if (selected.delete(fallback)) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。