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 --> <!-- Styles for local elements -->
<link rel="stylesheet" href="css/base.css" /> <link rel="stylesheet" href="css/base.css" />
<!-- ReactJs scripts --> <!-- ReactJs scripts -->
<script src="https://unpkg.com/react@15.3.1/dist/react.js"></script> <script src="https://unpkg.com/react@15.4/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@15.3.1/dist/react-dom.js"></script> <script src="https://unpkg.com/react-dom@15.4/dist/react-dom.js"></script>
<script src="https://unpkg.com/babel-core@5.8.38/browser.min.js"></script> <script src="https://unpkg.com/babel-standalone@6.24.0/babel.min.js"></script>
<script src="tinode.js"></script> <script src="tinode.js"></script>
</head> </head>
<body> <body>
<div id="mountPoint"></div> <div id="mountPoint"></div>
<script type="text/babel"> <script type="text/babel">
// Name of this application, used in the User-Agent // 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 // Host name and port to connect to
// var HOST = "api.tinode.co"; // var HOST = "api.tinode.co";
@@ -145,28 +145,29 @@
}, },
handleMenuAction: function(action) { handleMenuAction: function(action) {
var topic = Tinode.getTopic(this.props.topic); 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) { switch (action) {
case "Edit...": case "Edit...":
console.log("Edit topic not implemented"); console.log("Topic editing not implemented");
break; break;
case "Clear messages": case "Clear messages":
topic.delMessages({before: 0, hard: false}); topic.delMessages({before: 0, hard: false});
break; break;
case "Mute": case "Mute":
var m = topic.getAccessMode().clearMode('P'); metaParam('-P');
topic.setMeta({sub: {mode: m.toString()}});
break; break;
case "Unmute": case "Unmute":
var m = topic.getAccessMode().addMode('P'); metaParam('+P');
topic.setMeta({sub: {mode: m.toString()}});
break; break;
case "Block": case "Block":
var m = topic.getAccessMode().addMode('X'); metaParam('+X');
topic.setMeta({sub: {mode: m.toString()}});
break; break;
case "Unblock": case "Unblock":
var m = topic.getAccessMode().clearMode('X').addMode('RWP'); metaParam('-X');
topic.setMeta({sub: {mode: m.toString()}});
break; break;
case "Delete": case "Delete":
topic.delTopic(); topic.delTopic();
@@ -175,13 +176,14 @@
} }
}, },
getMenuItems: function() { 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") { if (Tinode.getTopicType(this.props.topic) === "grp") {
return ["Edit...", "Clear messages", mode.canPresence() ? "Mute" : "Unmute", return ["Edit...", "Clear messages", acs.isMuted() ? "Unmute" : "Mute",
mode.isBanned() ? "Unblock" : "Block", "Delete"]; acs.isBanned() ? "Unblock" : "Block", "Delete"];
} else { } else {
return ["Clear messages", mode.canPresence() ? "Mute" : "Unmute", return ["Clear messages", acs.isMuted() ? "Unmute" : "Mute",
mode.isBanned() ? "Unblock" : "Block", "Delete"]; acs.isBanned() ? "Unblock" : "Block", "Delete"];
} }
} }
}; };