arrpc: refactor for use in vesktop
This commit is contained in:
parent
926af0d1cd
commit
61cd7b4d99
1 changed files with 21 additions and 16 deletions
|
@ -58,6 +58,26 @@ export default definePlugin({
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
|
|
||||||
|
async handleEvent(e: MessageEvent<any>) {
|
||||||
|
const data = JSON.parse(e.data);
|
||||||
|
|
||||||
|
const { activity } = data;
|
||||||
|
const assets = activity?.assets;
|
||||||
|
|
||||||
|
if (assets?.large_image) assets.large_image = await lookupAsset(activity.application_id, assets.large_image);
|
||||||
|
if (assets?.small_image) assets.small_image = await lookupAsset(activity.application_id, assets.small_image);
|
||||||
|
|
||||||
|
if (activity) {
|
||||||
|
const appId = activity.application_id;
|
||||||
|
apps[appId] ||= await lookupApp(appId);
|
||||||
|
|
||||||
|
const app = apps[appId];
|
||||||
|
activity.name ||= app.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
FluxDispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...data });
|
||||||
|
},
|
||||||
|
|
||||||
async start() {
|
async start() {
|
||||||
// ArmCord comes with its own arRPC implementation, so this plugin just confuses users
|
// ArmCord comes with its own arRPC implementation, so this plugin just confuses users
|
||||||
if ("armcord" in window) return;
|
if ("armcord" in window) return;
|
||||||
|
@ -65,22 +85,7 @@ export default definePlugin({
|
||||||
if (ws) ws.close();
|
if (ws) ws.close();
|
||||||
ws = new WebSocket("ws://127.0.0.1:1337"); // try to open WebSocket
|
ws = new WebSocket("ws://127.0.0.1:1337"); // try to open WebSocket
|
||||||
|
|
||||||
ws.onmessage = async e => { // on message, set status to data
|
ws.onmessage = this.handleEvent;
|
||||||
const data = JSON.parse(e.data);
|
|
||||||
|
|
||||||
if (data.activity?.assets?.large_image) data.activity.assets.large_image = await lookupAsset(data.activity.application_id, data.activity.assets.large_image);
|
|
||||||
if (data.activity?.assets?.small_image) data.activity.assets.small_image = await lookupAsset(data.activity.application_id, data.activity.assets.small_image);
|
|
||||||
|
|
||||||
if (data.activity) {
|
|
||||||
const appId = data.activity.application_id;
|
|
||||||
apps[appId] ||= await lookupApp(appId);
|
|
||||||
|
|
||||||
const app = apps[appId];
|
|
||||||
data.activity.name ||= app.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
FluxDispatcher.dispatch({ type: "LOCAL_ACTIVITY_UPDATE", ...data });
|
|
||||||
};
|
|
||||||
|
|
||||||
const connectionSuccessful = await new Promise(res => setTimeout(() => res(ws.readyState === WebSocket.OPEN), 1000)); // check if open after 1s
|
const connectionSuccessful = await new Promise(res => setTimeout(() => res(ws.readyState === WebSocket.OPEN), 1000)); // check if open after 1s
|
||||||
if (!connectionSuccessful) {
|
if (!connectionSuccessful) {
|
||||||
|
|
Loading…
Reference in a new issue