mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 05:12:55 -07:00
chore: refactor
This commit is contained in:
committed by
Keith Guerin
parent
4412314dbe
commit
f40f475024
@@ -110,3 +110,23 @@ export function deriveItemsFromLegacySettings(
|
|||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const VALID_IDS: Set<string> = new Set(ALL_ITEMS.map((i) => i.id));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolves the ordered list and selected set of footer items from settings.
|
||||||
|
* Used by FooterConfigDialog to initialize and reset state.
|
||||||
|
*/
|
||||||
|
export function resolveFooterState(settings: MergedSettings): {
|
||||||
|
orderedIds: string[];
|
||||||
|
selectedIds: Set<string>;
|
||||||
|
} {
|
||||||
|
const source = (
|
||||||
|
settings.ui?.footer?.items ?? deriveItemsFromLegacySettings(settings)
|
||||||
|
).filter((id: string) => VALID_IDS.has(id));
|
||||||
|
const others = DEFAULT_ORDER.filter((id) => !source.includes(id));
|
||||||
|
return {
|
||||||
|
orderedIds: [...source, ...others],
|
||||||
|
selectedIds: new Set(source),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
@@ -15,11 +15,7 @@ import { TextInput } from './shared/TextInput.js';
|
|||||||
import { useFuzzyList } from '../hooks/useFuzzyList.js';
|
import { useFuzzyList } from '../hooks/useFuzzyList.js';
|
||||||
import { MemoryUsageDisplay } from './MemoryUsageDisplay.js';
|
import { MemoryUsageDisplay } from './MemoryUsageDisplay.js';
|
||||||
import { FooterRow, type FooterRowItem } from './Footer.js';
|
import { FooterRow, type FooterRowItem } from './Footer.js';
|
||||||
import {
|
import { ALL_ITEMS, resolveFooterState } from '../../config/footerItems.js';
|
||||||
ALL_ITEMS,
|
|
||||||
DEFAULT_ORDER,
|
|
||||||
deriveItemsFromLegacySettings,
|
|
||||||
} from '../../config/footerItems.js';
|
|
||||||
import { SettingScope } from '../../config/settings.js';
|
import { SettingScope } from '../../config/settings.js';
|
||||||
|
|
||||||
interface FooterConfigDialogProps {
|
interface FooterConfigDialogProps {
|
||||||
@@ -139,38 +135,11 @@ export const FooterConfigDialog: React.FC<FooterConfigDialogProps> = ({
|
|||||||
const { settings, setSetting } = useSettingsStore();
|
const { settings, setSetting } = useSettingsStore();
|
||||||
const maxItemsToShow = 10;
|
const maxItemsToShow = 10;
|
||||||
|
|
||||||
const [state, dispatch] = useReducer(footerConfigReducer, undefined, () => {
|
const [state, dispatch] = useReducer(footerConfigReducer, undefined, () => ({
|
||||||
const validIds = new Set(ALL_ITEMS.map((i: { id: string }) => i.id));
|
...resolveFooterState(settings.merged),
|
||||||
let ordered: string[];
|
|
||||||
let selected: Set<string>;
|
|
||||||
|
|
||||||
if (settings.merged.ui?.footer?.items) {
|
|
||||||
const savedItems = settings.merged.ui.footer.items.filter((id: string) =>
|
|
||||||
validIds.has(id),
|
|
||||||
);
|
|
||||||
const others = DEFAULT_ORDER.filter(
|
|
||||||
(id: string) => !savedItems.includes(id),
|
|
||||||
);
|
|
||||||
ordered = [...savedItems, ...others];
|
|
||||||
selected = new Set(savedItems);
|
|
||||||
} else {
|
|
||||||
const derived = deriveItemsFromLegacySettings(settings.merged).filter(
|
|
||||||
(id: string) => validIds.has(id),
|
|
||||||
);
|
|
||||||
const others = DEFAULT_ORDER.filter(
|
|
||||||
(id: string) => !derived.includes(id),
|
|
||||||
);
|
|
||||||
ordered = [...derived, ...others];
|
|
||||||
selected = new Set(derived);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
orderedIds: ordered,
|
|
||||||
selectedIds: selected,
|
|
||||||
activeIndex: 0,
|
activeIndex: 0,
|
||||||
scrollOffset: 0,
|
scrollOffset: 0,
|
||||||
};
|
}));
|
||||||
});
|
|
||||||
|
|
||||||
const { orderedIds, selectedIds, activeIndex, scrollOffset } = state;
|
const { orderedIds, selectedIds, activeIndex, scrollOffset } = state;
|
||||||
|
|
||||||
@@ -216,18 +185,10 @@ export const FooterConfigDialog: React.FC<FooterConfigDialogProps> = ({
|
|||||||
|
|
||||||
const handleResetToDefaults = useCallback(() => {
|
const handleResetToDefaults = useCallback(() => {
|
||||||
setSetting(SettingScope.User, 'ui.footer.items', undefined);
|
setSetting(SettingScope.User, 'ui.footer.items', undefined);
|
||||||
|
|
||||||
const validIds = new Set(ALL_ITEMS.map((i: { id: string }) => i.id));
|
|
||||||
const derived = deriveItemsFromLegacySettings(settings.merged).filter(
|
|
||||||
(id: string) => validIds.has(id),
|
|
||||||
);
|
|
||||||
const others = DEFAULT_ORDER.filter((id: string) => !derived.includes(id));
|
|
||||||
|
|
||||||
dispatch({
|
dispatch({
|
||||||
type: 'SET_STATE',
|
type: 'SET_STATE',
|
||||||
payload: {
|
payload: {
|
||||||
orderedIds: [...derived, ...others],
|
...resolveFooterState(settings.merged),
|
||||||
selectedIds: new Set(derived),
|
|
||||||
activeIndex: 0,
|
activeIndex: 0,
|
||||||
scrollOffset: 0,
|
scrollOffset: 0,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user