From 913238c991103383371bf7e2f9a6ce4ecc212331 Mon Sep 17 00:00:00 2001 From: icarus Date: Tue, 25 Nov 2025 17:36:29 +0800 Subject: [PATCH] feat(selection): add builtin action item type and update default items Add new SelectionBuiltinActionItem type to better type builtin actions Update defaultActionItems to use new type with const assertion --- packages/shared/data/preference/preferenceTypes.ts | 8 ++++++++ src/renderer/src/store/selectionStore.ts | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/shared/data/preference/preferenceTypes.ts b/packages/shared/data/preference/preferenceTypes.ts index 182504e4dd..397e4d19b6 100644 --- a/packages/shared/data/preference/preferenceTypes.ts +++ b/packages/shared/data/preference/preferenceTypes.ts @@ -38,6 +38,14 @@ export type SelectionActionItem = { searchEngine?: string } +export type BuiltinActionItemId = 'translate' | 'explain' | 'summary' | 'search' | 'copy' | 'refine' | 'quote' + +export interface SelectionBuiltinActionItem extends SelectionActionItem { + id: BuiltinActionItemId + isBuiltIn: true + assistantId?: never +} + export enum ThemeMode { light = 'light', dark = 'dark', diff --git a/src/renderer/src/store/selectionStore.ts b/src/renderer/src/store/selectionStore.ts index 5acdbca28d..2223e5fe54 100644 --- a/src/renderer/src/store/selectionStore.ts +++ b/src/renderer/src/store/selectionStore.ts @@ -3,7 +3,7 @@ */ import type { PayloadAction } from '@reduxjs/toolkit' import { createSlice } from '@reduxjs/toolkit' -import type { SelectionActionItem } from '@shared/data/preference/preferenceTypes' +import type { SelectionActionItem, SelectionBuiltinActionItem } from '@shared/data/preference/preferenceTypes' import { SelectionFilterMode, SelectionTriggerMode } from '@shared/data/preference/preferenceTypes' export interface SelectionState { @@ -20,7 +20,7 @@ export interface SelectionState { actionItems: SelectionActionItem[] } -export const defaultActionItems: SelectionActionItem[] = [ +export const defaultActionItems = [ { id: 'translate', name: 'selection.action.builtin.translate', enabled: true, isBuiltIn: true, icon: 'languages' }, { id: 'explain', name: 'selection.action.builtin.explain', enabled: true, isBuiltIn: true, icon: 'file-question' }, { id: 'summary', name: 'selection.action.builtin.summary', enabled: true, isBuiltIn: true, icon: 'scan-text' }, @@ -35,7 +35,7 @@ export const defaultActionItems: SelectionActionItem[] = [ { id: 'copy', name: 'selection.action.builtin.copy', enabled: true, isBuiltIn: true, icon: 'clipboard-copy' }, { id: 'refine', name: 'selection.action.builtin.refine', enabled: false, isBuiltIn: true, icon: 'wand-sparkles' }, { id: 'quote', name: 'selection.action.builtin.quote', enabled: false, isBuiltIn: true, icon: 'quote' } -] +] as const satisfies SelectionBuiltinActionItem[] export const initialState: SelectionState = { selectionEnabled: false,