1
0
Эх сурвалжийг харах

[bugfix] title crash
[bugfix] concurrent init
[refactor] removed useless param

isundil 8 жил өмнө
parent
commit
f8914410ca

+ 1 - 1
cli/ui.js

@@ -319,7 +319,7 @@ function updateTitle() {
             title = "(" +hasUnread +")";
         setFavicon(0, hasUnread);
     }
-    if (!title.length)
+    if (!title.length && SELECTED_ROOM)
         title = SELECTED_ROOM.name;
     document.title = title.length ? title : "Mimouchat";
 }

+ 3 - 3
srv/public/mimouchat.min.js

@@ -7,8 +7,8 @@ u.prototype.update=function(a,b,c,d){d=d||"";void 0!==a.name&&(this.name=a.name)
 Math.max(this.version,c)};function t(a,b){u.call(this,a);this.a=b;this.name=this.a.name;this.b=!0;b.oa=this}t.prototype=Object.create(u.prototype);t.prototype.constructor=t;"undefined"!==typeof module&&(module.I.lb=u,module.I.kb=t);function v(a,b){this.H=a.user;this.username=a.username;this.id=a.id||a.ts;this.l=parseFloat(a.ts);this.text="";this.o=[];this.i=this.D=this.F=!1;this.C={};this.version=b;this.update(a,b)}function z(a,b){v.call(this,a,b)}function A(a,b){v.call(this,a,b)}
 v.prototype.update=function(a,b){if(a){if(this.text=a.text||"",a.attachments&&(this.o=a.attachments),this.F=!!a.is_starred,this.D=void 0===a.edited?!1:a.edited,this.i=!!a.removed,a.reactions){var c={};a.reactions.forEach(function(a){c[a.name]=[];a.users.forEach(function(b){c[a.name].push(b)})});this.C=c}}else this.i=!0;this.version=b};function D(a,b,c,d,e){this.id="string"===typeof a?a:a.id;this.a=[];this.b=c;this.Pa=0;this.w=b;d&&ja(this,d,e)}
 function ja(a,b,c){var d=0;b.forEach(function(a){d=Math.max(this.push(a,c),d)}.bind(a));ka(a);return d}D.prototype.i=function(a,b){return!0===a.isMeMessage?new z(a,b):!0===a.isNotice?new A(a,b):new v(a,b)};
