diff --git a/source/js/background.js b/source/js/background.js index 884fdce..af4f4d6 100644 --- a/source/js/background.js +++ b/source/js/background.js @@ -57,6 +57,10 @@ function processMessages(request, sender) { syncLocalTasks(resolve, reject); break; } + case 'deleteTask': { + deleteTask(resolve, reject, request.taskId); + break; + } case 'getErrorMessage': { resolve(await getErrorMessage()); break; @@ -235,6 +239,34 @@ async function syncLocalTasks(resolve, reject) { }); } +async function deleteTask(resolve, reject, taskId) { + console.log('API: DELETE TASK'); + chrome.identity.getAuthToken({ interactive: true }, async accessToken => { + if (accessToken == undefined) { + reject(new Error(LOGIN_FAILED)); + return; + } + fetch(`${API_ENDPOINT}/${taskId}?` + new URLSearchParams({ access_token: accessToken }), { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + }) + .then(getJsonOrError) + .then(async deleteOp => { + if(deleteOp.deleted){ + const storage = await optionsStorage.getAll(); + delete storage.archivedUrls[taskId]; + await optionsStorage.set(storage); + resolve(storage.archivedUrls); + return; + } + throw new Error(`Could not delete archive task.`); + }) + .catch(e => reject(e)); + }); +} + async function getJsonOrError(response) { let additionalErrorInfo = ""; if (response.status == 401) additionalErrorInfo = `Check that this email has been granted permission.`; diff --git a/source/vue/Popup.vue b/source/vue/Popup.vue index a263106..e7d067f 100644 --- a/source/vue/Popup.vue +++ b/source/vue/Popup.vue @@ -27,7 +27,7 @@
-