making new delete scheme work

This commit is contained in:
or-else
2017-11-24 20:23:49 -08:00
parent de655a105a
commit afd1bbb58a
+38 -31
View File
@@ -329,42 +329,38 @@
});
}
function deleteMessages(all, hard, params, errorHandler) {
var topic = Tinode.getTopic(params.topicName);
if (!topic) {
console.log("Topic not found: " + params.topicName);
return;
}
var promise = all ? topic.delMessagesAll(false) : topic.delMessagesList([params.seq], hard);
promise.catch(function(err) {
if (errorHandler) {
errorHandler(err.message, "err");
} else {
console.log(err);
}
});
}
// Context menu items.
var ContextMenuItems = {
"topic_info": {title: "Info", handler: null},
"messages_clear": {title: "Clear messages", handler: function(params, errorHandler) {
var topic = Tinode.getTopic(params.topicName);
if (!topic) {
console.log("Topic not found: " + params.topicName);
return;
}
topic.delMessagesAll(false).then(function(){
console.log("refresh message list");
}).catch(function(err) {
if (errorHandler) {
errorHandler(err.message, "err");
} else {
console.log(err);
}
});
deleteMessages(true, false, params, errorHandler);
}},
"messages_clear_hard": {title: "Clear for All", handler: function(params, errorHandler) {
deleteMessages(true, true, params, errorHandler);
}},
"message_delete": {title: "Delete", handler: function(params, errorHandler) {
var topic = Tinode.getTopic(params.topicName);
if (!topic) {
console.log("Topic not found: " + params.topicName);
return;
}
topic.delMessagesList([params.seq], false).catch(function(err) {
if (errorHandler) {
errorHandler(err.message, "err");
} else {
console.log(err);
}
});
deleteMessages(false, false, params, errorHandler);
}},
"message_delete_hard": {title: "Delete for All", handler: function(params, errorHandler) {
deleteMessages(false, true, params, errorHandler);
}},
"topic_unmute": {title: "Unmute", handler: topicPermissionSetter.bind(this, "+P")},
"topic_mute": {title: "Mute", handler: topicPermissionSetter.bind(this, "-P")},
"topic_unblock": {title: "Unblock", handler: topicPermissionSetter.bind(this, "+J")},
@@ -2699,6 +2695,7 @@
.withLaterDesc()
.withLaterSub()
.withLaterData(MESSAGES_PAGE)
.withLaterDel()
.build()).catch(function(err){
instance.props.onError(err.message, "err");
});
@@ -2790,7 +2787,7 @@
if (msg && !msg.deleted) {
// If the message is added to the end of the message list,
// scroll to the bottom.
if (topic.msgPosition(msg.seq) <= 1) {
if (topic.isNewMessage(msg.seq)) {
newState.scrollPosition = 0;
}
// Aknowledge all messages, including own messges.
@@ -2841,7 +2838,15 @@
handleShowContextMenuMessage: function(params) {
params.topicName = this.state.topic;
this.props.showContextMenu(params, [ContextMenuItems["message_delete"]]);
var menuItems = [ContextMenuItems["message_delete"]];
var topic = Tinode.getTopic(params.topicName);
if (topic) {
var acs = topic.getAccessMode();
if (acs && acs.isDeleter()) {
menuItems.push(ContextMenuItems["message_delete_hard"]);
}
}
this.props.showContextMenu(params, menuItems);
},
handleBackNavigation: function() {
@@ -3588,7 +3593,7 @@
},
defaultTopicContextMenu: function(topicName) {
var muted = false, blocked = false, subscribed = false;
var muted = false, blocked = false, subscribed = false, deleter = false;
var topic = Tinode.getTopic(topicName);
if (topic) {
if (topic.isSubscribed()) {
@@ -3596,12 +3601,14 @@
var acs = topic.getAccessMode();
muted = acs && acs.isMuted();
blocked = acs && !acs.isJoiner();
deleter = acs && acs.isDeleter();
}
}
return [
subscribed ? {title: "Info", handler: this.handleShowInfoView} : null,
subscribed ? ContextMenuItems["messages_clear"] : null,
subscribed && deleter ? ContextMenuItems["messages_clear_hard"] : null,
subscribed ? (muted ? ContextMenuItems["topic_unmute"] : ContextMenuItems["topic_mute"]) : null,
subscribed ? (blocked ? ContextMenuItems["topic_unblock"] : ContextMenuItems["topic_block"]) : null,
ContextMenuItems["topic_delete"]