From c0765120e852371fd2e020255c1160fb0db67275 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Tue, 26 Feb 2019 20:18:33 +0200 Subject: [PATCH] Juggle paths and keep user.scss in data --- core/src/main.js | 10 +++++----- core/src/modules/editor.js | 35 ++++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/core/src/main.js b/core/src/main.js index 340e1e4d..034a591d 100644 --- a/core/src/main.js +++ b/core/src/main.js @@ -207,7 +207,7 @@ export class BetterDiscord { async ensureDirectories() { await FileUtils.ensureDirectory(this.config.getPath('ext')); - await FileUtils.ensureDirectory(this.config.getPath('user')); + await FileUtils.ensureDirectory(this.config.getPath('userdata')); await Promise.all([ FileUtils.ensureDirectory(this.config.getPath('plugins')), FileUtils.ensureDirectory(this.config.getPath('themes')), @@ -257,20 +257,20 @@ export class BetterDiscord { */ extraPaths() { const base = path.resolve(this.config.getPath('data'), '..'); + const userdata = path.resolve(base, 'userdata'); const ext = path.resolve(base, 'ext'); const plugins = path.resolve(ext, 'plugins'); const themes = path.resolve(ext, 'themes'); const modules = path.resolve(ext, 'modules'); - const user = path.resolve(this.config.getPath('data'), 'user'); - const userfiles = path.resolve(user, 'files'); - const snippets = path.resolve(user, 'snippets'); + const userfiles = path.resolve(userdata, 'files'); + const snippets = path.resolve(userdata, 'snippets'); this.config.addPath('base', base); this.config.addPath('ext', ext); this.config.addPath('plugins', plugins); this.config.addPath('themes', themes); this.config.addPath('modules', modules); - this.config.addPath('user', user); + this.config.addPath('userdata', userdata); this.config.addPath('userfiles', userfiles); this.config.addPath('snippets', snippets); } diff --git a/core/src/modules/editor.js b/core/src/modules/editor.js index 32ab658a..d2dcc6f0 100644 --- a/core/src/modules/editor.js +++ b/core/src/modules/editor.js @@ -38,14 +38,25 @@ export default class Editor extends Module { try { const files = await FileUtils.listDirectory(this.bd.config.getPath('userfiles')); - const constructFiles = files.map(async file => { + const constructFiles = await Promise.all(files.map(async file => { const content = await FileUtils.readFile(path.resolve(this.bd.config.getPath('userfiles'), file)); - return { type: 'file', name: file, saved: true, mode: this.resolveMode(file), content, savedContent: content, hoisted: file === 'user.scss' }; + return { type: 'file', name: file, saved: true, mode: this.resolveMode(file), content, savedContent: content }; + })); + + const userscssPath = path.resolve(this.bd.config.getPath('data'), 'user.scss'); + const userscss = await FileUtils.readFile(userscssPath); + constructFiles.push({ + caption: 'user', + type: 'file', + name: 'user.scss', + saved: true, + mode: 'scss', + content: userscss, + savedContent: userscss, + hoisted: true }); - const awaitFiles = await Promise.all(constructFiles); - - event.reply(awaitFiles); + event.reply(constructFiles); } catch (err) { console.log(err); event.reject({ err }); @@ -56,14 +67,12 @@ export default class Editor extends Module { try { const files = await FileUtils.listDirectory(this.bd.config.getPath('snippets')); - const constructFiles = files.map(async file => { + const constructFiles = await Promise.all(files.map(async file => { const content = await FileUtils.readFile(path.resolve(this.bd.config.getPath('snippets'), file)); return { type: 'snippet', name: file, saved: true, mode: this.resolveMode(file), content, savedContent: content }; - }); + })); - const awaitFiles = await Promise.all(constructFiles); - - event.reply(awaitFiles); + event.reply(constructFiles); } catch (err) { console.log(err); event.reject({ err }); @@ -71,8 +80,12 @@ export default class Editor extends Module { }); BDIpc.on('editor-saveFile', async (event, file) => { + const filePath = (file.hoisted && file.name === 'user.scss') ? + path.resolve(this.bd.config.getPath('data'), 'user.scss') : + path.resolve(this.bd.config.getPath('userfiles'), file.name); + try { - await FileUtils.writeFile(path.resolve(this.bd.config.getPath('userfiles'), file.name), file.content); + await FileUtils.writeFile(filePath, file.content); event.reply('ok'); } catch (err) { console.log(err);