Tons of smol things
This commit is contained in:
parent
2b86f2d741
commit
c3283c47f6
|
@ -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);
|
||||
|
|
|
@ -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) });
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue