import { FC, useEffect } from 'react'; import { Dropdown, Button, Image, Table, TableColumnsType, Tag, Typography, Space } from 'antd'; import { ItemType } from 'antd/es/menu/hooks/useItems'; import { useDefaultRichMenu, useDeleteRichMenu, useRichMenuList, useUpdateDefaultRichMenu, useRouterStore, useBreadcrumbStore, useCheckMessagingChannel, useTableParams, Schemas, } from '@l-clutch/core'; export const RichMenuList = () => { useCheckMessagingChannel({ content: 'リッチメニューの設定には、LINE Messaging APIチャネルの設定が必要です。設定を行ってから再度お試しください。', key: 'rich-menu-list', }); const { setPath } = useRouterStore(); const { set: setBreadcrumbs } = useBreadcrumbStore(); const { tableParams, setTableParams, setTotal, request } = useTableParams(); const { data: list, isLoading } = useRichMenuList(request); const { data: defaultRM } = useDefaultRichMenu(); // const savingIds = useSelect((select) => select(store).getSavingRichMenuIds(), []); const { trigger: updateDefaultId } = useUpdateDefaultRichMenu(); const defaultId = defaultRM?.id; useEffect(() => { setBreadcrumbs([{ title: 'リッチメニュー' }]); }, []); useEffect(() => { if (list?.total) { setTotal(list.total); } }, [list]); const columns: TableColumnsType = [ { title: '画像', dataIndex: 'background', key: 'background', render: (background) => background && ( ), }, { title: 'タイトル', dataIndex: 'name', key: 'name', render: (name, record) => ( { e.preventDefault(); setPath(`/rich-menu/${record.id}`); }} > {name} ), }, { title: 'ステータス', dataIndex: 'status', key: 'status', render: (status) => { if (status === 'publish') return 公開; if (status === 'draft') return 下書き; }, }, { title: 'デフォルト', key: 'default', render: (record) => { if (defaultId === record.id) return デフォルト; }, }, { title: 'アクション', key: 'operate', render: (record) => ( ), }, ]; return ( <> リッチメニュー record.id} dataSource={list?.items} pagination={tableParams.pagination} onChange={setTableParams} loading={isLoading} /> ); }; type Props = { record: Schemas['RichMenuResponse']; updateDefaultId: (params: { id: number }) => void; defaultId: number | undefined; setPath: (path: string) => void; }; const ActionDropdown: FC = ({ record, updateDefaultId, defaultId, setPath }) => { const { trigger: deleteRichMenu } = useDeleteRichMenu({ id: record.id }); const items: ItemType[] = [ { key: 'default', label: 'デフォルトに設定する', onClick: () => updateDefaultId({ id: record.id }), disabled: record.status !== 'publish' || defaultId === record.id, }, { key: 'delete', label: '削除', danger: true, onClick: () => deleteRichMenu(), }, ]; return ( setPath(`/rich-menu/${record.id}`)}> 編集 ); };