1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2020-11-23 11:25:38 -05:00
parent a614eb955f
commit c2e74918d5
2 changed files with 20 additions and 20 deletions

View File

@ -48,7 +48,7 @@ export class LensExtension {
* folder name.
*/
async getExtensionFileFolder(): Promise<string> {
return filesystemProvisionerStore.requestDirectory(this.id)
return filesystemProvisionerStore.requestDirectory(this.id);
}
get description() {

View File

@ -1,18 +1,18 @@
import { randomBytes } from "crypto"
import { SHA256 } from "crypto-js"
import { app } from "electron"
import fse from "fs-extra"
import { action, observable, toJS } from "mobx"
import path from "path"
import { BaseStore } from "../common/base-store"
import { LensExtensionId } from "../extensions/lens-extension"
import { randomBytes } from "crypto";
import { SHA256 } from "crypto-js";
import { app } from "electron";
import fse from "fs-extra";
import { action, observable, toJS } from "mobx";
import path from "path";
import { BaseStore } from "../common/base-store";
import { LensExtensionId } from "../extensions/lens-extension";
interface FSProvisionModel {
extensions: Record<string, string>; // extension names to paths
}
export class FilesystemProvisionerStore extends BaseStore<FSProvisionModel> {
@observable registeredExtensions = observable.map<LensExtensionId, string>()
@observable registeredExtensions = observable.map<LensExtensionId, string>();
private constructor() {
super({
@ -29,20 +29,20 @@ export class FilesystemProvisionerStore extends BaseStore<FSProvisionModel> {
*/
async requestDirectory(extensionName: string): Promise<string> {
if (!this.registeredExtensions.has(extensionName)) {
const salt = randomBytes(32).toString("hex")
const hashedName = SHA256(`${extensionName}/${salt}`).toString()
const dirPath = path.resolve(app.getPath("userData"), "extension_data", hashedName)
this.registeredExtensions.set(extensionName, dirPath)
const salt = randomBytes(32).toString("hex");
const hashedName = SHA256(`${extensionName}/${salt}`).toString();
const dirPath = path.resolve(app.getPath("userData"), "extension_data", hashedName);
this.registeredExtensions.set(extensionName, dirPath);
}
const dirPath = this.registeredExtensions.get(extensionName)
await fse.ensureDir(dirPath)
return dirPath
const dirPath = this.registeredExtensions.get(extensionName);
await fse.ensureDir(dirPath);
return dirPath;
}
@action
protected fromStore({ extensions }: FSProvisionModel = { extensions: {} }): void {
this.registeredExtensions.merge(extensions)
this.registeredExtensions.merge(extensions);
}
toJSON(): FSProvisionModel {
@ -50,8 +50,8 @@ export class FilesystemProvisionerStore extends BaseStore<FSProvisionModel> {
extensions: this.registeredExtensions.toJSON(),
}, {
recurseEverything: true
})
});
}
}
export const filesystemProvisionerStore = FilesystemProvisionerStore.getInstance<FilesystemProvisionerStore>()
export const filesystemProvisionerStore = FilesystemProvisionerStore.getInstance<FilesystemProvisionerStore>();