multiple schedule suppport kinda

This commit is contained in:
Sriram Hariharan
2023-03-15 23:54:07 -05:00
parent 6d4a4307cf
commit 6afd372945
30 changed files with 224 additions and 155 deletions

View File

@@ -5,7 +5,7 @@ import onInstall from './events/onInstall';
import onNewChromeSession from './events/onNewChromeSession';
import onServiceWorkerAlive from './events/onServiceWorkerAlive';
import onUpdate from './events/onUpdate';
import { SessionStore } from '../shared/storage/SessionStore';
import { sessionStore } from '../shared/storage/sessionStore';
import browserActionHandler from './handler/browserActionHandler';
import hotReloadingHandler from './handler/hotReloadingHandler';
import tabManagementHandler from './handler/tabManagementHandler';
@@ -38,9 +38,9 @@ const messageListener = new MessageListener<BACKGROUND_MESSAGES>({
messageListener.listen();
SessionStore.getChromeSessionId().then(async chromeSessionId => {
sessionStore.get('chromeSessionId').then(async chromeSessionId => {
if (!chromeSessionId) {
await SessionStore.setChromeSessionId(generateRandomId(10));
await sessionStore.set('chromeSessionId', generateRandomId(10));
onNewChromeSession();
}
});

View File

@@ -1,9 +1,8 @@
import { SECOND } from 'src/shared/util/time';
import { ExtensionStore } from '../../shared/storage/ExtensionStore';
import { extensionStore } from '../../shared/storage/extensionStore';
/**
* Called when the extension is first installed or synced onto a new machine
*/
export default async function onInstall() {
await ExtensionStore.setVersion(chrome.runtime.getManifest().version);
await extensionStore.set('version', chrome.runtime.getManifest().version);
}

View File

@@ -1,14 +1,14 @@
import { hotReloadTab } from 'src/background/util/hotReloadTab';
import { ExtensionStore } from '../../shared/storage/ExtensionStore';
import { extensionStore } from '../../shared/storage/extensionStore';
/**
* Called when the extension is updated (or when the extension is reloaded in development mode)
*/
export default async function onUpdate() {
await Promise.all([
ExtensionStore.setLastUpdate(Date.now()),
ExtensionStore.setVersion(chrome.runtime.getManifest().version),
]);
await extensionStore.set({
version: chrome.runtime.getManifest().version,
lastUpdate: Date.now(),
});
if (process.env.NODE_ENV === 'development') {
hotReloadTab();

View File

@@ -1,18 +1,17 @@
import HotReloadingMessages from 'src/shared/messages/HotReloadingMessages';
import { MessageHandler } from 'chrome-extension-toolkit';
import { DevStore } from 'src/shared/storage/DevStore';
import { devStore } from 'src/shared/storage/devStore';
const hotReloadingHandler: MessageHandler<HotReloadingMessages> = {
async reloadExtension({ sendResponse }) {
const isExtensionReloading = await DevStore.getIsExtensionReloading();
const { isExtensionReloading, isTabReloading } = await devStore.get(['isExtensionReloading', 'isTabReloading']);
if (!isExtensionReloading) return sendResponse();
const isTabReloading = await DevStore.getIsExtensionReloading();
if (isTabReloading) {
const tabs = await chrome.tabs.query({ active: true, currentWindow: true });
const tabToReload = tabs[0];
await DevStore.setReloadTabId(tabToReload?.id);
await devStore.set('reloadTabId', tabToReload?.id);
}
chrome.runtime.reload();
},

View File

@@ -1,4 +1,4 @@
import { DevStore } from 'src/shared/storage/DevStore';
import { devStore } from 'src/shared/storage/devStore';
/**
* A list of websites that we don't want to reload when the extension reloads (becuase it'd be hella annoying lmao)
@@ -24,9 +24,7 @@ const HOT_RELOADING_WHITELIST = [
* @returns a promise that resolves when the tab is reloaded
*/
export async function hotReloadTab(): Promise<void> {
const { getIsTabReloading, getReloadTabId } = DevStore;
const [isTabReloading, reloadTabId] = await Promise.all([getIsTabReloading(), getReloadTabId()]);
const { isTabReloading, reloadTabId } = await devStore.get(['isTabReloading', 'reloadTabId']);
if (!isTabReloading || !reloadTabId) return;

View File

@@ -1,24 +1,22 @@
import { DevStore } from 'src/shared/storage/DevStore';
import { devStore } from 'src/shared/storage/devStore';
/**
* Open the debug tab as the first tab
*/
export async function openDebugTab() {
if (process.env.NODE_ENV === 'development') {
const debugTabId = await DevStore.getDebugTabId();
const { debugTabId, wasDebugTabVisible } = await devStore.get(['debugTabId', 'wasDebugTabVisible']);
const isAlreadyOpen = await (await chrome.tabs.query({})).some(tab => tab.id === debugTabId);
if (isAlreadyOpen) return;
const wasVisible = await DevStore.getWasDebugTabVisible();
const tab = await chrome.tabs.create({
url: chrome.runtime.getURL('debug.html'),
active: wasVisible,
active: wasDebugTabVisible,
pinned: true,
index: 0,
});
await DevStore.setDebugTabId(tab.id);
await devStore.set('debugTabId', tab.id);
}
}