mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-27 11:01:14 +00:00
fix dirent state in grid view
This commit is contained in:
parent
e11dd9e34c
commit
920b7fe430
@ -72,6 +72,23 @@ class DirentGridItem extends React.Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidUpdate(prevProps) {
|
||||||
|
if (prevProps.dirent !== this.props.dirent) {
|
||||||
|
this.setState({ dirent: this.props.dirent });
|
||||||
|
}
|
||||||
|
|
||||||
|
const { repoID, path } = this.props;
|
||||||
|
const { dirent } = this.state;
|
||||||
|
if (this.checkGenerateThumbnail(dirent) && !this.isGeneratingThumbnail) {
|
||||||
|
this.isGeneratingThumbnail = true;
|
||||||
|
this.thumbnailCenter.createThumbnail({
|
||||||
|
repoID,
|
||||||
|
path: [path, dirent.name].join('/'),
|
||||||
|
callback: this.updateDirentThumbnail,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
if (this.clickTimeout) {
|
if (this.clickTimeout) {
|
||||||
clearTimeout(this.clickTimeout);
|
clearTimeout(this.clickTimeout);
|
||||||
|
@ -17,7 +17,7 @@ class Dirent {
|
|||||||
this.mtime_relative = dayjs.unix(json.mtime).fromNow();
|
this.mtime_relative = dayjs.unix(json.mtime).fromNow();
|
||||||
}
|
}
|
||||||
this.permission = json.permission || 'rw';
|
this.permission = json.permission || 'rw';
|
||||||
this.isSelected = false; // is check or not
|
this.isSelected = json.isSelected || false; // is check or not
|
||||||
this.starred = json.starred || false;
|
this.starred = json.starred || false;
|
||||||
if (json.type === 'dir') {
|
if (json.type === 'dir') {
|
||||||
this.has_been_shared_out = false;
|
this.has_been_shared_out = false;
|
||||||
|
@ -1543,36 +1543,48 @@ class LibContentView extends React.Component {
|
|||||||
newSelectedDirentList = [clickedDirent];
|
newSelectedDirentList = [clickedDirent];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.setState(prevState => {
|
||||||
direntList: direntList.map(dirent => {
|
const newDirentList = prevState.direntList.map(dirent => {
|
||||||
dirent.isSelected = newSelectedDirentList.some(selectedDirent => selectedDirent.name === dirent.name);
|
const isSelected = newSelectedDirentList.some(selected => selected.name === dirent.name);
|
||||||
return dirent;
|
return new Dirent({
|
||||||
}),
|
...dirent,
|
||||||
isDirentSelected: newSelectedDirentList.length > 0,
|
isSelected: isSelected,
|
||||||
isAllDirentSelected: newSelectedDirentList.length === direntList.length,
|
});
|
||||||
selectedDirentList: newSelectedDirentList,
|
});
|
||||||
lastSelectedIndex: clickedIndex,
|
|
||||||
|
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 {
|
} else {
|
||||||
this.setState({
|
this.setState(prevState => ({
|
||||||
direntList: direntList.map(dirent => {
|
direntList: prevState.direntList.map(dirent => new Dirent({...dirent, isSelected: false})),
|
||||||
dirent.isSelected = false;
|
|
||||||
return dirent;
|
|
||||||
}),
|
|
||||||
isDirentSelected: false,
|
isDirentSelected: false,
|
||||||
isAllDirentSelected: false,
|
isAllDirentSelected: false,
|
||||||
selectedDirentList: [],
|
selectedDirentList: [],
|
||||||
lastSelectedIndex: null,
|
lastSelectedIndex: null,
|
||||||
});
|
}));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onSelectedDirentListUpdate = (newSelectedDirentList, lastSelectedIndex = null) => {
|
onSelectedDirentListUpdate = (newSelectedDirentList, lastSelectedIndex = null) => {
|
||||||
this.setState({
|
this.setState({
|
||||||
direntList: this.state.direntList.map(dirent => {
|
direntList: this.state.direntList.map(dirent => {
|
||||||
dirent.isSelected = newSelectedDirentList.some(selectedDirent => selectedDirent.name === dirent.name);
|
return new Dirent({
|
||||||
return dirent;
|
...dirent,
|
||||||
}),
|
isSelected: newSelectedDirentList.some(
|
||||||
|
selected => selected.name === dirent.name
|
||||||
|
)
|
||||||
|
});
|
||||||
|
}),
|
||||||
isDirentSelected: newSelectedDirentList.length > 0,
|
isDirentSelected: newSelectedDirentList.length > 0,
|
||||||
selectedDirentList: newSelectedDirentList,
|
selectedDirentList: newSelectedDirentList,
|
||||||
lastSelectedIndex: lastSelectedIndex,
|
lastSelectedIndex: lastSelectedIndex,
|
||||||
|
Loading…
Reference in New Issue
Block a user