A rewrite of Poly+, my quality-of-life browser extension for Polytoria. Built entirely fresh using the WXT extension framework, Typescript, and with added better overall code quality.
extension
1import { cache } from "./storage";
2import { cacheInterface } from "./types";
3
4// maybe make this use Meta data on an actual container ?
5export async function pullCache(key: string, replenish: Function, forceReplenish: boolean) {
6 const cacheStorage: cacheInterface = await cache.getValue();
7 console.log('cache: ', cacheStorage)
8 if (!cacheStorage[key] || forceReplenish) {
9 const replenishedCache = await replenish();
10 cacheStorage[key] = replenishedCache;
11 //@ts-ignore: why
12 cache.setValue(cacheStorage);
13 console.log('replenished cache: ', replenishedCache)
14 return replenishedCache;
15 }
16 return cacheStorage[key];
17}
18
19// mergeObjects function was written by ChatGPT cause I was lazy and it was a while ago
20// type inferences set to any because I am again, lazy
21export function mergeObjects(obj1: any, obj2: any) {
22 var mergedObj: any = {};
23 for (var key in obj1) {
24 mergedObj[key] = obj1[key];
25 }
26
27 // Merge the values from obj2 into the mergedObj, favoring obj2 for non-existing keys in obj1
28 for (var key in obj2) {
29 if (!obj1.hasOwnProperty(key)) {
30 mergedObj[key] = obj2[key];
31 }
32 }
33
34 return mergedObj;
35}