Files
kevisual-center/src/pages/apps/app/AIEditorLink.tsx
abearxiong 66ee0d7f60 feat: implement logout on 401 response and update query handling
refactor: replace Button with div for consistent styling in AIEditorLink

refactor: update navigation handling in AppVersionList and remove LayoutMain wrapper

refactor: remove unused LayoutMain imports and components across various pages

fix: ensure user app list is set correctly in useUserAppStore

fix: update login URL format in AuthProvider

fix: adjust layout styles in EnvPage and other pages for better responsiveness

chore: update route definitions and create new routes for apps, config, domain, flowme, org, remote, token, user, and users

style: replace Button with div for delete confirmation in various components

fix: ensure correct handling of user profile image source
2026-02-22 03:24:14 +08:00

47 lines
1.5 KiB
TypeScript

'use client';
import { useLayoutStore } from '@/modules/layout/store';
import { useShallow } from 'zustand/shallow';
import { toast } from 'sonner';
import { Folder } from 'lucide-react';
import { Button } from '@/components/ui/button';
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
import { openLink } from '@/modules/basename';
type Props = {
pathname?: string;
};
export const AIEditorLink = (props: Props) => {
const layoutUser = useLayoutStore(
useShallow((state) => ({
user: state.me?.username || '',
})),
);
return (
<Tooltip>
<TooltipTrigger>
<div
className='inline-flex items-center justify-center rounded-md p-2 transition-colors hover:bg-slate-100 disabled:opacity-50 disabled:pointer-events-none'
onClick={() => {
if (!layoutUser.user) {
toast.error('请先登录');
}
if (!window) {
return;
}
let folder = `${layoutUser.user}/resources/${props.pathname}`;
if (folder.endsWith('/')) {
folder = folder.slice(0, -1);
}
let baseUri = location.origin;
const openUrl = `${baseUri}/root/codepod/?folder=${folder}/`;
openLink(openUrl, '_blank');
}}>
<Folder className='h-4 w-4' />
</div>
</TooltipTrigger>
<TooltipContent></TooltipContent>
</Tooltip>
);
};