2018-01-29 18:56:48 +01:00
|
|
|
/**
|
|
|
|
* BetterDiscord Client UI Module
|
2018-01-29 19:15:58 +01:00
|
|
|
* Copyright (c) 2015-present Jiiks/JsSucks - https://github.com/Jiiks / https://github.com/JsSucks
|
2018-01-29 18:56:48 +01:00
|
|
|
* All rights reserved.
|
2018-01-29 19:15:58 +01:00
|
|
|
* https://betterdiscord.net
|
2018-01-29 18:56:48 +01:00
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*/
|
|
|
|
|
2018-07-18 21:57:05 +02:00
|
|
|
import { Events, DiscordApi } from 'modules';
|
2018-03-21 00:24:31 +01:00
|
|
|
import { remote } from 'electron';
|
2018-01-31 16:47:47 +01:00
|
|
|
import DOM from './dom';
|
2018-01-31 16:45:25 +01:00
|
|
|
import Vue from './vue';
|
2018-05-13 05:17:04 +02:00
|
|
|
import { BdSettingsWrapper, BdModals, BdToasts } from './components';
|
2018-01-29 18:56:48 +01:00
|
|
|
|
|
|
|
export default class {
|
2018-01-31 16:45:25 +01:00
|
|
|
|
|
|
|
static initUiEvents() {
|
2018-03-08 22:40:38 +01:00
|
|
|
this.pathCache = {
|
|
|
|
isDm: null,
|
2018-03-21 00:24:31 +01:00
|
|
|
server: DiscordApi.currentGuild,
|
|
|
|
channel: DiscordApi.currentChannel
|
2018-03-08 22:40:38 +01:00
|
|
|
};
|
2018-04-01 23:44:01 +02:00
|
|
|
|
2018-07-09 02:08:40 +02:00
|
|
|
remote.getCurrentWindow().webContents.on('did-navigate-in-page', (e, url, isMainFrame) => {
|
|
|
|
const { currentGuild, currentChannel } = DiscordApi;
|
2018-04-01 23:44:01 +02:00
|
|
|
|
2018-07-09 02:08:40 +02:00
|
|
|
if (!this.pathCache.server)
|
|
|
|
Events.emit('server-switch', { server: currentGuild, channel: currentChannel });
|
|
|
|
else if (!this.pathCache.channel)
|
|
|
|
Events.emit('channel-switch', currentChannel);
|
|
|
|
else if (currentGuild && currentGuild.id && this.pathCache.server && this.pathCache.server.id !== currentGuild.id)
|
|
|
|
Events.emit('server-switch', { server: currentGuild, channel: currentChannel });
|
|
|
|
else if (currentChannel && currentChannel.id && this.pathCache.channel && this.pathCache.channel.id !== currentChannel.id)
|
|
|
|
Events.emit('channel-switch', currentChannel);
|
2018-03-08 22:40:38 +01:00
|
|
|
|
2018-07-09 02:08:40 +02:00
|
|
|
this.pathCache.server = currentGuild;
|
|
|
|
this.pathCache.channel = currentChannel;
|
|
|
|
});
|
2018-01-31 16:45:25 +01:00
|
|
|
}
|
|
|
|
|
2018-01-29 18:56:48 +01:00
|
|
|
static injectUi() {
|
2018-01-31 16:47:47 +01:00
|
|
|
DOM.createElement('div', null, 'bd-settings').appendTo(DOM.bdBody);
|
2018-02-07 12:52:59 +01:00
|
|
|
DOM.createElement('div', null, 'bd-modals').appendTo(DOM.bdModals);
|
2018-07-19 23:21:20 +02:00
|
|
|
DOM.createElement('div', null, 'bd-toasts').appendTo(DOM.bdToasts);
|
2018-02-13 18:09:50 +01:00
|
|
|
DOM.createElement('bd-tooltips').appendTo(DOM.bdBody);
|
2018-05-13 05:17:04 +02:00
|
|
|
|
2018-07-19 23:21:20 +02:00
|
|
|
this.toasts = new Vue({
|
|
|
|
el: '#bd-toasts',
|
2018-05-13 05:17:04 +02:00
|
|
|
components: { BdToasts },
|
2018-07-19 23:21:20 +02:00
|
|
|
template: '<BdToasts />'
|
2018-05-13 05:17:04 +02:00
|
|
|
});
|
2018-02-07 12:52:59 +01:00
|
|
|
|
2018-03-21 00:24:31 +01:00
|
|
|
this.modals = new Vue({
|
2018-02-07 12:52:59 +01:00
|
|
|
el: '#bd-modals',
|
|
|
|
components: { BdModals },
|
2018-03-21 00:24:31 +01:00
|
|
|
template: '<BdModals />'
|
2018-02-07 12:52:59 +01:00
|
|
|
});
|
|
|
|
|
2018-03-21 00:24:31 +01:00
|
|
|
this.vueInstance = new Vue({
|
2018-01-29 18:56:48 +01:00
|
|
|
el: '#bd-settings',
|
|
|
|
components: { BdSettingsWrapper },
|
2018-03-21 00:24:31 +01:00
|
|
|
template: '<BdSettingsWrapper />'
|
2018-01-29 18:56:48 +01:00
|
|
|
});
|
2018-01-29 19:00:31 +01:00
|
|
|
|
2018-03-21 00:24:31 +01:00
|
|
|
return this.vueInstance;
|
2018-01-29 18:56:48 +01:00
|
|
|
}
|
2018-03-07 21:19:02 +01:00
|
|
|
|
2018-01-29 19:15:58 +01:00
|
|
|
}
|