Tons of smol things

This commit is contained in:
Jiiks 2019-02-27 08:10:04 +02:00
parent 2b86f2d741
commit c3283c47f6
3 changed files with 55 additions and 42 deletions

View File

@ -263,7 +263,7 @@ export class BetterDiscord {
const themes = path.resolve(ext, 'themes');
const modules = path.resolve(ext, 'modules');
const userfiles = path.resolve(userdata, 'files');
const snippets = path.resolve(userdata, 'snippets');
const snippets = path.resolve(userdata, 'snippets.json');
this.config.addPath('base', base);
this.config.addPath('ext', ext);

View File

@ -41,8 +41,8 @@ export default class Editor extends Module {
const files = await FileUtils.listDirectory(this.bd.config.getPath('userfiles'));
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 };
// 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: '', read: false, changed: false };
}));
const userscssPath = path.resolve(this.bd.config.getPath('data'), 'user.scss');
@ -56,7 +56,9 @@ export default class Editor extends Module {
content: userscss,
savedContent: userscss,
hoisted: true,
liveUpdate: true
liveUpdate: true,
read: true,
changed: false
});
event.reply(constructFiles);
@ -68,17 +70,12 @@ export default class Editor extends Module {
BDIpc.on('editor-getSnippets', async (event) => {
try {
const files = await FileUtils.listDirectory(this.bd.config.getPath('snippets'));
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 };
}));
event.reply(constructFiles);
const snippets = await FileUtils.readJsonFromFile(this.bd.config.getPath('snippets'));
event.reply(snippets);
} catch (err) {
console.log(err);
event.reject({ err });
event.reply([]);
return;
}
});
@ -98,7 +95,7 @@ export default class Editor extends Module {
BDIpc.on('editor-saveSnippet', async (event, snippet) => {
try {
await FileUtils.writeFile(path.resolve(this.bd.config.getPath('snippets'), snippet.name), snippet.content);
await FileUtils.writeFile(this.bd.config.getPath('snippets'), JSON.stringify(snippet));
event.reply('ok');
} catch (err) {
console.log(err);
@ -148,11 +145,15 @@ export default class Editor extends Module {
})();
});
});
BDIpc.on('editor-readFile', async (event, file) => {
const content = await FileUtils.readFile(path.resolve(this.bd.config.getPath('userfiles'), file.name));
event.reply(content);
});
}
initWatchers() {
this.fileWatcher = chokidar.watch(this.bd.config.getPath('userfiles'));
this.snippetWatcher = chokidar.watch(this.bd.config.getPath('snippets'));
this.fileWatcher.on('add', file => {
const fileName = path.basename(file);
@ -175,25 +176,8 @@ export default class Editor extends Module {
} catch (err) {}
});
this.snippetWatcher.on('add', file => {
const fileName = path.basename(file);
try {
this.send('editor-addSnippet', {
type: 'snippet',
name: fileName,
saved: true,
mode: this.resolveMode(fileName),
content: '',
savedContent: ''
});
} catch (err) { }
});
this.snippetWatcher.on('unlink', file => {
const fileName = path.basename(file);
try {
this.send('editor-remSnippet', { name: fileName });
} catch (err) { }
this.fileWatcher.on('change', file => {
this.send('editor-fileChange', { name: path.basename(file) });
});
}

View File

@ -23,6 +23,8 @@
:saveFile="saveFile"
:newSnippet="newSnippet"
:saveSnippet="saveSnippet"
:readFile="readFile"
:readSnippet="readSnippet"
:injectStyle="injectStyle"
:toggleLiveUpdate="toggleLiveUpdate"/>
</div>
@ -34,6 +36,7 @@
import { remote } from 'electron';
import { BDEdit } from 'bdedit';
import { FileUtils } from '../../core/src/modules/utils';
ace.acequire = ace.require;
const modes = {
@ -58,7 +61,8 @@
snippets: [],
loading: true,
alwaysOnTop: false,
error: undefined
error: undefined,
lastSaved: undefined
}
},
components: { BDEdit },
@ -80,20 +84,29 @@
ClientIPC.on('bd-editor-remSnippet', (_, snippet) => {
this.snippets = this.snippets.filter(s => s.name !== snippet.name);
});
ClientIPC.on('bd-editor-fileChange', (_, file) => {
if (this.lastSaved && this.lastSaved.name === file.name) { // If we saved in our editor then don't trigger
this.lastSaved = undefined;
return;
}
const f = this.files.find(f => f.name === file.name);
if (f) f.changed = true;
});
},
mounted() {
(async () => {
this.files = await ClientIPC.send('bd-editor-getFiles');
this.snippets = await ClientIPC.send('bd-editor-getSnippets');
this.loading = false;
this.liveUpdateInternal = setInterval(this.liveUpdate, 1000);
})();
},
methods: {
addFile(file) {
this.files.push(file);
},
addSnippet(snippet) { this.snippets.push(file) },
updateContent(item, content) {
@ -120,11 +133,11 @@
let iter = 0;
while (this.files.find(file => file.name === newName)) {
newName = `${prefix}_${iter}`;
newName = `${prefix.split('.')[0]}_${iter}.${prefix.split('.')[1]}`;
iter++;
}
const newItem = { type: 'file', name: newName, content: '', mode, saved: false };
const newItem = { type: 'file', name: newName, content: '', mode, saved: false, read: true };
this.files.push(newItem);
return newItem;
},
@ -141,13 +154,14 @@
iter++;
}
const newItem = { type: 'snippet', name: newName, content: '', mode, saved: false };
const newItem = { type: 'snippet', name: newName, content: '', savedContent: '', mode, saved: false, read: true };
this.snippets.push(newItem);
return newItem;
},
async saveFile(file) {
try {
this.lastSaved = file;
const result = await ClientIPC.send('bd-editor-saveFile', file);
file.savedContent = file.content;
file.saved = true;
@ -157,8 +171,23 @@
},
async saveSnippet(snippet) {
const result = await ClientIPC.send('bd-editor-saveSnippet', snippet);
console.log(result);
// TODO only saved snippets should save not all when one is saved.
snippet.saved = true;
const result = await ClientIPC.send('bd-editor-saveSnippet', this.snippets);
},
async readFile(file) {
const content = await ClientIPC.send('editor-readFile', file);
file.read = true;
file.changed = false;
file.content = file.savedContent = content;
return content;
},
async readSnippet(snippet) {
const content = await ClientIPC.send('editor-readSnippet', snippet);
snippet.read = true;
return content;
},
async injectStyle(item) {