Juggle paths and keep user.scss in data

This commit is contained in:
Jiiks 2019-02-26 20:18:33 +02:00
parent 7e10de32cb
commit c0765120e8
2 changed files with 29 additions and 16 deletions

View File

@ -207,7 +207,7 @@ export class BetterDiscord {
async ensureDirectories() { async ensureDirectories() {
await FileUtils.ensureDirectory(this.config.getPath('ext')); await FileUtils.ensureDirectory(this.config.getPath('ext'));
await FileUtils.ensureDirectory(this.config.getPath('user')); await FileUtils.ensureDirectory(this.config.getPath('userdata'));
await Promise.all([ await Promise.all([
FileUtils.ensureDirectory(this.config.getPath('plugins')), FileUtils.ensureDirectory(this.config.getPath('plugins')),
FileUtils.ensureDirectory(this.config.getPath('themes')), FileUtils.ensureDirectory(this.config.getPath('themes')),
@ -257,20 +257,20 @@ export class BetterDiscord {
*/ */
extraPaths() { extraPaths() {
const base = path.resolve(this.config.getPath('data'), '..'); const base = path.resolve(this.config.getPath('data'), '..');
const userdata = path.resolve(base, 'userdata');
const ext = path.resolve(base, 'ext'); const ext = path.resolve(base, 'ext');
const plugins = path.resolve(ext, 'plugins'); const plugins = path.resolve(ext, 'plugins');
const themes = path.resolve(ext, 'themes'); const themes = path.resolve(ext, 'themes');
const modules = path.resolve(ext, 'modules'); const modules = path.resolve(ext, 'modules');
const user = path.resolve(this.config.getPath('data'), 'user'); const userfiles = path.resolve(userdata, 'files');
const userfiles = path.resolve(user, 'files'); const snippets = path.resolve(userdata, 'snippets');
const snippets = path.resolve(user, 'snippets');
this.config.addPath('base', base); this.config.addPath('base', base);
this.config.addPath('ext', ext); this.config.addPath('ext', ext);
this.config.addPath('plugins', plugins); this.config.addPath('plugins', plugins);
this.config.addPath('themes', themes); this.config.addPath('themes', themes);
this.config.addPath('modules', modules); this.config.addPath('modules', modules);
this.config.addPath('user', user); this.config.addPath('userdata', userdata);
this.config.addPath('userfiles', userfiles); this.config.addPath('userfiles', userfiles);
this.config.addPath('snippets', snippets); this.config.addPath('snippets', snippets);
} }

View File

@ -38,14 +38,25 @@ export default class Editor extends Module {
try { try {
const files = await FileUtils.listDirectory(this.bd.config.getPath('userfiles')); 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)); 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(constructFiles);
event.reply(awaitFiles);
} catch (err) { } catch (err) {
console.log(err); console.log(err);
event.reject({ err }); event.reject({ err });
@ -56,14 +67,12 @@ export default class Editor extends Module {
try { try {
const files = await FileUtils.listDirectory(this.bd.config.getPath('snippets')); 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)); 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 }; return { type: 'snippet', name: file, saved: true, mode: this.resolveMode(file), content, savedContent: content };
}); }));
const awaitFiles = await Promise.all(constructFiles); event.reply(constructFiles);
event.reply(awaitFiles);
} catch (err) { } catch (err) {
console.log(err); console.log(err);
event.reject({ err }); event.reject({ err });
@ -71,8 +80,12 @@ export default class Editor extends Module {
}); });
BDIpc.on('editor-saveFile', async (event, file) => { 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 { try {
await FileUtils.writeFile(path.resolve(this.bd.config.getPath('userfiles'), file.name), file.content); await FileUtils.writeFile(filePath, file.content);
event.reply('ok'); event.reply('ok');
} catch (err) { } catch (err) {
console.log(err); console.log(err);