60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
const { Client } = require('discord-rpc');
|
|
const log = require('electron-log');
|
|
|
|
let client;
|
|
let activity;
|
|
|
|
const initialAppStartup = Math.floor(Date.now() / 1000);
|
|
|
|
const defaultValue = {
|
|
details: 'Idle',
|
|
startTimestamp: initialAppStartup,
|
|
largeImageKey: 'default_big',
|
|
largeImageText: 'GDLauncher - A Custom Minecraft Launcher',
|
|
instance: false
|
|
};
|
|
|
|
exports.initRPC = () => {
|
|
client = new Client({ transport: 'ipc' });
|
|
|
|
activity = defaultValue;
|
|
|
|
client.on('ready', () => {
|
|
log.log('Discord RPC Connected');
|
|
client.setActivity(activity);
|
|
});
|
|
|
|
client.login({ clientId: '555898932467597312' }).catch(error => {
|
|
if (error.message.includes('ENOENT')) {
|
|
log.error('Unable to initialize Discord RPC, no client detected.');
|
|
} else {
|
|
log.error('Unable to initialize Discord RPC:', error);
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.update = details => {
|
|
if (!client) return;
|
|
activity = {
|
|
...activity,
|
|
startTimestamp: Math.floor(Date.now() / 1000),
|
|
details: `Playing ${details}`
|
|
};
|
|
client.setActivity(activity);
|
|
};
|
|
|
|
exports.reset = () => {
|
|
if (!client) return;
|
|
activity = defaultValue;
|
|
activity.startTimestamp = initialAppStartup;
|
|
client.setActivity(activity);
|
|
};
|
|
|
|
exports.shutdownRPC = () => {
|
|
if (!client) return;
|
|
client.clearActivity();
|
|
client.destroy();
|
|
client = null;
|
|
activity = null;
|
|
};
|