diff --git a/src/plugins/webPWA/index.ts b/src/plugins/webPWA/index.ts new file mode 100644 index 00000000000..fcdfecfd356 --- /dev/null +++ b/src/plugins/webPWA/index.ts @@ -0,0 +1,115 @@ +/* + * Vencord, a Discord client mod + * Copyright (c) 2024 Vendicated and contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ +import "./styles.css"; + +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; +import { filters, waitFor } from "@webpack"; +import { RelationshipStore } from "@webpack/common"; + +const manifest = { + name: "Discord", + short_name: "Discord", + start_url: "https://discord.com/channels/@me", // URL when PWA launches + display: "fullscreen", + display_override: ["window-controls-overlay"], + lang: "en-US", + background_color: "#2a2a2f", + theme_color: "#2a2a2f", + scope: "https://discord.com", // scope of all possible URL"s + description: "Imagine a place...", + orientation: "landscape", + icons: [ + { + src: "data:image/png;base64,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", + sizes: "256x256", + type: "image/png" + } + ] +}; + +const isMac = navigator.platform.startsWith("Mac"); + +let link: HTMLLinkElement | undefined; + +let GuildReadStateStore: any; +let NotificationSettingsStore: any; + +function setBadge() { + if (!enabled) return; + try { + const mentionCount = GuildReadStateStore.getTotalMentionCount(); + const pendingRequests = RelationshipStore.getPendingCount(); + const hasUnread = GuildReadStateStore.hasAnyUnread(); + const disableUnreadBadge = NotificationSettingsStore.getDisableUnreadBadge(); + + let totalCount = mentionCount + pendingRequests; + if (!totalCount && hasUnread && !disableUnreadBadge) totalCount = -1; + + navigator.setAppBadge(totalCount); + } catch (e) { + console.error(e); + } +} + +let toFind = 3; + +function waitForAndSubscribeToStore(name: string, cb?: (m: any) => void) { + waitFor(filters.byStoreName(name), store => { + cb?.(store); + store.addChangeListener(setBadge); + + toFind--; + if (toFind === 0) setBadge(); + }); +} + +let enabled = false; + +waitForAndSubscribeToStore("GuildReadStateStore", store => (GuildReadStateStore = store)); +waitForAndSubscribeToStore("NotificationSettingsStore", store => (NotificationSettingsStore = store)); +waitForAndSubscribeToStore("RelationshipStore"); +export default definePlugin({ + name: "WebPWA", + description: "Allows Discord to be installable and usable as a PWA.", + authors: [Devs.ThaUnknown], + manifest: null, + start() { + const url = URL.createObjectURL(new Blob([JSON.stringify(manifest)], { type: "application/json" })); + enabled = true; + link = document.createElement("link"); + link.rel = "manifest"; + link.href = url; + }, + stop() { + link?.remove(); + enabled = false; + navigator.setAppBadge(0); + }, + patches: [ + { + find: "platform-web", + replacement: { + // eslint-disable-next-line no-useless-escape + match: /(?<=" platform-overlay"\):)\i/, + replace: "$self.getPlatformClass()" + } + }, + { + find: "\"NotificationSettingsStore", + replacement: { + // eslint-disable-next-line no-useless-escape + match: /\.isPlatformEmbedded(?=\?\i\.\i\.ALL)/g, + replace: "$&||true" + } + } + ], + + getPlatformClass() { + if (isMac) return "platform-osx"; + return "platform-win"; + } +}); diff --git a/src/plugins/webPWA/styles.css b/src/plugins/webPWA/styles.css new file mode 100644 index 00000000000..e44c20a62c0 --- /dev/null +++ b/src/plugins/webPWA/styles.css @@ -0,0 +1,11 @@ +/* Download Desktop button in guilds list */ +[class^=listItem_]:has([data-list-item-id=guildsnav___app-download-button]), +[class^=listItem_]:has(+ [class^=listItem_] [data-list-item-id=guildsnav___app-download-button]) { + display: none; +} + +/* Workaround for making things in the draggable area clickable again on macOS */ +.platform-osx [class*=topic_], +.platform-osx [class*=notice_] button { + -webkit-app-region: no-drag; +} \ No newline at end of file diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 70eca56fdc9..4dc49505f62 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -575,10 +575,14 @@ export const Devs = /* #__PURE__*/ Object.freeze({ name: "RamziAH", id: 1279957227612147747n, }, - SomeAspy: { + SomeAspy: { name: "SomeAspy", id: 516750892372852754n, }, + ThaUnknown: { + name: "ThaUnknown_", + id: 252390917665718273n + }, } satisfies Record); // iife so #__PURE__ works correctly