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 themes = path.resolve(ext, 'themes');
|
||||||
const modules = path.resolve(ext, 'modules');
|
const modules = path.resolve(ext, 'modules');
|
||||||
const userfiles = path.resolve(userdata, 'files');
|
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('base', base);
|
||||||
this.config.addPath('ext', ext);
|
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 files = await FileUtils.listDirectory(this.bd.config.getPath('userfiles'));
|
||||||
|
|
||||||
const constructFiles = await Promise.all(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 };
|
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');
|
const userscssPath = path.resolve(this.bd.config.getPath('data'), 'user.scss');
|
||||||
|
@ -56,7 +56,9 @@ export default class Editor extends Module {
|
||||||
content: userscss,
|
content: userscss,
|
||||||
savedContent: userscss,
|
savedContent: userscss,
|
||||||
hoisted: true,
|
hoisted: true,
|
||||||
liveUpdate: true
|
liveUpdate: true,
|
||||||
|
read: true,
|
||||||
|
changed: false
|
||||||
});
|
});
|
||||||
|
|
||||||
event.reply(constructFiles);
|
event.reply(constructFiles);
|
||||||
|
@ -68,17 +70,12 @@ export default class Editor extends Module {
|
||||||
|
|
||||||
BDIpc.on('editor-getSnippets', async (event) => {
|
BDIpc.on('editor-getSnippets', async (event) => {
|
||||||
try {
|
try {
|
||||||
const files = await FileUtils.listDirectory(this.bd.config.getPath('snippets'));
|
const snippets = await FileUtils.readJsonFromFile(this.bd.config.getPath('snippets'));
|
||||||
|
event.reply(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);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(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) => {
|
BDIpc.on('editor-saveSnippet', async (event, snippet) => {
|
||||||
try {
|
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');
|
event.reply('ok');
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(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() {
|
initWatchers() {
|
||||||
this.fileWatcher = chokidar.watch(this.bd.config.getPath('userfiles'));
|
this.fileWatcher = chokidar.watch(this.bd.config.getPath('userfiles'));
|
||||||
this.snippetWatcher = chokidar.watch(this.bd.config.getPath('snippets'));
|
|
||||||
|
|
||||||
this.fileWatcher.on('add', file => {
|
this.fileWatcher.on('add', file => {
|
||||||
const fileName = path.basename(file);
|
const fileName = path.basename(file);
|
||||||
|
@ -175,25 +176,8 @@ export default class Editor extends Module {
|
||||||
} catch (err) {}
|
} catch (err) {}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.snippetWatcher.on('add', file => {
|
this.fileWatcher.on('change', file => {
|
||||||
const fileName = path.basename(file);
|
this.send('editor-fileChange', { name: 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) { }
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
:saveFile="saveFile"
|
:saveFile="saveFile"
|
||||||
:newSnippet="newSnippet"
|
:newSnippet="newSnippet"
|
||||||
:saveSnippet="saveSnippet"
|
:saveSnippet="saveSnippet"
|
||||||
|
:readFile="readFile"
|
||||||
|
:readSnippet="readSnippet"
|
||||||
:injectStyle="injectStyle"
|
:injectStyle="injectStyle"
|
||||||
:toggleLiveUpdate="toggleLiveUpdate"/>
|
:toggleLiveUpdate="toggleLiveUpdate"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -34,6 +36,7 @@
|
||||||
import { remote } from 'electron';
|
import { remote } from 'electron';
|
||||||
|
|
||||||
import { BDEdit } from 'bdedit';
|
import { BDEdit } from 'bdedit';
|
||||||
|
import { FileUtils } from '../../core/src/modules/utils';
|
||||||
ace.acequire = ace.require;
|
ace.acequire = ace.require;
|
||||||
|
|
||||||
const modes = {
|
const modes = {
|
||||||
|
@ -58,7 +61,8 @@
|
||||||
snippets: [],
|
snippets: [],
|
||||||
loading: true,
|
loading: true,
|
||||||
alwaysOnTop: false,
|
alwaysOnTop: false,
|
||||||
error: undefined
|
error: undefined,
|
||||||
|
lastSaved: undefined
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: { BDEdit },
|
components: { BDEdit },
|
||||||
|
@ -80,20 +84,29 @@
|
||||||
ClientIPC.on('bd-editor-remSnippet', (_, snippet) => {
|
ClientIPC.on('bd-editor-remSnippet', (_, snippet) => {
|
||||||
this.snippets = this.snippets.filter(s => s.name !== snippet.name);
|
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() {
|
mounted() {
|
||||||
(async () => {
|
(async () => {
|
||||||
this.files = await ClientIPC.send('bd-editor-getFiles');
|
this.files = await ClientIPC.send('bd-editor-getFiles');
|
||||||
this.snippets = await ClientIPC.send('bd-editor-getSnippets');
|
this.snippets = await ClientIPC.send('bd-editor-getSnippets');
|
||||||
|
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
this.liveUpdateInternal = setInterval(this.liveUpdate, 1000);
|
|
||||||
})();
|
})();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
addFile(file) {
|
addFile(file) {
|
||||||
this.files.push(file);
|
this.files.push(file);
|
||||||
},
|
},
|
||||||
|
|
||||||
addSnippet(snippet) { this.snippets.push(file) },
|
addSnippet(snippet) { this.snippets.push(file) },
|
||||||
|
|
||||||
updateContent(item, content) {
|
updateContent(item, content) {
|
||||||
|
@ -120,11 +133,11 @@
|
||||||
let iter = 0;
|
let iter = 0;
|
||||||
|
|
||||||
while (this.files.find(file => file.name === newName)) {
|
while (this.files.find(file => file.name === newName)) {
|
||||||
newName = `${prefix}_${iter}`;
|
newName = `${prefix.split('.')[0]}_${iter}.${prefix.split('.')[1]}`;
|
||||||
iter++;
|
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);
|
this.files.push(newItem);
|
||||||
return newItem;
|
return newItem;
|
||||||
},
|
},
|
||||||
|
@ -141,13 +154,14 @@
|
||||||
iter++;
|
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);
|
this.snippets.push(newItem);
|
||||||
return newItem;
|
return newItem;
|
||||||
},
|
},
|
||||||
|
|
||||||
async saveFile(file) {
|
async saveFile(file) {
|
||||||
try {
|
try {
|
||||||
|
this.lastSaved = file;
|
||||||
const result = await ClientIPC.send('bd-editor-saveFile', file);
|
const result = await ClientIPC.send('bd-editor-saveFile', file);
|
||||||
file.savedContent = file.content;
|
file.savedContent = file.content;
|
||||||
file.saved = true;
|
file.saved = true;
|
||||||
|
@ -157,8 +171,23 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
async saveSnippet(snippet) {
|
async saveSnippet(snippet) {
|
||||||
const result = await ClientIPC.send('bd-editor-saveSnippet', snippet);
|
// TODO only saved snippets should save not all when one is saved.
|
||||||
console.log(result);
|
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) {
|
async injectStyle(item) {
|
||||||
|
|
Loading…
Reference in New Issue