From 17e22d87affcab6576c4fdd28d9cc05c77f5627b Mon Sep 17 00:00:00 2001 From: yflory Date: Tue, 23 Jun 2020 11:02:48 +0200 Subject: [PATCH] Don't leave the team automatically in case of GET_HISTORY error --- www/common/outer/team.js | 22 +++++++++++++++++++++- www/teams/inner.js | 4 ++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/www/common/outer/team.js b/www/common/outer/team.js index 5c31621f7..8cb9aacb6 100644 --- a/www/common/outer/team.js +++ b/www/common/outer/team.js @@ -474,6 +474,16 @@ define([ // Make sure we have not been kicked from the roster var state = roster.getState(); var me = Util.find(ctx, ['store', 'proxy', 'curvePublic']); + // XXX FIXME roster history temporarily corrupted, don't leave the team + if (!state.members || !Object.keys(state.members).length) { + lm.stop(); + roster.stop(); + lm.proxy = {}; + cb({error: 'EINVAL'}); + waitFor.abort(); + console.error(JSON.stringify(state)); + return; + } if (!state.members[me]) { lm.stop(); roster.stop(); @@ -1660,6 +1670,7 @@ define([ var safe = false; if (['drive', 'teams', 'settings'].indexOf(app) !== -1) { safe = true; } Object.keys(teams).forEach(function (id) { + if (!ctx.teams[id]) { return; } t[id] = { owner: teams[id].owner, name: teams[id].metadata.name, @@ -1716,6 +1727,15 @@ define([ team.removeClient = function (clientId) { removeClient(ctx, clientId); }; + var listTeams = function (cb) { + var t = Util.clone(teams); + Object.keys(t).forEach(function (id) { + // If failure to load the team, don't send it + if (ctx.teams[id]) { return; } + t[id].error = true; + }); + cb(t); + }; team.execCommand = function (clientId, obj, cb) { if (ctx.store.offline) { return void cb({ error: 'OFFLINE' }); @@ -1728,7 +1748,7 @@ define([ return void subscribe(ctx, data, clientId, cb); } if (cmd === 'LIST_TEAMS') { - return void cb(store.proxy.teams); + return void listTeams(cb); } if (cmd === 'OPEN_TEAM_CHAT') { return void openTeamChat(ctx, data, clientId, cb); diff --git a/www/teams/inner.js b/www/teams/inner.js index 86b8acf47..30612f3c3 100644 --- a/www/teams/inner.js +++ b/www/teams/inner.js @@ -418,6 +418,10 @@ define([ ])); common.displayAvatar($(avatar), team.metadata.avatar, team.metadata.name); $(btn).click(function () { + if (team.error) { + UI.warn(Messages.error); // XXX better error message - roster bug, can't load the team for now + return; + } openTeam(common, id, team); }); });