feat: add group panel quick actions

pull/220/head
moonrailgun 1 year ago
parent 8ce3aee323
commit c451a091c3

@ -7,7 +7,7 @@ import {
getDMConverseName, getDMConverseName,
model, model,
} from 'tailchat-shared'; } from 'tailchat-shared';
import { useDebugValue } from 'react'; import { useDebugValue, useMemo } from 'react';
import type { QuickActionContext } from './useQuickSwitcherActionContext'; import type { QuickActionContext } from './useQuickSwitcherActionContext';
const ChatConverseType = model.converse.ChatConverseType; const ChatConverseType = model.converse.ChatConverseType;
@ -19,6 +19,9 @@ export interface QuickAction {
action: (context: QuickActionContext) => void; action: (context: QuickActionContext) => void;
} }
/**
*
*/
const builtinActions: QuickAction[] = [ const builtinActions: QuickAction[] = [
{ {
key: 'personal', key: 'personal',
@ -38,6 +41,9 @@ const builtinActions: QuickAction[] = [
}, },
]; ];
/**
*
*/
function useDMConverseActions(): QuickAction[] { function useDMConverseActions(): QuickAction[] {
const userId = useUserId(); const userId = useUserId();
const dmConverses = useAppSelector((state) => const dmConverses = useAppSelector((state) =>
@ -71,11 +77,45 @@ function useDMConverseActions(): QuickAction[] {
return personalConverseActions; return personalConverseActions;
} }
/**
*
*/
function useGroupPanelActions(): QuickAction[] {
const groups = useAppSelector((state) => state.group.groups);
const groupPanelActions = useMemo(() => {
const list: QuickAction[] = [];
Object.values(groups).forEach((group) => {
group.panels.forEach((panel) => {
list.push({
key: `qs#grouppanel#${panel.id}`,
label: `[${group.name}] ${panel.name}`,
source: 'core',
action: ({ navigate }) => {
navigate(`/main/group/${group._id}/${panel.id}`);
},
});
});
});
return list;
}, [groups]);
useDebugValue(groupPanelActions);
return groupPanelActions;
}
/** /**
* @returns * @returns
*/ */
export function useQuickSwitcherAllActions() { export function useQuickSwitcherAllActions() {
const allActions = [...builtinActions, ...useDMConverseActions()]; const allActions = [
...builtinActions,
...useDMConverseActions(),
...useGroupPanelActions(),
];
return allActions; return allActions;
} }

Loading…
Cancel
Save