Don't rejoin a dropped channel on reconnect and leave chat channel
This commit is contained in:
@@ -985,7 +985,7 @@ define([
|
||||
/////////////////////// PAD //////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////
|
||||
|
||||
var channels = Store.channels = {};
|
||||
var channels = Store.channels = store.channels = {};
|
||||
|
||||
Store.joinPad = function (clientId, data) {
|
||||
var isNew = typeof channels[data.channel] === "undefined";
|
||||
@@ -1093,12 +1093,12 @@ define([
|
||||
});
|
||||
}
|
||||
};
|
||||
CpNfWorker.start(conf);
|
||||
channel.cpNf = CpNfWorker.start(conf);
|
||||
};
|
||||
Store.leavePad = function (clientId, data, cb) {
|
||||
var channel = channels[data.channel];
|
||||
if (!channel || !channel.wc) { return void cb ({error: 'EINVAL'}); }
|
||||
channel.wc.leave();
|
||||
if (!channel || !channel.cpNf) { return void cb ({error: 'EINVAL'}); }
|
||||
channel.cpNf.stop();
|
||||
delete channels[data.channel];
|
||||
cb();
|
||||
};
|
||||
@@ -1278,9 +1278,12 @@ define([
|
||||
var dropChannel = function (chanId) {
|
||||
if (!Store.channels[chanId]) { return; }
|
||||
|
||||
if (Store.channels[chanId].wc) {
|
||||
Store.channels[chanId].wc.leave('');
|
||||
if (Store.channels[chanId].cpNf) {
|
||||
Store.channels[chanId].cpNf.stop();
|
||||
}
|
||||
|
||||
store.messenger.leavePad(chanId);
|
||||
|
||||
delete Store.channels[chanId];
|
||||
};
|
||||
Store._removeClient = function (clientId) {
|
||||
|
||||
@@ -45,6 +45,7 @@ define([], function () {
|
||||
conf = undefined;
|
||||
|
||||
var initializing = true;
|
||||
var stopped = false;
|
||||
var lastKnownHash;
|
||||
|
||||
var messageFromOuter = function () {};
|
||||
@@ -239,6 +240,12 @@ define([], function () {
|
||||
onOpen(wc, network, firstConnection);
|
||||
}, function(err) {
|
||||
console.error(err);
|
||||
if (onError) {
|
||||
onError({
|
||||
type: err && (err.type || err),
|
||||
loaded: !initializing
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -250,11 +257,13 @@ define([], function () {
|
||||
});
|
||||
|
||||
network.on('reconnect', function () {
|
||||
if (stopped) { return; }
|
||||
initializing = true;
|
||||
connectTo(network, false);
|
||||
});
|
||||
|
||||
network.on('message', function (msg, sender) { // Direct message
|
||||
if (stopped) { return; }
|
||||
var wchan = findChannelById(network.webChannels, channel);
|
||||
if (wchan) {
|
||||
onMsg(sender, msg, wchan, network, true);
|
||||
@@ -262,6 +271,14 @@ define([], function () {
|
||||
});
|
||||
|
||||
connectTo(network, true);
|
||||
|
||||
return {
|
||||
stop: function () {
|
||||
var wchan = findChannelById(network.webChannels, channel);
|
||||
if (wchan) { wchan.leave(''); }
|
||||
stopped = true;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user