Add support for login & logout while keeping the same shared worker

pull/1/head
yflory 7 years ago
parent 02b282a1a5
commit 47dee664da

@ -932,9 +932,12 @@ define([
document.location.reload(); document.location.reload();
} else if (o && !n) { } else if (o && !n) {
LocalStore.logout(); LocalStore.logout();
postMessage("DISCONNECT");
} }
}); });
LocalStore.onLogout(function () {
console.log('onLogout: disconnect');
postMessage("DISCONNECT");
});
if (PINNING_ENABLED && LocalStore.isLoggedIn()) { if (PINNING_ENABLED && LocalStore.isLoggedIn()) {
console.log("logged in. pads will be pinned"); console.log("logged in. pads will be pinned");

File diff suppressed because it is too large Load Diff

@ -27,10 +27,15 @@ var init = function (client, cb) {
'/common/common-util.js', '/common/common-util.js',
'/common/outer/worker-channel.js', '/common/outer/worker-channel.js',
'/common/outer/store-rpc.js' '/common/outer/store-rpc.js'
], function (Util, Channel, Rpc) { ], function (Util, Channel, SRpc) {
debug('SW Required ressources loaded'); debug('SW Required ressources loaded');
var msgEv = Util.mkEvent(); var msgEv = Util.mkEvent();
if (!self.Rpc) {
self.Rpc = SRpc();
}
var Rpc = self.Rpc;
var postToClient = function (data) { var postToClient = function (data) {
postMsg(client, data); postMsg(client, data);
}; };
@ -51,11 +56,17 @@ var init = function (client, cb) {
console.error(e); console.error(e);
console.log(data); console.log(data);
} }
if (q === "DISCONNECT") {
console.log('Deleting existing store!');
delete self.Rpc;
delete self.store;
}
}); });
}); });
chan.on('CONNECT', function (cfg, cb) { chan.on('CONNECT', function (cfg, cb) {
debug('SW Connect callback'); debug('SW Connect callback');
if (self.store) { if (self.store) {
debug('Store already exists!');
if (cfg.driveEvents) { if (cfg.driveEvents) {
Rpc._subscribeToDrive(clientId); Rpc._subscribeToDrive(clientId);
} }

@ -27,10 +27,15 @@ var init = function (client, cb) {
'/common/common-util.js', '/common/common-util.js',
'/common/outer/worker-channel.js', '/common/outer/worker-channel.js',
'/common/outer/store-rpc.js' '/common/outer/store-rpc.js'
], function (Util, Channel, Rpc) { ], function (Util, Channel, SRpc) {
debug('SharedW Required ressources loaded'); debug('SharedW Required ressources loaded');
var msgEv = Util.mkEvent(); var msgEv = Util.mkEvent();
if (!self.Rpc) {
self.Rpc = SRpc();
}
var Rpc = self.Rpc;
var postToClient = function (data) { var postToClient = function (data) {
postMsg(client, data); postMsg(client, data);
}; };
@ -51,6 +56,11 @@ var init = function (client, cb) {
console.error(e); console.error(e);
console.log(data); console.log(data);
} }
if (q === "DISCONNECT") {
console.log('Deleting existing store!');
delete self.Rpc;
delete self.store;
}
}); });
}); });
chan.on('CONNECT', function (cfg, cb) { chan.on('CONNECT', function (cfg, cb) {

@ -1,89 +1,96 @@
define([ define([
'/common/outer/async-store.js' '/common/outer/async-store.js'
], function (Store) { ], function (AStore) {
var Rpc = {};
var queries = Rpc.queries = { var create = function () {
// Ready var Store = AStore.create();
CONNECT: Store.init,
DISCONNECT: Store.disconnect,
CREATE_README: Store.createReadme,
MIGRATE_ANON_DRIVE: Store.migrateAnonDrive,
// RPC
INIT_RPC: Store.initRpc,
UPDATE_PIN_LIMIT: Store.updatePinLimit,
GET_PIN_LIMIT: Store.getPinLimit,
CLEAR_OWNED_CHANNEL: Store.clearOwnedChannel,
REMOVE_OWNED_CHANNEL: Store.removeOwnedChannel,
UPLOAD_CHUNK: Store.uploadChunk,
UPLOAD_COMPLETE: Store.uploadComplete,
UPLOAD_STATUS: Store.uploadStatus,
UPLOAD_CANCEL: Store.uploadCancel,
PIN_PADS: Store.pinPads,
UNPIN_PADS: Store.unpinPads,
GET_DELETED_PADS: Store.getDeletedPads,
GET_PINNED_USAGE: Store.getPinnedUsage,
// ANON RPC
INIT_ANON_RPC: Store.initAnonRpc,
ANON_RPC_MESSAGE: Store.anonRpcMsg,
GET_FILE_SIZE: Store.getFileSize,
GET_MULTIPLE_FILE_SIZE: Store.getMultipleFileSize,
// Store
GET: Store.get,
SET: Store.set,
ADD_PAD: Store.addPad,
SET_PAD_TITLE: Store.setPadTitle,
MOVE_TO_TRASH: Store.moveToTrash,
RESET_DRIVE: Store.resetDrive,
GET_METADATA: Store.getMetadata,
SET_DISPLAY_NAME: Store.setDisplayName,
SET_PAD_ATTRIBUTE: Store.setPadAttribute,
GET_PAD_ATTRIBUTE: Store.getPadAttribute,
SET_ATTRIBUTE: Store.setAttribute,
GET_ATTRIBUTE: Store.getAttribute,
LIST_ALL_TAGS: Store.listAllTags,
GET_TEMPLATES: Store.getTemplates,
GET_SECURE_FILES_LIST: Store.getSecureFilesList,
GET_PAD_DATA: Store.getPadData,
GET_STRONGER_HASH: Store.getStrongerHash,
INCREMENT_TEMPLATE_USE: Store.incrementTemplateUse,
// Messaging
INVITE_FROM_USERLIST: Store.inviteFromUserlist,
ADD_DIRECT_MESSAGE_HANDLERS: Store.addDirectMessageHandlers,
// Messenger
CONTACTS_GET_FRIEND_LIST: Store.messenger.getFriendList,
CONTACTS_GET_MY_INFO: Store.messenger.getMyInfo,
CONTACTS_GET_FRIEND_INFO: Store.messenger.getFriendInfo,
CONTACTS_REMOVE_FRIEND: Store.messenger.removeFriend,
CONTACTS_OPEN_FRIEND_CHANNEL: Store.messenger.openFriendChannel,
CONTACTS_GET_FRIEND_STATUS: Store.messenger.getFriendStatus,
CONTACTS_GET_MORE_HISTORY: Store.messenger.getMoreHistory,
CONTACTS_SEND_MESSAGE: Store.messenger.sendMessage,
CONTACTS_SET_CHANNEL_HEAD: Store.messenger.setChannelHead,
// Pad
SEND_PAD_MSG: Store.sendPadMsg,
JOIN_PAD: Store.joinPad,
GET_FULL_HISTORY: Store.getFullHistory,
IS_NEW_CHANNEL: Store.isNewChannel,
// Drive
DRIVE_USEROBJECT: Store.userObjectCommand,
// Settings,
DELETE_ACCOUNT: Store.deleteAccount,
};
Rpc.query = function (cmd, data, cb) { var Rpc = {};
if (queries[cmd]) {
queries[cmd]('0', data, cb); var queries = Rpc.queries = {
} else { // Ready
console.error('UNHANDLED_STORE_RPC'); CONNECT: Store.init,
} DISCONNECT: Store.disconnect,
}; CREATE_README: Store.createReadme,
MIGRATE_ANON_DRIVE: Store.migrateAnonDrive,
// RPC
INIT_RPC: Store.initRpc,
UPDATE_PIN_LIMIT: Store.updatePinLimit,
GET_PIN_LIMIT: Store.getPinLimit,
CLEAR_OWNED_CHANNEL: Store.clearOwnedChannel,
REMOVE_OWNED_CHANNEL: Store.removeOwnedChannel,
UPLOAD_CHUNK: Store.uploadChunk,
UPLOAD_COMPLETE: Store.uploadComplete,
UPLOAD_STATUS: Store.uploadStatus,
UPLOAD_CANCEL: Store.uploadCancel,
PIN_PADS: Store.pinPads,
UNPIN_PADS: Store.unpinPads,
GET_DELETED_PADS: Store.getDeletedPads,
GET_PINNED_USAGE: Store.getPinnedUsage,
// ANON RPC
INIT_ANON_RPC: Store.initAnonRpc,
ANON_RPC_MESSAGE: Store.anonRpcMsg,
GET_FILE_SIZE: Store.getFileSize,
GET_MULTIPLE_FILE_SIZE: Store.getMultipleFileSize,
// Store
GET: Store.get,
SET: Store.set,
ADD_PAD: Store.addPad,
SET_PAD_TITLE: Store.setPadTitle,
MOVE_TO_TRASH: Store.moveToTrash,
RESET_DRIVE: Store.resetDrive,
GET_METADATA: Store.getMetadata,
SET_DISPLAY_NAME: Store.setDisplayName,
SET_PAD_ATTRIBUTE: Store.setPadAttribute,
GET_PAD_ATTRIBUTE: Store.getPadAttribute,
SET_ATTRIBUTE: Store.setAttribute,
GET_ATTRIBUTE: Store.getAttribute,
LIST_ALL_TAGS: Store.listAllTags,
GET_TEMPLATES: Store.getTemplates,
GET_SECURE_FILES_LIST: Store.getSecureFilesList,
GET_PAD_DATA: Store.getPadData,
GET_STRONGER_HASH: Store.getStrongerHash,
INCREMENT_TEMPLATE_USE: Store.incrementTemplateUse,
// Messaging
INVITE_FROM_USERLIST: Store.inviteFromUserlist,
ADD_DIRECT_MESSAGE_HANDLERS: Store.addDirectMessageHandlers,
// Messenger
CONTACTS_GET_FRIEND_LIST: Store.messenger.getFriendList,
CONTACTS_GET_MY_INFO: Store.messenger.getMyInfo,
CONTACTS_GET_FRIEND_INFO: Store.messenger.getFriendInfo,
CONTACTS_REMOVE_FRIEND: Store.messenger.removeFriend,
CONTACTS_OPEN_FRIEND_CHANNEL: Store.messenger.openFriendChannel,
CONTACTS_GET_FRIEND_STATUS: Store.messenger.getFriendStatus,
CONTACTS_GET_MORE_HISTORY: Store.messenger.getMoreHistory,
CONTACTS_SEND_MESSAGE: Store.messenger.sendMessage,
CONTACTS_SET_CHANNEL_HEAD: Store.messenger.setChannelHead,
// Pad
SEND_PAD_MSG: Store.sendPadMsg,
JOIN_PAD: Store.joinPad,
GET_FULL_HISTORY: Store.getFullHistory,
IS_NEW_CHANNEL: Store.isNewChannel,
// Drive
DRIVE_USEROBJECT: Store.userObjectCommand,
// Settings,
DELETE_ACCOUNT: Store.deleteAccount,
};
// Internal calls Rpc.query = function (cmd, data, cb) {
Rpc._removeClient = Store._removeClient; if (queries[cmd]) {
Rpc._subscribeToDrive = Store._subscribeToDrive; queries[cmd]('0', data, cb);
Rpc._subscribeToMessenger = Store._subscribeToMessenger; } else {
console.error('UNHANDLED_STORE_RPC');
}
};
// Internal calls
Rpc._removeClient = Store._removeClient;
Rpc._subscribeToDrive = Store._subscribeToDrive;
Rpc._subscribeToMessenger = Store._subscribeToMessenger;
return Rpc;
};
return Rpc; return create;
}); });

@ -15,9 +15,11 @@ require([
'/common/common-util.js', '/common/common-util.js',
'/common/outer/worker-channel.js', '/common/outer/worker-channel.js',
'/common/outer/store-rpc.js' '/common/outer/store-rpc.js'
], function (Util, Channel, Rpc) { ], function (Util, Channel, SRpc) {
var msgEv = Util.mkEvent(); var msgEv = Util.mkEvent();
var Rpc = SRpc();
Channel.create(msgEv, postMessage, function (chan) { Channel.create(msgEv, postMessage, function (chan) {
var clientId = '1'; var clientId = '1';
Object.keys(Rpc.queries).forEach(function (q) { Object.keys(Rpc.queries).forEach(function (q) {

Loading…
Cancel
Save