50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
import { changeUserAgent } from "./listeners.mjs";
|
|
import { getApps, storeApps } from "./storage.mjs";
|
|
|
|
export { createSpaces, removeSpaces, hashSpaceName };
|
|
|
|
function hashSpaceName(url) {
|
|
return btoa(url).replaceAll("=", "");
|
|
}
|
|
|
|
async function createSpaces() {
|
|
const apps = await getApps();
|
|
|
|
if (apps.length === 0) {
|
|
return;
|
|
}
|
|
|
|
const urls = [];
|
|
|
|
apps.forEach(async (app) => {
|
|
urls.push(app.url);
|
|
await browser.spaces.create(app.name, app.url, {
|
|
title: app.title,
|
|
badgeText: app.title.substring(0, 2),
|
|
badgeBackgroundColor: app.badgeBackgroundColor
|
|
});
|
|
});
|
|
|
|
const matchUrls = urls.map((url) => {
|
|
return url.replace(/^(https?:\/\/).*((?<=[\/\.])[^\/\.?]*\.[^\/\.?]*)[\/?]?.*$/g, "$1*.$2/*");
|
|
});
|
|
|
|
if (browser.webRequest.onBeforeSendHeaders.hasListener(changeUserAgent)) {
|
|
browser.webRequest.onBeforeSendHeaders.removeListener(changeUserAgent);
|
|
}
|
|
|
|
browser.webRequest.onBeforeSendHeaders.addListener(changeUserAgent, { urls: matchUrls }, [
|
|
"requestHeaders",
|
|
"blocking",
|
|
]);
|
|
}
|
|
|
|
async function removeSpaces() {
|
|
const spaces = await browser.spaces.query({ isSelfOwned: true });
|
|
|
|
spaces.forEach(async (space) => {
|
|
await browser.spaces.remove(space.id);
|
|
});
|
|
|
|
await storeApps([]);
|
|
}
|