mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-16 23:29:49 +00:00
display draft&review activities (#2851)
* dispaly draft&review activities * repalce obj_id with old_path * use [for loop] filter events * repair code * prohibit [publish draft]
This commit is contained in:
@@ -82,15 +82,42 @@ class TableBody extends Component {
|
||||
details = <td>{libLink}</td>;
|
||||
break;
|
||||
}
|
||||
} else if (item.obj_type == 'review') {
|
||||
let fileURL = `${siteRoot}drafts/review/${item.review_id}`;
|
||||
let fileLink = <a href={fileURL}>{item.name}</a>;
|
||||
switch(item.op_type) {
|
||||
case 'open':
|
||||
op = gettext('Open review');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
case 'closed':
|
||||
op = gettext('Close review');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
case 'finished':
|
||||
op = gettext('Publish draft');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
}
|
||||
} else if (item.obj_type == 'file') {
|
||||
let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;
|
||||
let fileLink = <a href={fileURL}>{item.name}</a>;
|
||||
switch(item.op_type) {
|
||||
case 'create':
|
||||
if (item.name.endsWith("(draft).md")) {
|
||||
op = gettext('Created draft');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
}
|
||||
op = gettext('Created file');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
case 'delete':
|
||||
if (item.name.endsWith("(draft).md")) {
|
||||
op = gettext('Deleted draft');
|
||||
details = <td>{item.name}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
}
|
||||
op = gettext('Deleted file');
|
||||
details = <td>{item.name}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
@@ -108,6 +135,11 @@ class TableBody extends Component {
|
||||
details = <td>{item.old_path} => {filePathLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
case 'edit': // update
|
||||
if (item.name.endsWith("(draft).md")) {
|
||||
op = gettext('Updated draft');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
}
|
||||
op = gettext('Updated file');
|
||||
details = <td>{fileLink}<br />{smallLibLink}</td>;
|
||||
break;
|
||||
@@ -177,6 +209,8 @@ class FilesActivities extends Component {
|
||||
items: [],
|
||||
};
|
||||
this.avatarSize = 72;
|
||||
this.curPathList = [];
|
||||
this.oldPathList = [];
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
@@ -184,7 +218,7 @@ class FilesActivities extends Component {
|
||||
seafileAPI.listActivities(currentPage, this.avatarSize).then(res => {
|
||||
// {"events":[...]}
|
||||
this.setState({
|
||||
items: res.data.events,
|
||||
items: this.filterSuperfluousEvents(res.data.events),
|
||||
currentPage: currentPage + 1,
|
||||
isFirstLoading: false,
|
||||
hasMore: true,
|
||||
@@ -199,13 +233,42 @@ class FilesActivities extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
filterSuperfluousEvents = (events) => {
|
||||
events.map((item) => {
|
||||
if (item.op_type === "finished") {
|
||||
this.curPathList.push(item.path);
|
||||
this.oldPathList.push(item.old_path);
|
||||
}
|
||||
});
|
||||
let actuallyEvents = [];
|
||||
for (var i = 0; i < events.length; i++) {
|
||||
if (events[i].obj_type === 'file') {
|
||||
if (events[i].op_type === 'delete' && this.oldPathList.includes(events[i].path)) {
|
||||
this.oldPathList.splice(this.oldPathList.indexOf(events[i].path), 1);
|
||||
continue;
|
||||
} else if (events[i].op_type === 'edit' && this.curPathList.includes(events[i].path)) {
|
||||
this.curPathList.splice(this.curPathList.indexOf(events[i].path), 1);
|
||||
continue;
|
||||
} else if (events[i].op_type === 'rename' && this.oldPathList.includes(events[i].old_path)) {
|
||||
this.oldPathList.splice(this.oldPathList.indexOf(events[i].old_path), 1);
|
||||
continue;
|
||||
} else {
|
||||
actuallyEvents.push(events[i]);
|
||||
}
|
||||
} else {
|
||||
actuallyEvents.push(events[i]);
|
||||
}
|
||||
}
|
||||
return actuallyEvents;
|
||||
}
|
||||
|
||||
getMore() {
|
||||
let currentPage = this.state.currentPage;
|
||||
seafileAPI.listActivities(currentPage, this.avatarSize).then(res => {
|
||||
// {"events":[...]}
|
||||
this.setState({
|
||||
isLoadingMore: false,
|
||||
items: [...this.state.items, ...res.data.events],
|
||||
items: [...this.state.items, ...this.filterSuperfluousEvents(res.data.events)],
|
||||
currentPage: currentPage + 1,
|
||||
hasMore: res.data.events.length === 0 ? false : true
|
||||
});
|
||||
|
Reference in New Issue
Block a user