From acca98f70de7a99a804febda2c17e7ad70b0c79d Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Fri, 22 Mar 2024 11:11:05 +0100 Subject: [PATCH] handle cookie responses properly --- build/js/Cookie.js | 17 +++++++++++++++++ build/js/SettingsManager.js | 24 ++++++++++++------------ web/settings/index.css | 4 ++-- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/build/js/Cookie.js b/build/js/Cookie.js index bd09200..92d3c34 100644 --- a/build/js/Cookie.js +++ b/build/js/Cookie.js @@ -100,4 +100,21 @@ export class Cookie { } }); } + + /** + * + * @param {Cookie} cookie + */ + static async REMOVE_COOKIE(cookie) { + let response_promises = []; + response_promises.push(browser.cookie.remove({ + url: "https://metager.de/", + name: cookie.key + })); + response_promises.push(browser.cookie.remove({ + url: "https://metager.org/", + name: cookie.key + })); + return Promise.all(response_promises); + } } \ No newline at end of file diff --git a/build/js/SettingsManager.js b/build/js/SettingsManager.js index f352314..af359e7 100644 --- a/build/js/SettingsManager.js +++ b/build/js/SettingsManager.js @@ -118,8 +118,8 @@ export class SettingsManager { if (!this.store_settings) return details.responseHeaders; await this.init(); if (details.hasOwnProperty("responseHeaders")) { - let new_headers = []; // Cookie Array without set-cookie let settings_changed = false; + let cookies_to_remove = []; for (const header of details.responseHeaders) { if (header.name.match(/set-cookie/i)) { let cookie_responses = header.value.split("\n"); @@ -128,32 +128,32 @@ export class SettingsManager { let response_cookie = new Cookie(cookie); if (response_cookie.expired) { - new_cookies.push(cookie); delete this.settings[response_cookie.key]; + // Remove cookie from browser + cookies_to_remove.push(response_cookie); } else if (response_cookie.key == "cost" || response_cookie.key == "tokens") { // Do not remove cost cookie as the token manager uses it - new_cookies.push(cookie); continue; } else { this.settings[response_cookie.key] = decodeURIComponent( response_cookie.value ); + cookies_to_remove.push(response_cookie); } } - if (new_cookies.length > 0) { - header.value = new_cookies.join("\n"); - new_headers.push(header); - } settings_changed = true; - } else { - new_headers.push(header); } } if (settings_changed) { - await this.updateSettingRule(); - await browser.storage.sync.set({ settings_settings: this.settings }); + await this.sync().then(() => { + let removal_promises = []; + for (let cookie of cookies_to_remove) { + removal_promises.push(Cookie.REMOVE_COOKIE(cookie)); + } + return Promise.all(removal_promises); + }); } - return new_headers; + return; } } diff --git a/web/settings/index.css b/web/settings/index.css index 29fc409..cda1542 100644 --- a/web/settings/index.css +++ b/web/settings/index.css @@ -6,8 +6,8 @@ body { } body { - width: 100vw; - max-width: 780px; + width: 380px; + max-width: 100%; margin: 0 auto; margin-bottom: 1rem; } -- GitLab