Skip to content

Commit cd17897

Browse files
committed
fix(pending): Pending list sync
1 parent d004562 commit cd17897

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

src/components/PendingStatsView.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ import useStore, { LogType } from './pendingStore';
88
import styles from './PendingStatsView.module.css';
99
import { AlertTriangle, CheckCircle, ArrowDownUp, Activity, LineChart, Cog, Siren, FileType, ScrollText, Info, AlertCircle, XCircle, ChevronRight, Terminal, RedoDot, UploadCloud, DownloadCloud } from 'lucide-react';
1010
import { log } from '../moreOnLog'
11-
import { Utils } from '../utils/utils';
12-
import { Notice } from "obsidian";
1311
import Logo from './InvioLogo';
1412
import InvioPlugin from "src/main";
1513
import { CheckSettingsModal } from './CheckSettingsModal';
1614

1715
export const PendingStatsViewComponent = (props: { plugin: InvioPlugin }) => {
18-
const { record, toLocalSelected, toRemoteSelected, getToLocalFileList, getToRemoteFileList, existToLocalFile, existToRemoteFile, updateSelectedToLocalFileList, updateSelectedToRemoteFileList } = useStore();
16+
const { record, toLocalSelected, toRemoteSelected, getToLocalFileList, getToRemoteFileList, getAllCheckedFileList, existToLocalFile, existToRemoteFile, updateSelectedToLocalFileList, updateSelectedToRemoteFileList } = useStore();
1917
const toLocalTouched = getToLocalFileList();
2018

2119
const toRemoteTouched = getToRemoteFileList();
@@ -51,15 +49,15 @@ export const PendingStatsViewComponent = (props: { plugin: InvioPlugin }) => {
5149
}
5250

5351
const onToLocalCheck: TreeProps['onCheck'] = (checkedKeys: string[], info: any) => {
54-
updateSelectedToLocalFileList(checkedKeys.filter(key => toLocalTouched.find(t => t.key === key)))
52+
updateSelectedToLocalFileList(checkedKeys)
5553
};
5654

5755
const onToRemoteCheck: TreeProps['onCheck'] = (checkedKeys: string[], info: any) => {
58-
updateSelectedToRemoteFileList(checkedKeys.filter(key => toRemoteTouched.find(t => t.key === key)))
56+
updateSelectedToRemoteFileList(checkedKeys)
5957
};
6058

6159
const startSync = async () => {
62-
await props.plugin.syncRun('manual', [...toLocalSelected, ...toRemoteSelected])
60+
await props.plugin.syncRun('manual', getAllCheckedFileList())
6361
}
6462

6563
const openSettings = () => {

src/components/pendingStore.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ interface State {
2626
init: (data: Record<string, FileOrFolderMixedState>, logs?: LogItem[]) => void;
2727
getToLocalFileList: () => FileOrFolderMixedState[];
2828
getToRemoteFileList: () => FileOrFolderMixedState[];
29+
getAllCheckedFileList: () => string[];
30+
getToLocalFileListFlat: () => FileOrFolderMixedState[];
31+
getToRemoteFileListFlat: () => FileOrFolderMixedState[];
2932
existToLocalFile: (path: string) => boolean;
3033
existToRemoteFile: (path: string) => boolean;
3134
updateSelectedToLocalFileList: (list: string[]) => string[];
@@ -86,13 +89,28 @@ const useStore = create<State>()((set, get) => ({
8689
toRemoteSelected: [],
8790
})
8891
},
92+
getToLocalFileListFlat: () => {
93+
const obj = get().record;
94+
const list = Object.keys(obj)
95+
.filter(key => obj[key].syncType === 'TOLOCAL')
96+
.map(key => obj[key])
97+
return list
98+
},
8999
getToLocalFileList: () => {
90100
const obj = get().record;
91101
const list = Object.keys(obj)
92102
.filter(key => obj[key].syncType === 'TOLOCAL')
93103
.map(key => obj[key])
94104
return convertList(list) as FileOrFolderMixedState[]
95105
},
106+
getToRemoteFileListFlat: () => {
107+
const obj = get().record;
108+
const list = Object.keys(obj)
109+
.filter(key => obj[key].syncType === 'TOREMOTE')
110+
.map(key => obj[key])
111+
112+
return list
113+
},
96114
getToRemoteFileList: () => {
97115
const obj = get().record;
98116
const list = Object.keys(obj)
@@ -102,6 +120,10 @@ const useStore = create<State>()((set, get) => ({
102120
return convertList(list) as FileOrFolderMixedState[]
103121
},
104122

123+
getAllCheckedFileList: () => {
124+
return [ ...get().toLocalSelected, ...get().toRemoteSelected ]
125+
},
126+
105127
existToLocalFile: (filePath: string) => {
106128
const obj = get().record;
107129
return !!Object.keys(obj).filter(key => obj[key].syncType === 'TOLOCAL').find(key => key === filePath)
@@ -114,14 +136,16 @@ const useStore = create<State>()((set, get) => ({
114136
},
115137

116138
updateSelectedToLocalFileList: (list: string[]) => {
139+
const toRemoteList = get().getToLocalFileListFlat();
117140
set({
118-
toLocalSelected: list || []
141+
toLocalSelected: (list || []).filter((p: string) => toRemoteList.find(item => item.key === p))
119142
})
120143
return get().toLocalSelected
121144
},
122145
updateSelectedToRemoteFileList: (list: string[]) => {
146+
const toRemoteList = get().getToRemoteFileListFlat();
123147
set({
124-
toRemoteSelected: list || []
148+
toRemoteSelected: (list || []).filter((p: string) => toRemoteList.find(item => item.key === p))
125149
})
126150
return get().toRemoteSelected
127151
},

0 commit comments

Comments
 (0)