refactor: use workspace.fs api
This commit is contained in:
parent
82dfef636b
commit
531fbaf66d
4 changed files with 43 additions and 39 deletions
|
@ -190,7 +190,7 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^12.7.1",
|
"@types/node": "^12.7.1",
|
||||||
"@types/vscode": "^1.36.0",
|
"@types/vscode": "^1.37.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^1.13.0",
|
"@typescript-eslint/eslint-plugin": "^1.13.0",
|
||||||
"@typescript-eslint/parser": "^1.13.0",
|
"@typescript-eslint/parser": "^1.13.0",
|
||||||
"clean-webpack-plugin": "^3.0.0",
|
"clean-webpack-plugin": "^3.0.0",
|
||||||
|
@ -203,7 +203,7 @@
|
||||||
"webpack-cli": "^3.3.6"
|
"webpack-cli": "^3.3.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.31.0"
|
"vscode": "^1.37.0"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": "marine/node"
|
"extends": "marine/node"
|
||||||
|
|
|
@ -33,9 +33,9 @@ export default class RPCClient implements Disposable {
|
||||||
return this._rpc;
|
return this._rpc;
|
||||||
}
|
}
|
||||||
|
|
||||||
public setActivity(workspaceElapsedTime: boolean = false): void {
|
public async setActivity(workspaceElapsedTime: boolean = false): Promise<void> {
|
||||||
if (!this._rpc) return;
|
if (!this._rpc) return;
|
||||||
const activity = this._activity.generate(workspaceElapsedTime);
|
const activity = await this._activity.generate(workspaceElapsedTime);
|
||||||
Logger.log('Sending activity to Discord.');
|
Logger.log('Sending activity to Discord.');
|
||||||
this._rpc.setActivity(activity);
|
this._rpc.setActivity(activity);
|
||||||
}
|
}
|
||||||
|
@ -79,11 +79,11 @@ export default class RPCClient implements Disposable {
|
||||||
setTimeout(() => this.statusBarIcon.text = '$(globe)', 5000);
|
setTimeout(() => this.statusBarIcon.text = '$(globe)', 5000);
|
||||||
|
|
||||||
if (activityTimer) clearInterval(activityTimer);
|
if (activityTimer) clearInterval(activityTimer);
|
||||||
this.setActivity();
|
await this.setActivity();
|
||||||
|
|
||||||
activityTimer = setInterval(() => {
|
activityTimer = setInterval(async () => {
|
||||||
this.config = workspace.getConfiguration('discord');
|
this.config = workspace.getConfiguration('discord');
|
||||||
this.setActivity(this.config.get<boolean>('workspaceElapsedTime'));
|
await this.setActivity(this.config.get<boolean>('workspaceElapsedTime'));
|
||||||
}, 10000);
|
}, 10000);
|
||||||
|
|
||||||
this._rpc.subscribe('ACTIVITY_SPECTATE', async ({ secret }: { secret: string }) => {
|
this._rpc.subscribe('ACTIVITY_SPECTATE', async ({ secret }: { secret: string }) => {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { statSync } from 'fs';
|
|
||||||
import { basename, parse, sep } from 'path';
|
import { basename, parse, sep } from 'path';
|
||||||
import {
|
import {
|
||||||
debug,
|
debug,
|
||||||
|
@ -50,16 +49,16 @@ export default class Activity implements Disposable {
|
||||||
return this._state;
|
return this._state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public generate(workspaceElapsedTime: boolean = false): State | null {
|
public async generate(workspaceElapsedTime: boolean = false): Promise<State | null> {
|
||||||
let largeImageKey: any = 'vscode-big';
|
let largeImageKey: any = 'vscode-big';
|
||||||
if (window.activeTextEditor) {
|
if (window.activeTextEditor) {
|
||||||
if (window.activeTextEditor.document.languageId === 'Log') return this._state;
|
if (window.activeTextEditor.document.languageId === 'Log') return this._state;
|
||||||
if (window.activeTextEditor.document.fileName === this._lastKnownFile) {
|
if (window.activeTextEditor.document.fileName === this._lastKnownFile) {
|
||||||
return this._state = {
|
return this._state = {
|
||||||
...this._state,
|
...this._state,
|
||||||
details: this._generateDetails('detailsDebugging', 'detailsEditing', 'detailsIdle', this._state!.largeImageKey),
|
details: await this._generateDetails('detailsDebugging', 'detailsEditing', 'detailsIdle', this._state!.largeImageKey),
|
||||||
smallImageKey: debug.activeDebugSession ? 'debug' : env.appName.includes('Insiders') ? 'vscode-insiders' : 'vscode',
|
smallImageKey: debug.activeDebugSession ? 'debug' : env.appName.includes('Insiders') ? 'vscode-insiders' : 'vscode',
|
||||||
state: this._generateDetails('lowerDetailsDebugging', 'lowerDetailsEditing', 'lowerDetailsIdle', this._state!.largeImageKey)
|
state: await this._generateDetails('lowerDetailsDebugging', 'lowerDetailsEditing', 'lowerDetailsIdle', this._state!.largeImageKey)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
this._lastKnownFile = window.activeTextEditor.document.fileName;
|
this._lastKnownFile = window.activeTextEditor.document.fileName;
|
||||||
|
@ -78,9 +77,9 @@ export default class Activity implements Disposable {
|
||||||
|
|
||||||
this._state = {
|
this._state = {
|
||||||
...this._state,
|
...this._state,
|
||||||
details: this._generateDetails('detailsDebugging', 'detailsEditing', 'detailsIdle', largeImageKey),
|
details: await this._generateDetails('detailsDebugging', 'detailsEditing', 'detailsIdle', largeImageKey),
|
||||||
startTimestamp: window.activeTextEditor && previousTimestamp && workspaceElapsedTime ? previousTimestamp : window.activeTextEditor ? new Date().getTime() : null,
|
startTimestamp: window.activeTextEditor && previousTimestamp && workspaceElapsedTime ? previousTimestamp : window.activeTextEditor ? new Date().getTime() : null,
|
||||||
state: this._generateDetails('lowerDetailsDebugging', 'lowerDetailsEditing', 'lowerDetailsIdle', largeImageKey),
|
state: await this._generateDetails('lowerDetailsDebugging', 'lowerDetailsEditing', 'lowerDetailsIdle', largeImageKey),
|
||||||
largeImageKey: largeImageKey ? largeImageKey.image || largeImageKey : 'txt',
|
largeImageKey: largeImageKey ? largeImageKey.image || largeImageKey : 'txt',
|
||||||
largeImageText: window.activeTextEditor
|
largeImageText: window.activeTextEditor
|
||||||
? this._config.get<string>('largeImage')!
|
? this._config.get<string>('largeImage')!
|
||||||
|
@ -202,7 +201,7 @@ export default class Activity implements Disposable {
|
||||||
this._lastKnownFile = '';
|
this._lastKnownFile = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
private _generateDetails(debugging: string, editing: string, idling: string, largeImageKey: any): string {
|
private async _generateDetails(debugging: string, editing: string, idling: string, largeImageKey: any): Promise<string> {
|
||||||
let raw: string = this._config.get<string>(idling)!.replace('{null}', empty);
|
let raw: string = this._config.get<string>(idling)!.replace('{null}', empty);
|
||||||
let filename = null;
|
let filename = null;
|
||||||
let dirname = null;
|
let dirname = null;
|
||||||
|
@ -233,7 +232,7 @@ export default class Activity implements Disposable {
|
||||||
raw = this._config.get<string>(editing)!;
|
raw = this._config.get<string>(editing)!;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { totalLines, size, currentLine, currentColumn } = this._generateFileDetails(raw);
|
const { totalLines, size, currentLine, currentColumn } = await this._generateFileDetails(raw);
|
||||||
raw = raw!
|
raw = raw!
|
||||||
.replace('{null}', empty)
|
.replace('{null}', empty)
|
||||||
.replace('{filename}', filename)
|
.replace('{filename}', filename)
|
||||||
|
@ -252,7 +251,7 @@ export default class Activity implements Disposable {
|
||||||
return raw;
|
return raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _generateFileDetails(str?: string): FileDetail {
|
private async _generateFileDetails(str?: string): Promise<FileDetail> {
|
||||||
const fileDetail: FileDetail = {};
|
const fileDetail: FileDetail = {};
|
||||||
if (!str) return fileDetail;
|
if (!str) return fileDetail;
|
||||||
|
|
||||||
|
@ -271,7 +270,7 @@ export default class Activity implements Disposable {
|
||||||
|
|
||||||
if (str.includes('{filesize}')) {
|
if (str.includes('{filesize}')) {
|
||||||
let currentDivision = 0;
|
let currentDivision = 0;
|
||||||
let { size } = statSync(window.activeTextEditor.document.fileName);
|
let { size } = await workspace.fs.stat(window.activeTextEditor.document.uri);
|
||||||
const originalSize = size;
|
const originalSize = size;
|
||||||
if (originalSize > 1000) {
|
if (originalSize > 1000) {
|
||||||
size /= 1000;
|
size /= 1000;
|
||||||
|
|
49
yarn.lock
49
yarn.lock
|
@ -69,10 +69,10 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
"@types/vscode@^1.36.0":
|
"@types/vscode@^1.37.0":
|
||||||
version "1.36.0"
|
version "1.37.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.36.0.tgz#ae60242e893d9eda9a0d96d51ef56f1a3fae14ed"
|
resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.37.0.tgz#fb26ffabfabcd50ba70e8b454122a91b84548080"
|
||||||
integrity sha512-SbHR3Q5g/C3N+Ila3KrRf1rSZiyHxWdOZ7X3yFHXzw6HrvRLuVZrxnwEX0lTBMRpH9LkwZdqRTgXW+D075jxkg==
|
integrity sha512-PRfeuqYuzk3vjf+puzxltIUWC+AhEGYpFX29/37w30DQSQnpf5AgMVf7GDBAdmTbWTBou+EMFz/Ne6XCM/KxzQ==
|
||||||
|
|
||||||
"@types/webpack@^4.4.31":
|
"@types/webpack@^4.4.31":
|
||||||
version "4.32.1"
|
version "4.32.1"
|
||||||
|
@ -454,9 +454,9 @@ balanced-match@^1.0.0:
|
||||||
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
||||||
|
|
||||||
base64-js@^1.0.2:
|
base64-js@^1.0.2:
|
||||||
version "1.3.0"
|
version "1.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
|
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
|
||||||
integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
|
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
|
||||||
|
|
||||||
base@^0.11.1:
|
base@^0.11.1:
|
||||||
version "0.11.2"
|
version "0.11.2"
|
||||||
|
@ -1602,9 +1602,9 @@ globby@^6.1.0:
|
||||||
pinkie-promise "^2.0.0"
|
pinkie-promise "^2.0.0"
|
||||||
|
|
||||||
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
||||||
version "4.2.0"
|
version "4.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d"
|
||||||
integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
|
integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==
|
||||||
|
|
||||||
has-flag@^3.0.0:
|
has-flag@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
|
@ -2965,7 +2965,7 @@ rxjs@^6.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
|
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
|
||||||
version "5.2.0"
|
version "5.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
|
||||||
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
|
||||||
|
@ -3230,11 +3230,11 @@ string-width@^3.0.0, string-width@^3.1.0:
|
||||||
strip-ansi "^5.1.0"
|
strip-ansi "^5.1.0"
|
||||||
|
|
||||||
string_decoder@^1.0.0:
|
string_decoder@^1.0.0:
|
||||||
version "1.2.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
|
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
||||||
integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
|
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
|
||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "~5.1.0"
|
safe-buffer "~5.2.0"
|
||||||
|
|
||||||
string_decoder@~1.1.1:
|
string_decoder@~1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -3431,9 +3431,9 @@ tslib@^1.8.1, tslib@^1.9.0:
|
||||||
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
|
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
|
||||||
|
|
||||||
tsutils@^3.7.0:
|
tsutils@^3.7.0:
|
||||||
version "3.14.1"
|
version "3.17.1"
|
||||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.1.tgz#f1d2b93d2a0876481f2f1f98c25ba42bbd7ee860"
|
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
|
||||||
integrity sha512-kiuZzD1uUA5DxGj/uxbde+ymp6VVdAxdzOIlAFbYKrPyla8/uiJ9JLBm1QsPhOm4Muj0/+cWEDP99yoCUcSl6Q==
|
integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.8.1"
|
tslib "^1.8.1"
|
||||||
|
|
||||||
|
@ -3547,11 +3547,16 @@ util@^0.11.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
inherits "2.0.3"
|
inherits "2.0.3"
|
||||||
|
|
||||||
v8-compile-cache@2.0.3, v8-compile-cache@^2.0.3:
|
v8-compile-cache@2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
|
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
|
||||||
integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
|
integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
|
||||||
|
|
||||||
|
v8-compile-cache@^2.0.3:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
|
||||||
|
integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
|
||||||
|
|
||||||
vm-browserify@^1.0.1:
|
vm-browserify@^1.0.1:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
|
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
|
||||||
|
@ -3589,9 +3594,9 @@ webpack-cli@^3.3.6:
|
||||||
yargs "13.2.4"
|
yargs "13.2.4"
|
||||||
|
|
||||||
webpack-sources@^1.4.0, webpack-sources@^1.4.1:
|
webpack-sources@^1.4.0, webpack-sources@^1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.1.tgz#b91b2c5b1c4e890ff50d1d35b7fa3657040da1da"
|
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
|
||||||
integrity sha512-XSz38193PTo/1csJabKaV4b53uRVotlMgqJXm3s3eje0Bu6gQTxYDqpD38CmQfDBA+gN+QqaGjasuC8I/7eW3Q==
|
integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
source-list-map "^2.0.0"
|
source-list-map "^2.0.0"
|
||||||
source-map "~0.6.1"
|
source-map "~0.6.1"
|
||||||
|
|
Loading…
Reference in a new issue