Skip to content

Commit b0df2cd

Browse files
Revert "feat(ui): add hidden multi-select mode for batch operations"
This reverts commit ec6cf24.
1 parent ec6cf24 commit b0df2cd

8 files changed

Lines changed: 30 additions & 294 deletions

File tree

src/components/RemoveProjectDialog/RemoveProjectDialog.vue

Lines changed: 18 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -4,75 +4,35 @@ import { useI18n } from 'vue-i18n'
44
import UiDialog from '~/components/ui/UiDialog.vue'
55
import { useProjectsStore } from '~/stores/projectsStore'
66
7-
import { hideRemoveDialog, isDialogVisible, playRemoveAnimation, projectsToRemove, projectToRemove } from './RemoveProjectDialogProvider'
7+
import { hideRemoveDialog, isDialogVisible, playRemoveAnimation, projectToRemove } from './RemoveProjectDialogProvider'
88
99
const { t } = useI18n()
1010
const projectsStore = useProjectsStore()
1111
12-
const isBatchMode = computed(() => projectsToRemove.value.length > 0)
13-
const targetProjects = computed(() => isBatchMode.value ? projectsToRemove.value : (projectToRemove.value ? [projectToRemove.value] : []))
14-
1512
const isRemove = computed(() => {
16-
if (isBatchMode.value) {
17-
// 批量模式:只要有一个是临时项目且存在,就显示删除选项
18-
return !targetProjects.value.some(p => p.isTemporary && p.isExists !== false)
19-
}
2013
if (projectToRemove.value?.isExists === false) {
2114
return true
2215
}
2316
return projectToRemove.value?.isTemporary !== true
2417
})
2518
26-
const dialogTitle = computed(() => {
27-
if (isBatchMode.value) {
28-
return isRemove.value
29-
? t('remove_project_dialog.dialog_title.batch_remove', { count: targetProjects.value.length })
30-
: t('remove_project_dialog.dialog_title.batch_delete', { count: targetProjects.value.length })
31-
}
32-
return isRemove.value
33-
? t('remove_project_dialog.dialog_title.remove')
34-
: t('remove_project_dialog.dialog_title.delete')
35-
})
36-
37-
const dialogDesc = computed(() => {
38-
if (isBatchMode.value) {
39-
return isRemove.value
40-
? t('remove_project_dialog.dialog_desc.batch_remove', { count: targetProjects.value.length })
41-
: t('remove_project_dialog.dialog_desc.batch_delete', { count: targetProjects.value.length })
42-
}
43-
return isRemove.value
44-
? t('remove_project_dialog.dialog_desc.remove', { name: projectToRemove.value?.name })
45-
: t('remove_project_dialog.dialog_desc.delete', { name: projectToRemove.value?.name })
46-
})
47-
48-
async function confirmRemove(deleteFiles = false) {
49-
const projects = targetProjects.value
50-
if (projects.length === 0) {
51-
hideRemoveDialog()
52-
return
53-
}
19+
function confirmRemove(deleteFiles = false) {
20+
if (projectToRemove.value) {
21+
const projectId = projectToRemove.value.appendTime
5422
55-
if (deleteFiles) {
56-
for (const project of projects) {
57-
if (project.isTemporary && project.isExists !== false) {
58-
window.api.deleteProject(project.path)
59-
}
23+
if (deleteFiles) {
24+
window.api.deleteProject(projectToRemove.value.path)
6025
}
61-
}
6226
63-
hideRemoveDialog()
27+
hideRemoveDialog()
6428
65-
// 批量删除不播放动画,直接删除
66-
if (isBatchMode.value) {
67-
for (const project of projects) {
68-
projectsStore.removeProject(project.appendTime)
69-
}
29+
// 播放动画后再删除数据
30+
playRemoveAnimation(projectId).then(() => {
31+
projectsStore.removeProject(projectId)
32+
})
7033
}
7134
else {
72-
// 单个删除播放动画
73-
const projectId = projects[0].appendTime
74-
await playRemoveAnimation(projectId)
75-
projectsStore.removeProject(projectId)
35+
hideRemoveDialog()
7636
}
7737
}
7838
</script>
@@ -83,11 +43,15 @@ async function confirmRemove(deleteFiles = false) {
8343
@update:open="open => !open && hideRemoveDialog()"
8444
>
8545
<template #title>
86-
{{ dialogTitle }}
46+
{{ isRemove ? t('remove_project_dialog.dialog_title.remove') : t('remove_project_dialog.dialog_title.delete') }}
8747
</template>
8848

8949
<template #description>
90-
{{ dialogDesc }}
50+
{{
51+
isRemove
52+
? t('remove_project_dialog.dialog_desc.remove', { name: projectToRemove?.name })
53+
: t('remove_project_dialog.dialog_desc.delete', { name: projectToRemove?.name })
54+
}}
9155
</template>
9256

9357
<p v-if="!isRemove" class="warning-text">

src/components/RemoveProjectDialog/RemoveProjectDialogProvider.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type { LocalProject } from '~/constants/localProject'
22

33
export const isDialogVisible = ref(false)
44
export const projectToRemove = ref<LocalProject | null>(null)
5-
export const projectsToRemove = ref<LocalProject[]>([])
65

76
type RemoveAnimationCallback = (projectId: number) => Promise<void>
87
let removeAnimationCallback: RemoveAnimationCallback | null = null
@@ -17,20 +16,12 @@ export async function playRemoveAnimation(projectId: number) {
1716
}
1817
}
1918

20-
export function showRemoveDialog(project: LocalProject) {
21-
projectToRemove.value = project
22-
projectsToRemove.value = []
23-
isDialogVisible.value = true
24-
}
25-
26-
export function showBatchRemoveDialog(projects: LocalProject[]) {
27-
projectToRemove.value = null
28-
projectsToRemove.value = projects
19+
export function showRemoveDialog(projectName: LocalProject) {
20+
projectToRemove.value = projectName
2921
isDialogVisible.value = true
3022
}
3123

3224
export function hideRemoveDialog() {
3325
isDialogVisible.value = false
3426
projectToRemove.value = null
35-
projectsToRemove.value = []
3627
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export { setRemoveAnimationCallback, showBatchRemoveDialog, showRemoveDialog } from './RemoveProjectDialogProvider'
1+
export { setRemoveAnimationCallback, showRemoveDialog } from './RemoveProjectDialogProvider'

src/locales/en.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,10 @@ remove_project_dialog:
99
dialog_title:
1010
remove: Remove Project?
1111
delete: Delete Project?
12-
batch_remove: Remove {count} Projects?
13-
batch_delete: Delete {count} Projects?
1412
dialog_desc:
1513
remove: 'Remove "{name}" from the project list?'
1614
delete: 'Delete "{name}" and its files?'
1715
delete_note: This can't be undone.
18-
batch_remove: Remove these {count} projects from the list?
19-
batch_delete: Delete these {count} projects and their files?
2016
cancel: Cancel
2117
remove: Remove
2218
remove_from_list: Keep files
@@ -67,8 +63,6 @@ app:
6763
search_placeholder: Search projects
6864
clear_count: Clear filters ({count})
6965
project_list: Project list
70-
selection:
71-
selected: '{count} selected'
7266
filters:
7367
kind: Kind
7468
status: Status

src/locales/zh-CN.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,10 @@ remove_project_dialog:
99
dialog_title:
1010
remove: 移除项目?
1111
delete: 删除项目?
12-
batch_remove: 移除 {count} 个项目?
13-
batch_delete: 删除 {count} 个项目?
1412
dialog_desc:
15-
remove: '从项目列表中移除{name}”?'
16-
delete: '删除{name}”及其文件?'
13+
remove: '从项目列表中移除{name}”?'
14+
delete: '删除{name}”及其文件?'
1715
delete_note: 此操作无法撤销。
18-
batch_remove: 从项目列表中移除这 {count} 个项目?
19-
batch_delete: 删除这 {count} 个项目及其文件?
2016
cancel: 取消
2117
remove: 移除
2218
remove_from_list: 保留文件
@@ -67,8 +63,6 @@ app:
6763
search_placeholder: 搜索项目
6864
clear_count: 清除筛选 ({count})
6965
project_list: 项目列表
70-
selection:
71-
selected: 已选 {count} 项
7266
filters:
7367
kind: 类型
7468
status: 状态

src/locales/zh-TW.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,10 @@ remove_project_dialog:
99
dialog_title:
1010
remove: 移除專案?
1111
delete: 刪除專案?
12-
batch_remove: 移除 {count} 個專案?
13-
batch_delete: 刪除 {count} 個專案?
1412
dialog_desc:
15-
remove: '從專案清單中移除{name}”?'
16-
delete: '刪除{name}”及其檔案?'
13+
remove: '從專案清單中移除{name}”?'
14+
delete: '刪除{name}”及其檔案?'
1715
delete_note: 此操作無法復原。
18-
batch_remove: 從專案清單中移除這 {count} 個專案?
19-
batch_delete: 刪除這 {count} 個專案及其檔案?
2016
cancel: 取消
2117
remove: 移除
2218
remove_from_list: 保留檔案
@@ -67,8 +63,6 @@ app:
6763
search_placeholder: 搜尋專案
6864
clear_count: 清除篩選 ({count})
6965
project_list: 專案清單
70-
selection:
71-
selected: 已選 {count} 項
7266
filters:
7367
kind: 類型
7468
status: 狀態

0 commit comments

Comments
 (0)