mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-27 03:01:26 +00:00
fix delete image failed when previewing in tag files view
This commit is contained in:
parent
beef890a47
commit
a4835a9d7b
@ -14,7 +14,7 @@ import { getRowById } from '../../components/sf-table/utils/table';
|
|||||||
import { getTagFilesLinks } from '../utils/cell';
|
import { getTagFilesLinks } from '../utils/cell';
|
||||||
import { PRIVATE_COLUMN_KEY } from '../constants';
|
import { PRIVATE_COLUMN_KEY } from '../constants';
|
||||||
import URLDecorator from '../../utils/url-decorator';
|
import URLDecorator from '../../utils/url-decorator';
|
||||||
import { fileServerRoot, useGoFileserver } from '../../utils/constants';
|
import { fileServerRoot, gettext, useGoFileserver } from '../../utils/constants';
|
||||||
import { TAG_FILES_DEFAULT_SORT, TAG_FILES_SORT } from '../constants/sort';
|
import { TAG_FILES_DEFAULT_SORT, TAG_FILES_SORT } from '../constants/sort';
|
||||||
|
|
||||||
// This hook provides content related to seahub interaction, such as whether to enable extended attributes, views data, etc.
|
// This hook provides content related to seahub interaction, such as whether to enable extended attributes, views data, etc.
|
||||||
@ -64,8 +64,9 @@ export const TagViewProvider = ({
|
|||||||
});
|
});
|
||||||
}, [repoID, copyFileCallback, updateSelectedFileIds]);
|
}, [repoID, copyFileCallback, updateSelectedFileIds]);
|
||||||
|
|
||||||
const deleteTagFiles = useCallback(() => {
|
const deleteTagFiles = useCallback((ids) => {
|
||||||
const files = selectedFileIds.map(id => getFileById(tagFiles, id));
|
const tagIds = ids?.length ? ids : selectedFileIds;
|
||||||
|
const files = tagIds.map(id => getFileById(tagFiles, id));
|
||||||
const paths = files.map(f => Utils.joinPath(f[TAG_FILE_KEY.PARENT_DIR], f[TAG_FILE_KEY.NAME]));
|
const paths = files.map(f => Utils.joinPath(f[TAG_FILE_KEY.PARENT_DIR], f[TAG_FILE_KEY.NAME]));
|
||||||
const fileNames = files.map(f => f[TAG_FILE_KEY.NAME]);
|
const fileNames = files.map(f => f[TAG_FILE_KEY.NAME]);
|
||||||
metadataAPI.batchDeleteFiles(repoID, paths).then(() => {
|
metadataAPI.batchDeleteFiles(repoID, paths).then(() => {
|
||||||
@ -79,7 +80,7 @@ export const TagViewProvider = ({
|
|||||||
const row = getRowById(tagsData, tagID);
|
const row = getRowById(tagsData, tagID);
|
||||||
const oldTagFileLinks = getTagFilesLinks(row);
|
const oldTagFileLinks = getTagFilesLinks(row);
|
||||||
if (Array.isArray(oldTagFileLinks) && oldTagFileLinks.length > 0) {
|
if (Array.isArray(oldTagFileLinks) && oldTagFileLinks.length > 0) {
|
||||||
const newTagFileLinks = oldTagFileLinks.filter(link => !selectedFileIds.includes(link.row_id));
|
const newTagFileLinks = oldTagFileLinks.filter(link => !tagIds.includes(link.row_id));
|
||||||
const update = { [PRIVATE_COLUMN_KEY.TAG_FILE_LINKS]: newTagFileLinks };
|
const update = { [PRIVATE_COLUMN_KEY.TAG_FILE_LINKS]: newTagFileLinks };
|
||||||
idTagUpdates[tagID] = update;
|
idTagUpdates[tagID] = update;
|
||||||
}
|
}
|
||||||
@ -88,11 +89,17 @@ export const TagViewProvider = ({
|
|||||||
|
|
||||||
setTagFiles(prevTagFiles => ({
|
setTagFiles(prevTagFiles => ({
|
||||||
...prevTagFiles,
|
...prevTagFiles,
|
||||||
rows: prevTagFiles.rows.filter(row => !selectedFileIds.includes(row[TAG_FILE_KEY.ID])),
|
rows: prevTagFiles.rows.filter(row => !tagIds.includes(row[TAG_FILE_KEY.ID])),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
deleteFilesCallback && deleteFilesCallback(paths, fileNames);
|
deleteFilesCallback && deleteFilesCallback(paths, fileNames);
|
||||||
updateSelectedFileIds([]);
|
updateSelectedFileIds([]);
|
||||||
|
let msg = fileNames.length > 1
|
||||||
|
? gettext('Successfully deleted {name} and {n} other items')
|
||||||
|
: gettext('Successfully deleted {name}');
|
||||||
|
msg = msg.replace('{name}', fileNames[0])
|
||||||
|
.replace('{n}', fileNames.length - 1);
|
||||||
|
toaster.success(msg);
|
||||||
});
|
});
|
||||||
}, [repoID, tagsData, tagFiles, selectedFileIds, updateLocalTags, deleteFilesCallback, updateSelectedFileIds]);
|
}, [repoID, tagsData, tagFiles, selectedFileIds, updateLocalTags, deleteFilesCallback, updateSelectedFileIds]);
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ const TagFiles = () => {
|
|||||||
|
|
||||||
const currentImageRef = useRef(null);
|
const currentImageRef = useRef(null);
|
||||||
|
|
||||||
|
const canDelete = useMemo(() => window.sfTagsDataContext && window.sfTagsDataContext.canModifyTag(), []);
|
||||||
const isSelectedAll = useMemo(() => {
|
const isSelectedAll = useMemo(() => {
|
||||||
return selectedFileIds ? selectedFileIds.length === tagFiles.rows.length : false;
|
return selectedFileIds ? selectedFileIds.length === tagFiles.rows.length : false;
|
||||||
}, [selectedFileIds, tagFiles]);
|
}, [selectedFileIds, tagFiles]);
|
||||||
@ -133,8 +134,8 @@ const TagFiles = () => {
|
|||||||
setImagePreviewerVisible(false);
|
setImagePreviewerVisible(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleDeleteTagFiles = useCallback(() => {
|
const handleDeleteTagFiles = useCallback((ids) => {
|
||||||
deleteTagFiles();
|
deleteTagFiles(ids);
|
||||||
updateSelectedFileIds([]);
|
updateSelectedFileIds([]);
|
||||||
}, [deleteTagFiles, updateSelectedFileIds]);
|
}, [deleteTagFiles, updateSelectedFileIds]);
|
||||||
|
|
||||||
@ -376,7 +377,6 @@ const TagFiles = () => {
|
|||||||
enableDirPrivateShare = true;
|
enableDirPrivateShare = true;
|
||||||
}
|
}
|
||||||
const isGroupOwnedRepo = repoInfo.owner_email.includes('@seafile_group');
|
const isGroupOwnedRepo = repoInfo.owner_email.includes('@seafile_group');
|
||||||
const canDelete = window.sfTagsDataContext && window.sfTagsDataContext.canModifyTag();
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="table-container" onClick={onContainerClick}>
|
<div className="table-container" onClick={onContainerClick}>
|
||||||
@ -413,6 +413,7 @@ const TagFiles = () => {
|
|||||||
table={tagFiles}
|
table={tagFiles}
|
||||||
closeImagePopup={closeImagePreviewer}
|
closeImagePopup={closeImagePreviewer}
|
||||||
canDelete={canDelete}
|
canDelete={canDelete}
|
||||||
|
deleteRecords={handleDeleteTagFiles}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<ContextMenu
|
<ContextMenu
|
||||||
|
Loading…
Reference in New Issue
Block a user