parent
c8bcc40c58
commit
81b3d2c573
@ -0,0 +1,47 @@ |
||||
/* |
||||
* SPDX-License-Identifier: GPL-3.0 |
||||
* Aerocord, a vesktop fork for older microsoft NT releases such as NT 6.0, 6.1, 6.2 and 6.3.
|
||||
* Credits to vendicated and the rest of the vesktop contribuitors for making Vesktop! |
||||
*/ |
||||
|
||||
import { filters, waitFor } from "@vencord/types/webpack"; |
||||
import { RelationshipStore } from "@vencord/types/webpack/common"; |
||||
|
||||
import { Settings } from "./settings"; |
||||
|
||||
let GuildReadStateStore: any; |
||||
let NotificationSettingsStore: any; |
||||
|
||||
export function setBadge() { |
||||
if (Settings.store.appBadge === false) 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; |
||||
|
||||
VesktopNative.app.setBadgeCount(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(); |
||||
}); |
||||
} |
||||
|
||||
waitForAndSubscribeToStore("GuildReadStateStore", store => (GuildReadStateStore = store)); |
||||
waitForAndSubscribeToStore("NotificationSettingsStore", store => (NotificationSettingsStore = store)); |
||||
waitForAndSubscribeToStore("RelationshipStore"); |
@ -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; |
||||
} |
||||
|
||||
/* FIXME: remove this once Discord fixes their css to not explode scrollbars on chromium >=121 */ |
||||
* { |
||||
scrollbar-width: unset !important; |
||||
scrollbar-color: unset !important; |
||||
} |
@ -0,0 +1,35 @@ |
||||
/* |
||||
* SPDX-License-Identifier: GPL-3.0 |
||||
* Aerocord, a vesktop fork for older microsoft NT releases such as NT 6.0, 6.1, 6.2 and 6.3.
|
||||
* Credits to vendicated and the rest of the vesktop contribuitors for making Vesktop! |
||||
*/ |
||||
|
||||
import "./fixes.css"; |
||||
|
||||
import { isWindows, localStorage } from "./utils"; |
||||
|
||||
// Make clicking Notifications focus the window
|
||||
const originalSetOnClick = Object.getOwnPropertyDescriptor(Notification.prototype, "onclick")!.set!; |
||||
Object.defineProperty(Notification.prototype, "onclick", { |
||||
set(onClick) { |
||||
originalSetOnClick.call(this, function (this: unknown) { |
||||
onClick.apply(this, arguments); |
||||
VesktopNative.win.focus(); |
||||
}); |
||||
}, |
||||
configurable: true |
||||
}); |
||||
|
||||
// Hide "Download Discord Desktop now!!!!" banner
|
||||
localStorage.setItem("hideNag", "true"); |
||||
|
||||
// FIXME: Remove eventually.
|
||||
// Originally, Vencord always used a Windows user agent. This seems to cause captchas
|
||||
// Now, we use a platform specific UA - HOWEVER, discord FOR SOME REASON????? caches
|
||||
// device props in localStorage. This code fixes their cache to properly update the platform in SuperProps
|
||||
if (!isWindows) |
||||
try { |
||||
const deviceProperties = localStorage.getItem("deviceProperties"); |
||||
if (deviceProperties && JSON.parse(deviceProperties).os === "Windows") |
||||
localStorage.removeItem("deviceProperties"); |
||||
} catch {} |
@ -0,0 +1,59 @@ |
||||
/* |
||||
* SPDX-License-Identifier: GPL-3.0 |
||||
* Aerocord, a vesktop fork for older microsoft NT releases such as NT 6.0, 6.1, 6.2 and 6.3.
|
||||
* Credits to vendicated and the rest of the vesktop contribuitors for making Vesktop! |
||||
*/ |
||||
|
||||
import "./fixes"; |
||||
import "./appBadge"; |
||||
import "./patches"; |
||||
import "./themedSplash"; |
||||
|
||||
console.log("read if cute :3"); |
||||
|
||||
export * as Components from "./components"; |
||||
import { findByPropsLazy } from "@vencord/types/webpack"; |
||||
import { FluxDispatcher } from "@vencord/types/webpack/common"; |
||||
|
||||
import SettingsUi from "./components/settings/Settings"; |
||||
import { Settings } from "./settings"; |
||||
export { Settings }; |
||||
|
||||
const InviteActions = findByPropsLazy("resolveInvite"); |
||||
|
||||
export async function openInviteModal(code: string) { |
||||
const { invite } = await InviteActions.resolveInvite(code, "Desktop Modal"); |
||||
if (!invite) return false; |
||||
|
||||
VesktopNative.win.focus(); |
||||
|
||||
FluxDispatcher.dispatch({ |
||||
type: "INVITE_MODAL_OPEN", |
||||
invite, |
||||
code, |
||||
context: "APP" |
||||
}); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
const customSettingsSections = ( |
||||
Vencord.Plugins.plugins.Settings as any as { customSections: ((ID: Record<string, unknown>) => any)[] } |
||||
).customSections; |
||||
|
||||
customSettingsSections.push(() => ({ |
||||
section: "Aerocord", |
||||
label: "Aerocord Settings", |
||||
element: SettingsUi, |
||||
className: "vc-vesktop-settings" |
||||
})); |
||||
|
||||
const arRPC = Vencord.Plugins.plugins["WebRichPresence (arRPC)"] as any as { |
||||
handleEvent(e: MessageEvent): void; |
||||
}; |
||||
|
||||
VesktopNative.arrpc.onActivity(data => { |
||||
if (!Settings.store.arRPC) return; |
||||
|
||||
arRPC.handleEvent(new MessageEvent("message", { data })); |
||||
}); |
@ -0,0 +1,30 @@ |
||||
/* |
||||
* SPDX-License-Identifier: GPL-3.0 |
||||
* Aerocord, a vesktop fork for older microsoft NT releases such as NT 6.0, 6.1, 6.2 and 6.3.
|
||||
* Credits to vendicated and the rest of the vesktop contribuitors for making Vesktop! |
||||
*/ |
||||
|
||||
import { useEffect, useReducer } from "@vencord/types/webpack/common"; |
||||
import { SettingsStore } from "shared/utils/SettingsStore"; |
||||
|
||||
export const Settings = new SettingsStore(VesktopNative.settings.get()); |
||||
Settings.addGlobalChangeListener((o, p) => VesktopNative.settings.set(o, p)); |
||||
|
||||
export function useSettings() { |
||||
const [, update] = useReducer(x => x + 1, 0); |
||||
|
||||
useEffect(() => { |
||||
Settings.addGlobalChangeListener(update); |
||||
|
||||
return () => Settings.removeGlobalChangeListener(update); |
||||
}, []); |
||||
|
||||
return Settings.store; |
||||
} |
||||
|
||||
export function getValueAndOnChange(key: keyof typeof Settings.store) { |
||||
return { |
||||
value: Settings.store[key] as any, |
||||
onChange: (value: any) => (Settings.store[key] = value) |
||||
}; |
||||
} |
Loading…
Reference in new issue