1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-26 15:26:19 +00:00

fix dirent state in grid view

This commit is contained in:
zhouwenxuan
2025-04-18 17:06:15 +08:00
committed by Michael An
parent e11dd9e34c
commit 920b7fe430
3 changed files with 48 additions and 19 deletions

View File

@@ -1543,36 +1543,48 @@ class LibContentView extends React.Component {
newSelectedDirentList = [clickedDirent];
}
this.setState({
direntList: direntList.map(dirent => {
dirent.isSelected = newSelectedDirentList.some(selectedDirent => selectedDirent.name === dirent.name);
return dirent;
}),
isDirentSelected: newSelectedDirentList.length > 0,
isAllDirentSelected: newSelectedDirentList.length === direntList.length,
selectedDirentList: newSelectedDirentList,
lastSelectedIndex: clickedIndex,
this.setState(prevState => {
const newDirentList = prevState.direntList.map(dirent => {
const isSelected = newSelectedDirentList.some(selected => selected.name === dirent.name);
return new Dirent({
...dirent,
isSelected: isSelected,
});
});
const updatedSelectedDirents = newSelectedDirentList.map(selected =>
newDirentList.find(dirent => dirent.name === selected.name)
);
return {
direntList: newDirentList,
isDirentSelected: updatedSelectedDirents.length > 0,
isAllDirentSelected: updatedSelectedDirents.length === newDirentList.length,
selectedDirentList: updatedSelectedDirents,
lastSelectedIndex: clickedIndex,
};
});
} else {
this.setState({
direntList: direntList.map(dirent => {
dirent.isSelected = false;
return dirent;
}),
this.setState(prevState => ({
direntList: prevState.direntList.map(dirent => new Dirent({...dirent, isSelected: false})),
isDirentSelected: false,
isAllDirentSelected: false,
selectedDirentList: [],
lastSelectedIndex: null,
});
}));
}
};
onSelectedDirentListUpdate = (newSelectedDirentList, lastSelectedIndex = null) => {
this.setState({
direntList: this.state.direntList.map(dirent => {
dirent.isSelected = newSelectedDirentList.some(selectedDirent => selectedDirent.name === dirent.name);
return dirent;
}),
return new Dirent({
...dirent,
isSelected: newSelectedDirentList.some(
selected => selected.name === dirent.name
)
});
}),
isDirentSelected: newSelectedDirentList.length > 0,
selectedDirentList: newSelectedDirentList,
lastSelectedIndex: lastSelectedIndex,