From c42578b4276e721e825b9f5cf522d71a44d3e6d4 Mon Sep 17 00:00:00 2001 From: SethBurkart123 Date: Tue, 14 Nov 2023 06:39:37 +1100 Subject: [PATCH] added auto updating colour and darkmode --- src/background.js | 46 ++++++++++++++++++++++++------------------ src/seqta/ui/Themes.js | 14 ++++++++----- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/background.js b/src/background.js index aa18c9be..e94aaa2f 100644 --- a/src/background.js +++ b/src/background.js @@ -96,10 +96,6 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { case 'reloadTabs': ReloadSEQTAPages(); break; - - case 'IndexedDB': - HandleIntexedDB(request, sendResponse); - return true; case 'currentTab': chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { @@ -124,28 +120,18 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { case 'sendNews': GetNews(sendResponse); return true; - // eslint-disable-next-line no-unreachable - break; + + case 'downloadBackground': + downloadBackgroundFromUrl(request.url, request.filename).then((fileId) => { + sendResponse({ fileId }); + }); + return true; default: console.log('Unknown request type'); } }); -function HandleIntexedDB(request, sendResponse) { - switch (request.action) { - case 'write': - writeData(request.data.type, request.data.data); - break; - - case 'read': - readData().then((data) => { - sendResponse(data); - }); - return true; - } -} - function GetNews(sendResponse) { // Gets the current date const date = new Date(); @@ -318,3 +304,23 @@ chrome.runtime.onInstalled.addListener(function (event) { migrateOldStorage(); } }); + +const downloadBackgroundFromUrl = async (url, filename) => { + try { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Network response was not ok: ${response.statusText}`); + } + const blob = await response.blob(); // Create a blob from the response + const fileType = blob.type.split('/')[0]; // Assuming that the file type is always the first part of the mime type + const fileId = `${Date.now()}-${filename}`; // Unique ID for the file + + await writeData(fileId, fileType, blob); // Write data to your storage system + + // Return the generated file ID + return fileId; + } catch (error) { + console.error('There was an error downloading the background:', error); + throw error; // Rethrow the error so that it can be handled by the caller + } +}; \ No newline at end of file diff --git a/src/seqta/ui/Themes.js b/src/seqta/ui/Themes.js index 92e4d255..44cad5ac 100644 --- a/src/seqta/ui/Themes.js +++ b/src/seqta/ui/Themes.js @@ -1,4 +1,5 @@ import localforage from 'localforage'; +import { updateAllColors } from '../ui/colors/Manager.js'; let currentThemeClass = ''; @@ -19,11 +20,11 @@ const themeExistsInDB = async (themeName) => { return (await localforage.getItem(`css_${themeName}`)) !== null; }; -// Fetch theme details (CSS, images, className) from a given URL +// Fetch theme details (CSS, images, className, darkMode, defaultColour) from a given URL const fetchThemeJSON = async (url) => { - const { css, images, className } = await fetchJSON(url); + const { css, images, className, darkMode, defaultColour } = await fetchJSON(url); const cssText = await fetchText(css); - return { css: cssText, images, className }; + return { css: cssText, images, className, darkMode, defaultColour }; }; // Save individual image to IndexedDB @@ -44,9 +45,9 @@ const saveToIndexedDB = async (theme, themeName) => { await Promise.all(Object.entries(theme.images).map(([cssVar, imageUrl]) => saveImageToDB(themeName, cssVar, imageUrl))); }; -// Apply theme from storage via localForage to document +// Apply theme from storage via localForage to document, including dark mode and default color const applyTheme = async (themeName) => { - const { css, className, images } = await localforage.getItem(`css_${themeName}`); + const { css, className, images, darkMode, defaultColour } = await localforage.getItem(`css_${themeName}`); const newStyle = document.createElement('style'); newStyle.innerHTML = css; @@ -75,6 +76,9 @@ const applyTheme = async (themeName) => { }) ); } + + // Update colors based on theme settings + updateAllColors(darkMode, defaultColour); }; export const listThemes = async () => {