HeliosLauncher/src/main/discordwrapper.ts

50 lines
1.6 KiB
TypeScript

import { LoggerUtil } from './loggerutil'
import { Client, Presence } from 'discord-rpc'
// Work in progress
const logger = new LoggerUtil('%c[DiscordWrapper]', 'color: #7289da; font-weight: bold')
let client: Client
let activity: Presence
// TODO types for these settings
export function initRPC(genSettings: any, servSettings: any, initialDetails = 'Waiting for Client..'){
client = new Client({ transport: 'ipc' })
activity = {
details: initialDetails,
state: 'Server: ' + servSettings.shortId,
largeImageKey: servSettings.largeImageKey,
largeImageText: servSettings.largeImageText,
smallImageKey: genSettings.smallImageKey,
smallImageText: genSettings.smallImageText,
startTimestamp: new Date().getTime(),
instance: false
}
client.on('ready', () => {
logger.log('Discord RPC Connected')
client.setActivity(activity)
})
client.login({clientId: genSettings.clientId}).catch(error => {
if(error.message.includes('ENOENT')) {
logger.log('Unable to initialize Discord Rich Presence, no client detected.')
} else {
logger.log('Unable to initialize Discord Rich Presence: ' + error.message, error)
}
})
}
export function updateDetails(details: string){
activity.details = details
client.setActivity(activity)
}
export function shutdownRPC(){
if(!client) return
client.clearActivity()
client.destroy()
client = null as unknown as Client // TODO cleanup
activity = null as unknown as Presence // TODO cleanup
}