XSOverlay: Return old API for compatibility (#2753)

This commit is contained in:
Nyako 2024-08-02 14:19:15 -04:00 committed by GitHub
parent e99eec50bc
commit 09c6c16cf9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 1 deletions

View file

@ -8,7 +8,7 @@ import { definePluginSettings } from "@api/Settings";
import { makeRange } from "@components/PluginSettings/components";
import { Devs } from "@utils/constants";
import { Logger } from "@utils/Logger";
import definePlugin, { OptionType, ReporterTestable } from "@utils/types";
import definePlugin, { OptionType, PluginNative, ReporterTestable } from "@utils/types";
import { findByCodeLazy, findLazy } from "@webpack";
import { Button, ChannelStore, GuildStore, UserStore } from "@webpack/common";
import type { Channel, Embed, GuildMember, MessageAttachment, User } from "discord-types/general";
@ -102,6 +102,12 @@ const settings = definePluginSettings({
await start();
}
},
preferUDP: {
type: OptionType.BOOLEAN,
description: "Enable if you use an older build of XSOverlay unable to connect through websockets. This setting is ignored on web.",
default: false,
disabled: () => IS_WEB
},
botNotifications: {
type: OptionType.BOOLEAN,
description: "Allow bot notifications",
@ -178,6 +184,8 @@ async function start() {
});
}
const Native = VencordNative.pluginHelpers.XSOverlay as PluginNative<typeof import("./native")>;
export default definePlugin({
name: "XSOverlay",
description: "Forwards discord notifications to XSOverlay, for easy viewing in VR",
@ -349,6 +357,10 @@ function sendOtherNotif(content: string, titleString: string) {
}
async function sendToOverlay(notif: NotificationObject) {
if (!IS_WEB && settings.store.preferUDP) {
Native.sendToOverlay(notif);
return;
}
const apiObject: ApiObject = {
sender: "Vencord",
target: "xsoverlay",

View file

@ -0,0 +1,16 @@
/*
* Vencord, a Discord client mod
* Copyright (c) 2023 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { createSocket, Socket } from "dgram";
let xsoSocket: Socket;
export function sendToOverlay(_, data: any) {
data.messageType = data.type;
const json = JSON.stringify(data);
xsoSocket ??= createSocket("udp4");
xsoSocket.send(json, 42069, "127.0.0.1");
}