diff --git a/src/client/RPCClient.ts b/src/client/RPCClient.ts index efb73a8..928d66a 100644 --- a/src/client/RPCClient.ts +++ b/src/client/RPCClient.ts @@ -1,13 +1,7 @@ const { Client } = require('discord-rpc'); // eslint-disable-line -import { - Disposable, - StatusBarItem, - workspace, - Uri, - window -} from 'vscode'; +import { Disposable, StatusBarItem, Uri, window, workspace } from 'vscode'; import * as vsls from 'vsls'; -import Activity, { State } from '../structures/Activity'; +import Activity from '../structures/Activity'; import Logger from '../structures/Logger'; const clipboardy = require('clipboardy'); // eslint-disable-line @@ -29,44 +23,44 @@ export default class RPCClient implements Disposable { this.statusBarIcon = statusBarIcon; } - public get client(): any { + public get client() { return this._rpc; } - public async setActivity(workspaceElapsedTime: boolean = false): Promise { + public async setActivity(workspaceElapsedTime = false) { if (!this._rpc) return; const activity = await this._activity.generate(workspaceElapsedTime); Logger.log('Sending activity to Discord.'); this._rpc.setActivity(activity); } - public async allowSpectate(): Promise { + public async allowSpectate() { if (!this._rpc) return; Logger.log('Allowed spectating.'); Logger.log('Sending spectate activity to Discord.'); await this._activity.allowSpectate(); } - public async disableSpectate(): Promise { + public async disableSpectate() { if (!this._rpc) return; Logger.log('Disabled spectating.'); await this._activity.disableSpectate(); } - public async allowJoinRequests(): Promise { + public async allowJoinRequests() { if (!this._rpc) return; Logger.log('Allowed join requests.'); Logger.log('Sending join activity to Discord.'); await this._activity.allowJoinRequests(); } - public async disableJoinRequests(): Promise { + public async disableJoinRequests() { if (!this._rpc) return; Logger.log('Disabled join requests.'); await this._activity.disableJoinRequests(); } - public async login(): Promise { + public async login() { if (this._rpc) return; this._rpc = new Client({ transport: 'ipc' }); Logger.log('Logging into RPC.'); @@ -134,11 +128,11 @@ export default class RPCClient implements Disposable { const liveshare = await vsls.getApi(); if (!liveshare) return; - liveshare.onDidChangeSession(({ session }: { session: vsls.Session }): State | void => { + liveshare.onDidChangeSession(({ session }) => { if (session.id) return this._activity.changePartyId(session.id); return this._activity.changePartyId(); }); - liveshare.onDidChangePeers(({ added, removed }: { added: vsls.Peer[]; removed: vsls.Peer[] }): State | void => { + liveshare.onDidChangePeers(({ added, removed }) => { if (added.length) return this._activity.increasePartySize(added.length); else if (removed.length) return this._activity.decreasePartySize(removed.length); }); @@ -155,7 +149,7 @@ export default class RPCClient implements Disposable { await this._rpc.login({ clientId: this._clientId }); } - public async dispose(): Promise { + public async dispose() { this._activity.dispose(); try { if (this._rpc) await this._rpc.destroy(); diff --git a/src/extension.ts b/src/extension.ts index 8164b4e..64a0d33 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,11 +1,4 @@ -import { - commands, - ExtensionContext, - StatusBarAlignment, - StatusBarItem, - window, - workspace -} from 'vscode'; +import { commands, ExtensionContext, StatusBarAlignment, StatusBarItem, window, workspace } from 'vscode'; import RPCClient from './client/RPCClient'; import Logger from './structures/Logger'; const { register } = require('discord-rpc'); // eslint-disable-line @@ -19,7 +12,7 @@ const config = workspace.getConfiguration('discord'); register(config.get('clientID')); const rpc = new RPCClient(config.get('clientID')!, statusBarIcon); -export async function activate(context: ExtensionContext): Promise { +export async function activate(context: ExtensionContext) { Logger.log('Discord Presence activated!'); let isWorkspaceExcluded = false; @@ -29,7 +22,7 @@ export async function activate(context: ExtensionContext): Promise { const regex = new RegExp(pattern); const folders = workspace.workspaceFolders; if (!folders) break; - if (folders.some((folder): boolean => regex.test(folder.uri.fsPath))) { + if (folders.some(folder => regex.test(folder.uri.fsPath))) { isWorkspaceExcluded = true; break; } @@ -106,8 +99,8 @@ export async function activate(context: ExtensionContext): Promise { context.subscriptions.push(enabler, disabler, reconnecter, disconnect, allowSpectate, disableSpectate, allowJoinRequests, disableJoinRequests); } -export async function deactivate(): Promise { +export async function deactivate() { await rpc.dispose(); } -process.on('unhandledRejection', (err): void => Logger.log(err as string)); +process.on('unhandledRejection', err => Logger.log(err as string)); diff --git a/src/structures/Activity.ts b/src/structures/Activity.ts index 7dab9dd..b6a6808 100644 --- a/src/structures/Activity.ts +++ b/src/structures/Activity.ts @@ -1,13 +1,8 @@ import { basename, parse, sep } from 'path'; -import { - debug, - Disposable, - env, - window, - workspace -} from 'vscode'; +import { debug, Disposable, env, window, workspace } from 'vscode'; import * as vsls from 'vsls'; const lang = require('../data/languages.json'); // eslint-disable-line + const knownExtentions: { [key: string]: { image: string } } = lang.knownExtentions; const knownLanguages: string[] = lang.knownLanguages; @@ -43,13 +38,13 @@ export default class Activity implements Disposable { private readonly _config = workspace.getConfiguration('discord'); - private _lastKnownFile: string = ''; + private _lastKnownFile = ''; - public get state(): State | null { + public get state() { return this._state; } - public async generate(workspaceElapsedTime: boolean = false): Promise { + public async generate(workspaceElapsedTime = false) { let largeImageKey: any = 'vscode-big'; if (window.activeTextEditor) { if (window.activeTextEditor.document.languageId === 'Log') return this._state; @@ -63,7 +58,7 @@ export default class Activity implements Disposable { } this._lastKnownFile = window.activeTextEditor.document.fileName; const filename = basename(window.activeTextEditor.document.fileName); - largeImageKey = knownExtentions[Object.keys(knownExtentions).find((key): boolean => { + largeImageKey = knownExtentions[Object.keys(knownExtentions).find(key => { if (filename.endsWith(key)) return true; const match = key.match(/^\/(.*)\/([mgiy]+)$/); if (!match) return false; @@ -84,7 +79,7 @@ export default class Activity implements Disposable { largeImageText: window.activeTextEditor ? this._config.get('largeImage')! .replace('{lang}', largeImageKey ? largeImageKey.image || largeImageKey : 'txt') - .replace('{Lang}', largeImageKey ? (largeImageKey.image || largeImageKey).toLowerCase().replace(/^\w/, (c: string): string => c.toUpperCase()) : 'Txt') + .replace('{Lang}', largeImageKey ? (largeImageKey.image || largeImageKey).toLowerCase().replace(/^\w/, (c: string) => c.toUpperCase()) : 'Txt') .replace('{LANG}', largeImageKey ? (largeImageKey.image || largeImageKey).toUpperCase() : 'TXT') || window.activeTextEditor.document.languageId.padEnd(2, '\u200b') : this._config.get('largeImageIdle'), @@ -95,7 +90,7 @@ export default class Activity implements Disposable { return this._state; } - public async allowSpectate(): Promise { + public async allowSpectate() { if (!this._state) return; const liveshare = await vsls.getApi(); if (!liveshare) return; @@ -109,7 +104,7 @@ export default class Activity implements Disposable { return this._state; } - public async disableSpectate(): Promise { + public async disableSpectate() { if (!this._state) return; const liveshare = await vsls.getApi(); if (!liveshare) return; @@ -121,7 +116,7 @@ export default class Activity implements Disposable { return this._state; } - public async allowJoinRequests(): Promise { + public async allowJoinRequests() { if (!this._state) return; const liveshare = await vsls.getApi(); if (!liveshare) return; @@ -138,7 +133,7 @@ export default class Activity implements Disposable { return this._state; } - public async disableJoinRequests(): Promise { + public async disableJoinRequests() { if (!this._state) return; const liveshare = await vsls.getApi(); if (!liveshare) return; @@ -153,7 +148,7 @@ export default class Activity implements Disposable { return this._state; } - public changePartyId(id?: string): State | void { + public changePartyId(id?: string) { if (!this._state) return; if (!id) { delete this._state.partyId; @@ -174,7 +169,7 @@ export default class Activity implements Disposable { return this._state; } - public increasePartySize(size?: number): State | void { + public increasePartySize(size?: number) { if (!this._state) return; if (this.state && this._state.partySize === 5) return; this._state = { @@ -185,7 +180,7 @@ export default class Activity implements Disposable { return this._state; } - public decreasePartySize(size?: number): State | void { + public decreasePartySize(size?: number) { if (!this._state) return; if (this.state && this._state.partySize === 1) return; this._state = { @@ -196,12 +191,12 @@ export default class Activity implements Disposable { return this._state; } - public dispose(): void { + public dispose() { this._state = null; this._lastKnownFile = ''; } - private async _generateDetails(debugging: string, editing: string, idling: string, largeImageKey: any): Promise { + private async _generateDetails(debugging: string, editing: string, idling: string, largeImageKey: any) { let raw: string = this._config.get(idling)!.replace('{null}', empty); let filename = null; let dirname = null; @@ -240,7 +235,7 @@ export default class Activity implements Disposable { .replace('{fulldirname}', fullDirname!) .replace('{workspace}', checkState && workspaceFolder ? workspaceFolder.name : this._config.get('lowerDetailsNotFound')!.replace('{null}', empty)) .replace('{lang}', largeImageKey ? largeImageKey.image || largeImageKey : 'txt') - .replace('{Lang}', largeImageKey ? (largeImageKey.image || largeImageKey).toLowerCase().replace(/^\w/, (c: string): string => c.toUpperCase()) : 'Txt') + .replace('{Lang}', largeImageKey ? (largeImageKey.image || largeImageKey).toLowerCase().replace(/^\w/, (c: string) => c.toUpperCase()) : 'Txt') .replace('{LANG}', largeImageKey ? (largeImageKey.image || largeImageKey).toUpperCase() : 'TXT'); if (totalLines) raw = raw!.replace('{totallines}', totalLines); if (size) raw = raw!.replace('{filesize}', size); @@ -251,7 +246,7 @@ export default class Activity implements Disposable { return raw; } - private async _generateFileDetails(str?: string): Promise { + private async _generateFileDetails(str?: string) { const fileDetail: FileDetail = {}; if (!str) return fileDetail; @@ -261,11 +256,11 @@ export default class Activity implements Disposable { } if (str.includes('{currentline}')) { - fileDetail.currentLine = (window.activeTextEditor.selection.active.line as number + 1).toLocaleString(); + fileDetail.currentLine = (window.activeTextEditor.selection.active.line + 1).toLocaleString(); } if (str.includes('{currentcolumn}')) { - fileDetail.currentColumn = (window.activeTextEditor.selection.active.character as number + 1).toLocaleString(); + fileDetail.currentColumn = (window.activeTextEditor.selection.active.character + 1).toLocaleString(); } if (str.includes('{filesize}')) { diff --git a/src/structures/Logger.ts b/src/structures/Logger.ts index 6f0ae5c..357d463 100644 --- a/src/structures/Logger.ts +++ b/src/structures/Logger.ts @@ -4,11 +4,11 @@ import { OutputChannel, window } from 'vscode'; export default class Logger { private static _output: OutputChannel; - private static _setup(): void { + private static _setup() { this._output = this._output || window.createOutputChannel('Discord Presence'); } - public static log(message: string): void { + public static log(message: string) { if (!this._output) this._setup(); this._output.appendLine(message); }