Fix account creation redis publish, rename to make more clear

This commit is contained in:
Ben Gotow 2016-06-30 13:25:13 -07:00
parent ef5c4a29fe
commit 3c2b8bcb15
10 changed files with 18 additions and 18 deletions

View file

@ -54,7 +54,7 @@ const validate = (request, username, password, callback) => {
callback(null, false, {});
return;
}
SchedulerUtils.notifyAccountIsActive(account.id)
SchedulerUtils.markAccountIsActive(account.id)
callback(null, true, account);
});
});

View file

@ -5,8 +5,7 @@ module.exports = {
createSyncbackRequest: function createSyncbackRequest(request, reply, syncRequestArgs) {
request.getAccountDatabase().then((db) => {
db.SyncbackRequest.create(syncRequestArgs).then((syncbackRequest) => {
PubsubConnector.notify({
accountId: db.accountId,
PubsubConnector.notifyAccount(db.accountId, {
type: MessageTypes.SYNCBACK_REQUESTED,
data: syncbackRequest.id,
});

View file

@ -9,6 +9,8 @@ const {
DatabaseConnector,
SyncPolicy,
Provider,
PubsubConnector,
MessageTypes,
} = require('nylas-core');
const {GMAIL_CLIENT_ID, GMAIL_CLIENT_SECRET, GMAIL_REDIRECT_URL} = process.env;

View file

@ -3,18 +3,16 @@ const MessageTypes = require('./message-types')
module.exports = (db, sequelize) => {
sequelize.addHook("afterCreate", ({dataValues, $modelOptions}) => {
if ($modelOptions.name.singular === 'Account') {
if ($modelOptions.name.singular === 'account') {
PubsubConnector.broadcastClient().lpushAsync('accounts:unclaimed', dataValues.id);
PubsubConnector.notify({
accountId: dataValues.id,
type: MessageTypes.ACCOUNT_UPDATED,
PubsubConnector.notifyAccount(dataValues.id, {
type: MessageTypes.ACCOUNT_CREATED,
});
}
})
sequelize.addHook("afterUpdate", ({dataValues, $modelOptions}) => {
if ($modelOptions.name.singular === 'Account') {
PubsubConnector.notify({
accountId: dataValues.id,
if ($modelOptions.name.singular === 'account') {
PubsubConnector.notifyAccount(dataValues.id, {
type: MessageTypes.ACCOUNT_UPDATED,
});
}

View file

@ -1,4 +1,5 @@
module.exports = {
ACCOUNT_CREATED: "ACCOUNT_CREATED",
ACCOUNT_UPDATED: "ACCOUNT_UPDATED",
SYNCBACK_REQUESTED: "SYNCBACK_REQUESTED",
}

View file

@ -62,11 +62,11 @@ class PubsubConnector {
});
}
notify({accountId, type, data}) {
notifyAccount(accountId, {type, data}) {
this.broadcastClient().publish(`account-${accountId}`, JSON.stringify({type, data}));
}
observe(accountId) {
observeAccount(accountId) {
return this._observableForChannelOnSharedListener(`account-${accountId}`);
}

View file

@ -47,14 +47,13 @@ const listActiveAccounts = () => {
);
}
const notifyAccountIsActive = (accountId) => {
const markAccountIsActive = (accountId) => {
const client = PubsubConnector.broadcastClient();
const key = ACTIVE_KEY_FOR(accountId);
client.incrAsync(key).then((val) => {
client.expireAsync(key, 5 * 60 * 1000); // 5 min
if (val === 1) {
PubsubConnector.notify({
accountId: accountId,
PubsubConnector.notifyAccount(accountId, {
type: MessageTypes.ACCOUNT_UPDATED,
});
}
@ -72,6 +71,6 @@ module.exports = {
assignPolicy,
forEachAccountList,
listActiveAccounts,
notifyAccountIsActive,
markAccountIsActive,
checkIfAccountIsActive,
}

View file

@ -99,6 +99,7 @@ class Root extends React.Component {
onReceivedActiveAccountIds(accountIds) {
this.setState({activeAccountIds: accountIds})
}
onReceivedAccount(account) {
const accounts = Object.assign({}, this.state.accounts);
accounts[account.id] = account;

View file

@ -238,7 +238,7 @@ class FetchMessagesInFolder {
folderImapUID: attributes.uid,
folderId: this._category.id,
headers: parsedHeaders,
headerMessageId: parsedHeaders['message-id'][0],
headerMessageId: parsedHeaders['message-id'] ? parsedHeaders['message-id'][0] : '',
subject: parsedHeaders.subject[0],
}

View file

@ -25,7 +25,7 @@ class SyncWorker {
this.syncNow();
this._onMessage = this._onMessage.bind(this);
this._listener = PubsubConnector.observe(account.id).subscribe(this._onMessage)
this._listener = PubsubConnector.observeAccount(account.id).subscribe(this._onMessage)
}
cleanup() {