Revert mozilla store compliance changes
This reverts commit 97b6699afe
.
Vencord is dropping support for the firefox extension, so these changes
are now obsolete. revert so users can still install the extension
manually and enjoy the full experience
This commit is contained in:
parent
390987e4a9
commit
d81302f64c
7 changed files with 53 additions and 52 deletions
32
browser/background.js
Normal file
32
browser/background.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/**
|
||||||
|
* @template T
|
||||||
|
* @param {T[]} arr
|
||||||
|
* @param {(v: T) => boolean} predicate
|
||||||
|
*/
|
||||||
|
function removeFirst(arr, predicate) {
|
||||||
|
const idx = arr.findIndex(predicate);
|
||||||
|
if (idx !== -1) arr.splice(idx, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
chrome.webRequest.onHeadersReceived.addListener(
|
||||||
|
({ responseHeaders, type, url }) => {
|
||||||
|
if (!responseHeaders) return;
|
||||||
|
|
||||||
|
if (type === "main_frame") {
|
||||||
|
// In main frame requests, the CSP needs to be removed to enable fetching of custom css
|
||||||
|
// as desired by the user
|
||||||
|
removeFirst(responseHeaders, h => h.name.toLowerCase() === "content-security-policy");
|
||||||
|
} else if (type === "stylesheet" && url.startsWith("https://raw.githubusercontent.com/")) {
|
||||||
|
// Most users will load css from GitHub, but GitHub doesn't set the correct content type,
|
||||||
|
// so we fix it here
|
||||||
|
removeFirst(responseHeaders, h => h.name.toLowerCase() === "content-type");
|
||||||
|
responseHeaders.push({
|
||||||
|
name: "Content-Type",
|
||||||
|
value: "text/css"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return { responseHeaders };
|
||||||
|
},
|
||||||
|
{ urls: ["https://raw.githubusercontent.com/*", "*://*.discord.com/*"], types: ["main_frame", "stylesheet"] },
|
||||||
|
["blocking", "responseHeaders"]
|
||||||
|
);
|
|
@ -26,7 +26,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
"web_accessible_resources": ["dist/*", "third-party/*"],
|
"background": {
|
||||||
|
"scripts": ["background.js"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"web_accessible_resources": ["dist/Vencord.js", "dist/Vencord.css"],
|
||||||
|
|
||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
|
|
|
@ -145,11 +145,11 @@ async function loadDir(dir, basePath = "") {
|
||||||
/**
|
/**
|
||||||
* @type {(target: string, files: string[]) => Promise<void>}
|
* @type {(target: string, files: string[]) => Promise<void>}
|
||||||
*/
|
*/
|
||||||
async function buildExtension(target, files, noMonaco = false) {
|
async function buildExtension(target, files) {
|
||||||
const entries = {
|
const entries = {
|
||||||
"dist/Vencord.js": await readFile("dist/extension.js"),
|
"dist/Vencord.js": await readFile("dist/extension.js"),
|
||||||
"dist/Vencord.css": await readFile("dist/extension.css"),
|
"dist/Vencord.css": await readFile("dist/extension.css"),
|
||||||
...(noMonaco ? {} : await loadDir("dist/monaco")),
|
...await loadDir("dist/monaco"),
|
||||||
...Object.fromEntries(await Promise.all(RnNoiseFiles.map(async file =>
|
...Object.fromEntries(await Promise.all(RnNoiseFiles.map(async file =>
|
||||||
[`third-party/rnnoise/${file.replace(/^dist\//, "")}`, await readFile(`node_modules/@sapphi-red/web-noise-suppressor/${file}`)]
|
[`third-party/rnnoise/${file.replace(/^dist\//, "")}`, await readFile(`node_modules/@sapphi-red/web-noise-suppressor/${file}`)]
|
||||||
))),
|
))),
|
||||||
|
@ -195,7 +195,7 @@ const appendCssRuntime = readFile("dist/Vencord.user.css", "utf-8").then(content
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
appendCssRuntime,
|
appendCssRuntime,
|
||||||
buildExtension("chromium-unpacked", ["modifyResponseHeaders.json", "content.js", "manifest.json", "icon.png"]),
|
buildExtension("chromium-unpacked", ["modifyResponseHeaders.json", "content.js", "manifest.json", "icon.png"]),
|
||||||
buildExtension("firefox-unpacked", ["content.js", "manifestv2.json", "icon.png"], true),
|
buildExtension("firefox-unpacked", ["background.js", "content.js", "manifestv2.json", "icon.png"]),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Zip.sync.zip("dist/chromium-unpacked").compress().save("dist/extension.zip");
|
Zip.sync.zip("dist/chromium-unpacked").compress().save("dist/extension.zip");
|
||||||
|
|
|
@ -18,11 +18,9 @@
|
||||||
|
|
||||||
import { useSettings } from "@api/Settings";
|
import { useSettings } from "@api/Settings";
|
||||||
import { classNameFactory } from "@api/Styles";
|
import { classNameFactory } from "@api/Styles";
|
||||||
import { ErrorCard } from "@components/ErrorCard";
|
|
||||||
import { Flex } from "@components/Flex";
|
import { Flex } from "@components/Flex";
|
||||||
import { DeleteIcon } from "@components/Icons";
|
import { DeleteIcon } from "@components/Icons";
|
||||||
import { Link } from "@components/Link";
|
import { Link } from "@components/Link";
|
||||||
import { IsFirefox } from "@utils/constants";
|
|
||||||
import { Margins } from "@utils/margins";
|
import { Margins } from "@utils/margins";
|
||||||
import { classes } from "@utils/misc";
|
import { classes } from "@utils/misc";
|
||||||
import { showItemInFolder } from "@utils/native";
|
import { showItemInFolder } from "@utils/native";
|
||||||
|
@ -251,14 +249,12 @@ function ThemesTab() {
|
||||||
>
|
>
|
||||||
Load missing Themes
|
Load missing Themes
|
||||||
</Button>
|
</Button>
|
||||||
{!IsFirefox && (
|
<Button
|
||||||
<Button
|
onClick={() => VencordNative.quickCss.openEditor()}
|
||||||
onClick={() => VencordNative.quickCss.openEditor()}
|
size={Button.Sizes.SMALL}
|
||||||
size={Button.Sizes.SMALL}
|
>
|
||||||
>
|
Edit QuickCSS
|
||||||
Edit QuickCSS
|
</Button>
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
|
@ -320,15 +316,6 @@ function ThemesTab() {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SettingsTab title="Themes">
|
<SettingsTab title="Themes">
|
||||||
{IsFirefox && (
|
|
||||||
<ErrorCard>
|
|
||||||
<Forms.FormTitle tag="h5">Warning</Forms.FormTitle>
|
|
||||||
<Forms.FormText>
|
|
||||||
You are using Firefox. Expect the vast majority of themes to not work.
|
|
||||||
If this is a problem, use a chromium browser or Discord Desktop / Vesktop.
|
|
||||||
</Forms.FormText>
|
|
||||||
</ErrorCard>
|
|
||||||
)}
|
|
||||||
<TabBar
|
<TabBar
|
||||||
type="top"
|
type="top"
|
||||||
look="brand"
|
look="brand"
|
||||||
|
|
|
@ -21,7 +21,6 @@ import { Settings, useSettings } from "@api/Settings";
|
||||||
import { classNameFactory } from "@api/Styles";
|
import { classNameFactory } from "@api/Styles";
|
||||||
import DonateButton from "@components/DonateButton";
|
import DonateButton from "@components/DonateButton";
|
||||||
import { ErrorCard } from "@components/ErrorCard";
|
import { ErrorCard } from "@components/ErrorCard";
|
||||||
import { IsFirefox } from "@utils/constants";
|
|
||||||
import { Margins } from "@utils/margins";
|
import { Margins } from "@utils/margins";
|
||||||
import { identity } from "@utils/misc";
|
import { identity } from "@utils/misc";
|
||||||
import { relaunch, showItemInFolder } from "@utils/native";
|
import { relaunch, showItemInFolder } from "@utils/native";
|
||||||
|
@ -110,14 +109,12 @@ function VencordSettings() {
|
||||||
Restart Client
|
Restart Client
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{!IsFirefox && (
|
<Button
|
||||||
<Button
|
onClick={() => VencordNative.quickCss.openEditor()}
|
||||||
onClick={() => VencordNative.quickCss.openEditor()}
|
size={Button.Sizes.SMALL}
|
||||||
size={Button.Sizes.SMALL}
|
disabled={settingsDir === "Loading..."}>
|
||||||
disabled={settingsDir === "Loading..."}>
|
Open QuickCSS File
|
||||||
Open QuickCSS File
|
</Button>
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
{!IS_WEB && (
|
{!IS_WEB && (
|
||||||
<Button
|
<Button
|
||||||
onClick={() => showItemInFolder(settingsDir)}
|
onClick={() => showItemInFolder(settingsDir)}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { DataStore } from "@api/index";
|
import { DataStore } from "@api/index";
|
||||||
import { Devs, IsFirefox, SUPPORT_CHANNEL_ID } from "@utils/constants";
|
import { Devs, SUPPORT_CHANNEL_ID } from "@utils/constants";
|
||||||
import { isPluginDev } from "@utils/misc";
|
import { isPluginDev } from "@utils/misc";
|
||||||
import { makeCodeblock } from "@utils/text";
|
import { makeCodeblock } from "@utils/text";
|
||||||
import definePlugin from "@utils/types";
|
import definePlugin from "@utils/types";
|
||||||
|
@ -30,7 +30,6 @@ import plugins from "~plugins";
|
||||||
import settings from "./settings";
|
import settings from "./settings";
|
||||||
|
|
||||||
const REMEMBER_DISMISS_KEY = "Vencord-SupportHelper-Dismiss";
|
const REMEMBER_DISMISS_KEY = "Vencord-SupportHelper-Dismiss";
|
||||||
const FIREFOX_DISMISS_KEY = "Vencord-Firefox-Warning-Dismiss";
|
|
||||||
|
|
||||||
const AllowedChannelIds = [
|
const AllowedChannelIds = [
|
||||||
SUPPORT_CHANNEL_ID,
|
SUPPORT_CHANNEL_ID,
|
||||||
|
@ -116,22 +115,6 @@ ${makeCodeblock(enabledPlugins.join(", ") + "\n\n" + enabledApiPlugins.join(", "
|
||||||
onConfirm: rememberDismiss
|
onConfirm: rememberDismiss
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsFirefox) {
|
|
||||||
const rememberDismiss = () => DataStore.set(FIREFOX_DISMISS_KEY, true);
|
|
||||||
|
|
||||||
Alerts.show({
|
|
||||||
title: "Hold on!",
|
|
||||||
body: <div>
|
|
||||||
<Forms.FormText>You are using Firefox.</Forms.FormText>
|
|
||||||
<Forms.FormText>Due to Firefox's stupid extension guidelines, most themes and many plugins will not function correctly.</Forms.FormText>
|
|
||||||
<Forms.FormText>Do not report bugs. Do not ask for help with broken plugins.</Forms.FormText>
|
|
||||||
<Forms.FormText>Instead, use a chromium browser, Discord Desktop, or Vesktop.</Forms.FormText>
|
|
||||||
</div>,
|
|
||||||
onCancel: rememberDismiss,
|
|
||||||
onConfirm: rememberDismiss
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -389,5 +389,3 @@ export const DevsById = /* #__PURE__*/ (() =>
|
||||||
.map(([_, v]) => [v.id, v] as const)
|
.map(([_, v]) => [v.id, v] as const)
|
||||||
))
|
))
|
||||||
)() as Record<string, Dev>;
|
)() as Record<string, Dev>;
|
||||||
|
|
||||||
export const IsFirefox = IS_EXTENSION && navigator.userAgent.toLowerCase().includes("firefox");
|
|
||||||
|
|
Loading…
Reference in a new issue