Skip to content

Commit d004562

Browse files
committed
feat(pendingView): Select and check actions.
1 parent b4de4b5 commit d004562

File tree

2 files changed

+33
-21
lines changed

2 files changed

+33
-21
lines changed

src/components/PendingStatsView.tsx

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,39 @@ import InvioPlugin from "src/main";
1515
import { CheckSettingsModal } from './CheckSettingsModal';
1616

1717
export const PendingStatsViewComponent = (props: { plugin: InvioPlugin }) => {
18-
const { record, toLocalSelected, toRemoteSelected, getToLocalFileList, getToRemoteFileList, updateSelectedToLocalFileList, updateSelectedToRemoteFileList } = useStore();
18+
const { record, toLocalSelected, toRemoteSelected, getToLocalFileList, getToRemoteFileList, existToLocalFile, existToRemoteFile, updateSelectedToLocalFileList, updateSelectedToRemoteFileList } = useStore();
1919
const toLocalTouched = getToLocalFileList();
2020

2121
const toRemoteTouched = getToRemoteFileList();
2222

23-
const treeToLocalData: DataNode[] = toLocalTouched?.map((item: any) => {
24-
item.title = item.key
25-
item.key = item.key
26-
return item;
27-
})
28-
const treeToRemoteData: DataNode[] = toRemoteTouched?.map((item: any) => {
29-
item.title = item.key
30-
item.key = item.key
31-
return item;
32-
})
23+
const treeToLocalData: DataNode[] = toLocalTouched
24+
const treeToRemoteData: DataNode[] = toRemoteTouched
3325

3426
const onSelect = (selectedKeys: any, info: any, type: `ToLocal` | `ToRemote`) => {
27+
log.info('on select: ', selectedKeys)
3528
const key = selectedKeys[0]
29+
if (!key) return;
3630
props.plugin.viewFileDiff(key, type === 'ToLocal' ? 'RemoteToLocal' : 'LocalToRemote')
37-
.then(file => {
38-
log.info('diff file changed - ', file);
39-
if (file) {
40-
props.plugin.pendingView()
41-
}
42-
})
31+
.then(file => {
32+
log.info('diff file changed - ', file);
33+
if (file) {
34+
props.plugin.pendingView()
35+
}
36+
})
37+
4338
setTimeout(() => {
4439
selectedKeys = []
4540
}, 300)
4641
};
4742

4843
const onToLocalSelect: TreeProps['onSelect'] = (selectedKeys: any, info: any) => {
49-
onSelect(selectedKeys, info, 'ToLocal')
44+
const keys = selectedKeys.filter((key: string) => existToLocalFile(key))
45+
onSelect(keys, info, 'ToLocal')
5046
}
5147

5248
const onToRemoteSelect: TreeProps['onSelect'] = (selectedKeys: any, info: any) => {
53-
onSelect(selectedKeys, info, 'ToRemote')
49+
const keys = [ ...selectedKeys ].filter((key: string) => existToRemoteFile(key))
50+
onSelect(keys, info, 'ToRemote')
5451
}
5552

5653
const onToLocalCheck: TreeProps['onCheck'] = (checkedKeys: string[], info: any) => {

src/components/pendingStore.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ interface State {
2626
init: (data: Record<string, FileOrFolderMixedState>, logs?: LogItem[]) => void;
2727
getToLocalFileList: () => FileOrFolderMixedState[];
2828
getToRemoteFileList: () => FileOrFolderMixedState[];
29+
existToLocalFile: (path: string) => boolean;
30+
existToRemoteFile: (path: string) => boolean;
2931
updateSelectedToLocalFileList: (list: string[]) => string[];
3032
updateSelectedToRemoteFileList: (list: string[]) => string[];
3133
// updateRecord: (key: string, data: Partial<FileOrFolderMixedState>) => void;
@@ -86,8 +88,10 @@ const useStore = create<State>()((set, get) => ({
8688
},
8789
getToLocalFileList: () => {
8890
const obj = get().record;
89-
console.log('get to local data: ', obj)
90-
return Object.keys(obj).filter(key => obj[key].syncType === 'TOLOCAL').map(key => obj[key])
91+
const list = Object.keys(obj)
92+
.filter(key => obj[key].syncType === 'TOLOCAL')
93+
.map(key => obj[key])
94+
return convertList(list) as FileOrFolderMixedState[]
9195
},
9296
getToRemoteFileList: () => {
9397
const obj = get().record;
@@ -98,6 +102,17 @@ const useStore = create<State>()((set, get) => ({
98102
return convertList(list) as FileOrFolderMixedState[]
99103
},
100104

105+
existToLocalFile: (filePath: string) => {
106+
const obj = get().record;
107+
return !!Object.keys(obj).filter(key => obj[key].syncType === 'TOLOCAL').find(key => key === filePath)
108+
},
109+
existToRemoteFile: (filePath: string) => {
110+
const obj = get().record;
111+
return !!Object.keys(obj)
112+
.filter(key => obj[key].syncType === 'TOREMOTE')
113+
.find(key => key === filePath)
114+
},
115+
101116
updateSelectedToLocalFileList: (list: string[]) => {
102117
set({
103118
toLocalSelected: list || []

0 commit comments

Comments
 (0)