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
This commit is contained in:
icarus 2025-11-25 17:36:29 +08:00
parent 0045bf6c9c
commit 913238c991
2 changed files with 11 additions and 3 deletions

View File

@ -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',

View File

@ -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,