added auto updating colour and darkmode

This commit is contained in:
SethBurkart123
2023-11-14 06:39:37 +11:00
parent 5fc23ac0da
commit c42578b427
2 changed files with 35 additions and 25 deletions
+26 -20
View File
@@ -97,10 +97,6 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
ReloadSEQTAPages();
break;
case 'IndexedDB':
HandleIntexedDB(request, sendResponse);
return true;
case 'currentTab':
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
chrome.tabs.sendMessage(tabs[0].id, request, function (response) {
@@ -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
}
};
+9 -5
View File
@@ -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 () => {