From db4604e21fdbdef987b8394121ed6024f6eb3016 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 28 Sep 2023 17:49:00 +0800 Subject: [PATCH] Sync label changes --- pkg/extension/src/scripts/api.js | 36 +++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/pkg/extension/src/scripts/api.js b/pkg/extension/src/scripts/api.js index 2bab74be8..5dc219331 100644 --- a/pkg/extension/src/scripts/api.js +++ b/pkg/extension/src/scripts/api.js @@ -54,6 +54,7 @@ async function updateLabelsCache(apiUrl, tab) { console.log(!data.labels, data.labels['errorCodes'], !data.labels['labels']) return [] } + await setStorage({ labels: data.labels.labels, labelsLastUpdated: new Date().toISOString(), @@ -97,13 +98,20 @@ async function updatePageTitle(apiUrl, pageId, title) { return data.updatePage.updatePage } -async function setLabels(apiUrl, pageId, labelIds) { +async function setLabels(apiUrl, pageId, labelIds, createdLabels) { + console.log( + 'setLabels(apiUrl, pageId, labelIds, createdLabels)', + labelIds, + createdLabels + ) const mutation = JSON.stringify({ query: `mutation SetLabels($input: SetLabelsInput!) { setLabels(input: $input) { ... on SetLabelsSuccess { labels { id + name + color } } ... on SetLabelsError { @@ -116,6 +124,7 @@ async function setLabels(apiUrl, pageId, labelIds) { input: { pageId, labelIds, + labels: createdLabels, }, }, }) @@ -129,9 +138,34 @@ async function setLabels(apiUrl, pageId, labelIds) { console.log('GQL Error setting labels:', data) throw new Error('Error setting labels.') } + + await appendLabelsToCache(data.setLabels.labels) + return data.setLabels.labels } +async function appendLabelsToCache(labels) { + const cachedLabels = await getStorageItem('labels') + if (cachedLabels) { + labels.forEach((l) => { + const existing = cachedLabels.find((cached) => cached.name === l.name) + if (!existing) { + cachedLabels.unshift(l) + } + }) + + await setStorage({ + labels: cachedLabels, + labelsLastUpdated: new Date().toISOString(), + }) + } else { + await setStorage({ + labels: labels, + labelsLastUpdated: new Date().toISOString(), + }) + } +} + async function addNote(apiUrl, pageId, noteId, shortId, note) { const query = JSON.stringify({ query: `query GetArticle(