mirror of
https://github.com/FranP-code/ChatGPT.git
synced 2025-10-13 00:13:25 +00:00
chore: sync
This commit is contained in:
19
src/hooks/useData.ts
vendored
19
src/hooks/useData.ts
vendored
@@ -1,7 +1,7 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
const safeKey = Symbol('chat-id');
|
||||
export const safeKey = Symbol('chat-id');
|
||||
|
||||
export default function useData(oData: any[]) {
|
||||
const [opData, setData] = useState<any[]>([]);
|
||||
@@ -35,5 +35,20 @@ export default function useData(oData: any[]) {
|
||||
return nData;
|
||||
};
|
||||
|
||||
return { opSafeKey: safeKey, opInit, opReplace, opAdd, opRemove, opData };
|
||||
const opReplaceItems = (ids: string[], data: any) => {
|
||||
const nData = [...opData];
|
||||
let count = 0;
|
||||
for (let i = 0; i < nData.length; i++) {
|
||||
const v = nData[i];
|
||||
if (ids.includes(v[safeKey])) {
|
||||
count++;
|
||||
nData[i] = { ...v, ...data };
|
||||
}
|
||||
if (count === ids.length) break;
|
||||
}
|
||||
setData(nData);
|
||||
return nData;
|
||||
};
|
||||
|
||||
return { opSafeKey: safeKey, opInit, opReplace, opAdd, opRemove, opData, opReplaceItems };
|
||||
}
|
||||
37
src/hooks/useTable.tsx
vendored
Normal file
37
src/hooks/useTable.tsx
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Table } from 'antd';
|
||||
import type { TableRowSelection } from 'antd/es/table/interface';
|
||||
|
||||
import { safeKey } from '@/hooks/useData';
|
||||
|
||||
export default function useTableRowSelection() {
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
|
||||
const [selectedRowIDs, setSelectedRowIDs] = useState<string[]>([]);
|
||||
|
||||
const onSelectChange = (newSelectedRowKeys: React.Key[], selectedRows: Record<string|symbol, any>) => {
|
||||
const keys = selectedRows.map((i: any) => i[safeKey]);
|
||||
setSelectedRowIDs(keys);
|
||||
setSelectedRowKeys(newSelectedRowKeys);
|
||||
};
|
||||
|
||||
const rowSelection: TableRowSelection<Record<string, any>> = {
|
||||
selectedRowKeys,
|
||||
onChange: onSelectChange,
|
||||
selections: [
|
||||
Table.SELECTION_ALL,
|
||||
Table.SELECTION_INVERT,
|
||||
Table.SELECTION_NONE,
|
||||
],
|
||||
};
|
||||
|
||||
return { rowSelection, selectedRowIDs };
|
||||
}
|
||||
|
||||
export const TABLE_PAGINATION = {
|
||||
hideOnSinglePage: true,
|
||||
showSizeChanger: true,
|
||||
showQuickJumper: true,
|
||||
defaultPageSize: 5,
|
||||
pageSizeOptions: [5, 10, 15, 20],
|
||||
showTotal: (total: number) => <span>Total {total} items</span>,
|
||||
};
|
||||
Reference in New Issue
Block a user