-D.prototype.push=function(a,b){for(var c,d=!1,e,f=0,g=this.a.length;f<g;f++)if(c=this.a[f],c.id===a.id){e=c.update(a,b);d=!0;break}d||(c=this.i(a,b),this.a.push(c),e=c.l);for(;this.a.length>this.w;)this.a.shift();if(this.b)for(a=0;a<this.a.length;a++)this.a[a].version<b-this.b&&this.a.splice(a--,1);console.log("Remaining after clean: "+this.a.length+" messages");return e||0};function la(a){return a.a[a.a.length-1]}
-function ma(a,b){for(var c=0,d=a.a.length;c<d;c++)if(a.a[c].id==b)return a.a[c];return null}function ka(a){a.a.sort(function(a,c){return a.l-c.l})}z.prototype=Object.create(v.prototype);z.prototype.constructor=z;A.prototype=Object.create(v.prototype);A.prototype.constructor=A;"undefined"!==typeof module&&(module.I={hb:v,gb:z,jb:A,mb:D});function ia(a){this.id=a;this.j={};this.oa=this.O=null;this.version=0}ia.prototype.update=function(a,b){void 0!==a.name&&(this.name=a.name);void 0!==a.deleted&&(this.Fa=a.deleted);void 0!==a.status&&(this.status=a.status);void 0!==a.presence&&(this.a="away"!==a.presence);void 0!==a.isPresent&&(this.a=a.isPresent);a.isBot&&(this.Va=a.isBot);this.version=Math.max(this.version,b)};"undefined"!==typeof module&&(module.I.eb=ia);function na(){this.a=[]}na.prototype.push=function(a){this.a.push(a)};function oa(a,b){for(var c=0,d=a.a.length;c<d;c++)if(b===pa(a.a[c]))return a.a[c];return null}function qa(a,b){for(var c=0,d=a.a.length;c<d;c++){var e=a.a[c],f;for(f in e.j)if(!0===b(e.j[f],f))return}}function ra(a){for(var b=E.context,c=0,d=b.a.length;c<d&&!0!==a(b.a[c]);c++);}function H(a,b){for(var c=0,d=a.a.length;c<d;c++)if(a.a[c].j[b])return a.a[c];return null}
+D.prototype.push=function(a,b){for(var c,d=!1,e,f=0,g=this.a.length;f<g;f++)if(c=this.a[f],c.id===a.id){e=c.update(a,b);d=!0;break}d||(c=this.i(a,b),this.a.push(c),e=c.l);for(;this.a.length>this.w;)this.a.shift();if(this.b)for(a=0;a<this.a.length;a++)this.a[a].version<b-this.b&&this.a.splice(a--,1);return e||0};function la(a){return a.a[a.a.length-1]}function ma(a,b){for(var c=0,d=a.a.length;c<d;c++)if(a.a[c].id==b)return a.a[c];return null}function ka(a){a.a.sort(function(a,c){return a.l-c.l})}
+z.prototype=Object.create(v.prototype);z.prototype.constructor=z;A.prototype=Object.create(v.prototype);A.prototype.constructor=A;"undefined"!==typeof module&&(module.I={hb:v,gb:z,jb:A,mb:D});function ia(a){this.id=a;this.j={};this.oa=this.O=null;this.version=0}ia.prototype.update=function(a,b){void 0!==a.name&&(this.name=a.name);void 0!==a.deleted&&(this.Fa=a.deleted);void 0!==a.status&&(this.status=a.status);void 0!==a.presence&&(this.a="away"!==a.presence);void 0!==a.isPresent&&(this.a=a.isPresent);a.isBot&&(this.Va=a.isBot);this.version=Math.max(this.version,b)};"undefined"!==typeof module&&(module.I.eb=ia);function na(){this.a=[]}na.prototype.push=function(a){this.a.push(a)};function oa(a,b){for(var c=0,d=a.a.length;c<d;c++)if(b===pa(a.a[c]))return a.a[c];return null}function qa(a,b){for(var c=0,d=a.a.length;c<d;c++){var e=a.a[c],f;for(f in e.j)if(!0===b(e.j[f],f))return}}function ra(a){for(var b=E.context,c=0,d=b.a.length;c<d&&!0!==a(b.a[c]);c++);}function H(a,b){for(var c=0,d=a.a.length;c<d;c++)if(a.a[c].j[b])return a.a[c];return null}
 function sa(a){for(var b=E.context,c=0,d=b.a.length;c<d;c++){var e=b.a[c].j[a];if(e)return e}return null}function ta(a){for(var b=E.context,c=[],d=0,e=b.a.length;d<e;d++){var f=b.a[d].j,g;for(g in f)a&&!a(f[g],b.a[d],g)||c.push(g)}return c}function I(a){for(var b=E.context,c=0,d=b.a.length;c<d;c++){var e=b.a[c].m[a];if(e)return e}return null}function ua(a){for(var b=E.context,c=0,d=b.a.length;c<d;c++)if(b.a[c].self.id===a)return!0;return!1}"undefined"!==typeof module&&(module.I.ib=na);var J={},K,va=[];function wa(){if(!c){for(var a=0,b=navigator.languages.length;a<b;a++)if(J.hasOwnProperty(navigator.languages[a])){var c=navigator.languages[a];break}c||(c="en")}K=J[c];console.log("Loading language pack: "+c);if(K.c)for(var d in K.c)if(c=document.getElementById(d))c.textContent=K.c[d];va.forEach(function(a){a()})};J.fr={ab:"Utilisateur inconnu",$a:"Channel inconnu",Ka:"Nouveau message",message:"Message",Ja:"Reseau",La:"(visible seulement par vous)",F:"Favoris",j:"Discutions",Na:"Discutions priv\u00e9es",Oa:"Partage sa position GPS",ok:"Ok",Ga:"Annuler",V:function(a){"string"!==typeof a&&(a=parseFloat(a));var b=new Date,c=new Date;a=new Date(a);b.setHours(0,0,0,0);c.setTime(b.getTime());c.setDate(c.getDate()-1);return a.getTime()>b.getTime()?a.toLocaleTimeString():a.getTime()>c.getTime()?"hier, "+a.toLocaleTimeString():
 a.toLocaleString()},ja:function(a,b){return a+"/"+b},c:{fileUploadCancel:"Annuler",neterror:"Impossible de se connecter au chat !","setting-menu-services":"services","settings-services-title":"services","setting-menu-display":"Affichage","settings-display-title":"Affichage","setting-menu-privacy":"Vie priv\u00e9e","settings-privacy-title":"Vie priv\u00e9e","settings-serviceAddButton":"Ajouter un service","settings-serviceListEmpty":"Vous n'avez pas encore ajout\u00e9 de service. Ajouter un service pour continuer.",
 "settings-serviceAddConfirm":"Suivant"}};J.fr.D=function(a){return"(edit&eacute; "+J.fr.V(a)+")"};J.en={ab:"Unknown member",$a:"Unknown channel",Ka:"New message",message:"Message",Ja:"Network",La:"(only visible to you)",F:"Starred",j:"Channels",Na:"Direct messages",Oa:"Share your GPS location",ok:"Ok",Ga:"Cancel",V:function(a){"string"!==typeof a&&(a=parseFloat(a));var b=new Date,c=new Date;a=new Date(a);b.setHours(0,0,0,0);c.setTime(b.getTime());c.setDate(c.getDate()-1);return a.getTime()>b.getTime()?a.toLocaleTimeString():a.getTime()>c.getTime()?"yesterday, "+a.toLocaleTimeString():a.toLocaleString()},
@@ -39,7 +39,7 @@ function U(){if(T){document.body.classList.add("replyingTo");var a=document.getE
 function W(){if(V){document.body.classList.add("replyingTo");var a=document.getElementById("replyToContainer"),b=document.createElement("a");b.addEventListener("click",function(){V=null;W()});b.className="replyto-close";b.textContent="x";a.textContent="";a.appendChild(b);a.appendChild(V.K());document.getElementById("msgInput").value=V.text}else document.body.classList.remove("replyingTo"),document.getElementById("replyToContainer").textContent="";R()}
 window.toggleReaction=function(a,b,c){var d=E.a[a],e,f;(d=E.a[a])&&(e=ma(d,b))&&(f=H(E.context,a))&&(e.C[c]&&-1!==e.C[c].indexOf(f.self.id)?(d=new XMLHttpRequest,d.open("DELETE","api/reaction?room="+a+"&msg="+b+"&reaction="+encodeURIComponent(c),!0),d.send(null)):Za(a,b,c))};
 function $a(a){a:{var b={};if(P){var c;for(c=P;!b[a];){if(c=c.b.data[a])if("alias:"==c.substr(0,6))b[a]=!0,a=c.substr(6);else{a=document.createElement("span");a.className="emoji-custom emoji";a.style.backgroundImage="url('"+c+"')";break a}break}}}"string"===typeof a&&"makeEmoji"in window&&(a=window.makeEmoji(a));return"string"===typeof a?null:a}function ab(a,b){document.getElementById("linkFavicon").href=a||b?"favicon.png?h="+a+"&m="+b:"favicon_ok.png"}
-function O(){var a=N.length,b="";if(X)b="!"+K.Ja+" - Mimouchat",document.getElementById("linkFavicon").href="favicon_err.png";else if(a)b="(!"+a+")",ab(a,a);else{var c=0;qa(E.context,function(a){a.N>a.B&&c++});c&&(b="("+c+")");ab(0,c)}b.length||(b=M.name);document.title=b.length?b:"Mimouchat"}
+function O(){var a=N.length,b="";if(X)b="!"+K.Ja+" - Mimouchat",document.getElementById("linkFavicon").href="favicon_err.png";else if(a)b="(!"+a+")",ab(a,a);else{var c=0;qa(E.context,function(a){a.N>a.B&&c++});c&&(b="("+c+")");ab(0,c)}!b.length&&M&&(b=M.name);document.title=b.length?b:"Mimouchat"}
 function bb(){if("Notification"in window)if("granted"===Notification.permission){var a=Date.now();if(Na+3E4<a){var b=new Notification(K.Ka);Na=a;setTimeout(function(){b.close()},5E3)}}else"denied"!==Notification.permission&&Notification.requestPermission()}
 function Q(){var a=document.createDocumentFragment(),b=M.id,c=null,d=0,e=null,f;M.F?document.getElementById("chatSystemContainer").classList.add("starred"):document.getElementById("chatSystemContainer").classList.remove("starred");Ma=[];E.a[b]&&E.a[b].a.forEach(function(b){if(b.i)b.S();else{var g=b.L(),h=!1;c&&c.H===b.H&&b.H?30>Math.abs(d-b.l)&&!(b instanceof z)?e.classList.add("chatmsg-same-ts"):d=b.l:(d=b.l,h=!0);(!c||c.l<=M.B)&&b.l>M.B?g.classList.add("chatmsg-first-unread"):g.classList.remove("chatmsg-first-unread");
 if(b instanceof z)e=c=null,d=0,a.appendChild(g),f=null;else{if(h||!f){var h=I(b.H),n=b.username,k=document.createElement("div"),l=document.createElement("div"),q=document.createElement("span"),r=document.createElement("img");k.Z=document.createElement("span");k.Z.className="chatmsg-author-img-wrapper";r.className="chatmsg-author-img";q.className="chatmsg-author-name";h?(q.textContent=h.name,r.src="api/avatar?user="+h.id):(q.textContent=n||"?",r.src="");k.Z.appendChild(r);l.appendChild(k.Z);l.appendChild(q);

+ 12 - 2
srv/src/slack.js

@@ -188,6 +188,15 @@ Slack.prototype.unstackPendingMessages = function() {
     }
 };
 
+Slack.prototype.resetVersions = function(v) {
+    this.data.team.version = v;
+    for (var i in this.data.channels)
+        this.data.channels[i].version = v;
+    for (var i in this.data.users)
+        this.data.users[i].version = v;
+    this.data.staticV = v;
+};
+
 Slack.prototype.onMessage = function(msg, t) {
     if (msg["reply_to"] && this.pendingRtm[msg["reply_to"]]) {
         var ts = msg["ts"]
@@ -201,12 +210,13 @@ Slack.prototype.onMessage = function(msg, t) {
         _this.getEmojis((emojis) => {
             _this.getSlashCommands((commands) => {
                 var msgContent = msg.start.rtm_start;
+                var now = Date.now();
                 msgContent.self = msg.self;
                 msgContent.emojis = emojis;
                 msgContent.commands = commands;
 
-                _this.data.updateStatic(msgContent, Date.now());
-                _this.unstackPendingMessages();
+                _this.resetVersions(now);
+                _this.data.updateStatic(msgContent, now);
                 _this.connected = true;
                 _this.unstackPendingMessages();
             });

+ 2 - 3
srv/src/slackData.js

@@ -353,12 +353,11 @@ SlackData.prototype.getChannelByRemoteId = function(remoteId) {
 
 /**
  * @param {number} knownVersion
- * @param {number} now time at update check
  * @return {Object|undefined}
 **/
-SlackData.prototype.getUpdates = function(knownVersion, now) {
+SlackData.prototype.getUpdates = function(knownVersion) {
     if (this.staticV > knownVersion)
-        return this.toStatic(knownVersion, now);
+        return this.toStatic(knownVersion);
     return undefined;
 };