diff --git a/apps/dcellar-web-ui/src/modules/upload/UploadObjectsList.tsx b/apps/dcellar-web-ui/src/modules/upload/UploadObjectsList.tsx index 1c33c236..2b740afd 100644 --- a/apps/dcellar-web-ui/src/modules/upload/UploadObjectsList.tsx +++ b/apps/dcellar-web-ui/src/modules/upload/UploadObjectsList.tsx @@ -1,5 +1,5 @@ import { DCTable } from '@/components/common/DCTable'; -import { useAppDispatch } from '@/store'; +import { useAppDispatch, useAppSelector } from '@/store'; import { WaitObject, removeFromWaitQueue, toggleObjectReplaceState } from '@/store/slices/global'; import { ColumnProps } from 'antd/es/table'; import React, { useState } from 'react'; @@ -13,11 +13,13 @@ import { Text } from '@node-real/uikit'; import { E_OBJECT_NAME_EXISTS } from '@/facade/error'; import { getObjectErrorMsg } from '@/utils/object'; import { DELEGATE_UPLOAD } from '@/store/slices/object'; +import { DCTooltip } from '@/components/common/DCTooltip'; const uploadingPageSize = 10; export const UploadObjectsList = ({ path, data }: { path: string; data: WaitObject[] }) => { const dispatch = useAppDispatch(); + const objectRecords = useAppSelector((root) => root.object.objectRecords); const [pageSize] = useState(10); const [curPage, setCurPage] = useState(1); const chunks = useCreation(() => chunk(data, pageSize), [data, pageSize]); @@ -82,16 +84,33 @@ export const UploadObjectsList = ({ path, data }: { path: string; data: WaitObje record.msg === getObjectErrorMsg(E_OBJECT_NAME_EXISTS).title; if (!replaceable) return null; + + const prefix = `${path}/${record.relativePath ? record.relativePath + '/' : ''}`; + const createOnChainObject = objectRecords[`${prefix}${record.name}`]; + const objectChanged = + createOnChainObject && + createOnChainObject.ObjectInfo.ObjectStatus !== 1 && + createOnChainObject.ObjectInfo.PayloadSize !== record.size; + return ( - updateObjectReplaceState(record.id)} + - {record.isUpdate ? 'Undo' : 'Replace'} - + updateObjectReplaceState(record.id)} + > + {record.isUpdate ? 'Undo' : 'Replace'} + + ); }, },