refactoring access mode to support server changes

This commit is contained in:
Gene S
2017-04-18 17:41:39 -07:00
parent 8c4284a435
commit 43016e389a
+20 -18
View File
@@ -15,16 +15,16 @@
<!-- Styles for local elements -->
<link rel="stylesheet" href="css/base.css" />
<!-- ReactJs scripts -->
<script src="https://unpkg.com/react@15.3.1/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15.3.1/dist/react-dom.js"></script>
<script src="https://unpkg.com/babel-core@5.8.38/browser.min.js"></script>
<script src="https://unpkg.com/react@15.4/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15.4/dist/react-dom.js"></script>
<script src="https://unpkg.com/babel-standalone@6.24.0/babel.min.js"></script>
<script src="tinode.js"></script>
</head>
<body>
<div id="mountPoint"></div>
<script type="text/babel">
// Name of this application, used in the User-Agent
var APP_NAME = "TinodeReact/0.8";
var APP_NAME = "TinodeReact/0.10";
// Host name and port to connect to
// var HOST = "api.tinode.co";
@@ -145,28 +145,29 @@
},
handleMenuAction: function(action) {
var topic = Tinode.getTopic(this.props.topic);
var metaParam = function(p) {
var am = topic.getAccessMode();
am.updateWant(p);
topic.setMeta({sub: {mode: am.getWant()}});
}
switch (action) {
case "Edit...":
console.log("Edit topic not implemented");
console.log("Topic editing not implemented");
break;
case "Clear messages":
topic.delMessages({before: 0, hard: false});
break;
case "Mute":
var m = topic.getAccessMode().clearMode('P');
topic.setMeta({sub: {mode: m.toString()}});
metaParam('-P');
break;
case "Unmute":
var m = topic.getAccessMode().addMode('P');
topic.setMeta({sub: {mode: m.toString()}});
metaParam('+P');
break;
case "Block":
var m = topic.getAccessMode().addMode('X');
topic.setMeta({sub: {mode: m.toString()}});
metaParam('+X');
break;
case "Unblock":
var m = topic.getAccessMode().clearMode('X').addMode('RWP');
topic.setMeta({sub: {mode: m.toString()}});
metaParam('-X');
break;
case "Delete":
topic.delTopic();
@@ -175,13 +176,14 @@
}
},
getMenuItems: function() {
var mode = Tinode.getMeTopic().getAccessMode(this.props.topic);
var acs = Tinode.getMeTopic().getAccessMode(this.props.topic);
console.log(acs);
if (Tinode.getTopicType(this.props.topic) === "grp") {
return ["Edit...", "Clear messages", mode.canPresence() ? "Mute" : "Unmute",
mode.isBanned() ? "Unblock" : "Block", "Delete"];
return ["Edit...", "Clear messages", acs.isMuted() ? "Unmute" : "Mute",
acs.isBanned() ? "Unblock" : "Block", "Delete"];
} else {
return ["Clear messages", mode.canPresence() ? "Mute" : "Unmute",
mode.isBanned() ? "Unblock" : "Block", "Delete"];
return ["Clear messages", acs.isMuted() ? "Unmute" : "Mute",
acs.isBanned() ? "Unblock" : "Block", "Delete"];
}
}
};