fix backend to frontend sync with waitForSyncId()

This commit is contained in:
zadam 2020-03-10 21:33:03 +01:00
parent bcbf1b79c3
commit e6e41adad0
3 changed files with 22 additions and 5 deletions

View File

@ -100,4 +100,14 @@ export default class LoadResults {
isOptionReloaded(name) {
this.options.includes(name);
}
isEmpty() {
return Object.keys(this.noteIdToSourceId).length > 0
|| this.branches.length > 0
|| this.attributes.length > 0
|| this.noteReorderings.length > 0
|| this.noteRevisions.length > 0
|| this.contentNoteIdToSourceId.length > 0
|| this.options.length > 0;
}
}

View File

@ -44,7 +44,7 @@ async function handleMessage(event) {
}
if (message.type === 'sync') {
const syncRows = message.data;
let syncRows = message.data;
lastPingTs = Date.now();
$outstandingSyncsCount.html(message.outstandingSyncs);
@ -90,6 +90,8 @@ function waitForSyncId(desiredSyncId) {
return Promise.resolve();
}
console.log("Waiting for", desiredSyncId, 'current is', lastProcessedSyncId);
return new Promise((res, rej) => {
syncIdReachedListeners.push({
desiredSyncId,
@ -322,13 +324,19 @@ async function processSyncRows(syncRows) {
});
syncRows.filter(sync => sync.entityName === 'options').forEach(sync => {
if (sync.entity.name === 'openTabs') {
return; // only noise
}
options.set(sync.entity.name, sync.entity.value);
loadResults.addOption(sync.entity.name);
});
const appContext = (await import("./app_context.js")).default;
appContext.triggerEvent('entitiesReloaded', {loadResults});
if (!loadResults.isEmpty()) {
const appContext = (await import("./app_context.js")).default;
appContext.triggerEvent('entitiesReloaded', {loadResults});
}
}
export default {

View File

@ -98,8 +98,7 @@ async function fillInAdditionalProperties(sync) {
}
async function sendPing(client) {
const syncRows = cls.getSyncRows()
.filter(r => r.entityName !== 'recent_notes' && (r.entityName !== 'options' || r.entityId !== 'openTabs')); // only noise ...
const syncRows = cls.getSyncRows();
for (const sync of syncRows) {
try {