Electron 11
This commit is contained in:
parent
1f065ce53e
commit
4321f76b0f
|
@ -56,7 +56,9 @@
|
|||
CharacterPreviewHelper, RenderStyle
|
||||
} from './helper';
|
||||
|
||||
import {Point, WebviewTag, remote} from 'electron';
|
||||
import {Point, WebviewTag} from 'electron';
|
||||
import * as remote from '@electron/remote';
|
||||
|
||||
import Timer = NodeJS.Timer;
|
||||
import IpcMessageEvent = Electron.IpcMessageEvent;
|
||||
import CharacterPreview from './CharacterPreview.vue';
|
||||
|
|
|
@ -110,6 +110,7 @@
|
|||
import { Component, Hook, Watch } from '@f-list/vue-ts';
|
||||
import Axios from 'axios';
|
||||
import * as electron from 'electron';
|
||||
import * as remote from '@electron/remote';
|
||||
import log from 'electron-log'; //tslint:disable-line:match-default-export-name
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
@ -143,11 +144,11 @@
|
|||
// import Connection from '../fchat/connection';
|
||||
// import Notifications from './notifications';
|
||||
|
||||
const webContents = electron.remote.getCurrentWebContents();
|
||||
const parent = electron.remote.getCurrentWindow().webContents;
|
||||
const webContents = remote.getCurrentWebContents();
|
||||
const parent = remote.getCurrentWindow().webContents;
|
||||
|
||||
// Allow requests to imgur.com
|
||||
const session = electron.remote.session;
|
||||
const session = remote.session;
|
||||
|
||||
/* tslint:disable:no-unsafe-any no-any no-unnecessary-type-assertion */
|
||||
session!.defaultSession!.webRequest!.onBeforeSendHeaders(
|
||||
|
@ -453,7 +454,7 @@
|
|||
}
|
||||
|
||||
async openProfileInBrowser(): Promise<void> {
|
||||
await electron.remote.shell.openExternal(`https://www.f-list.net/c/${this.profileName}`);
|
||||
await remote.shell.openExternal(`https://www.f-list.net/c/${this.profileName}`);
|
||||
|
||||
// tslint:disable-next-line: no-any no-unsafe-any
|
||||
(this.$refs.profileViewer as any).hide();
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<i class="fa fa-cog"></i>
|
||||
</div>
|
||||
<ul class="nav nav-tabs" style="border-bottom:0;margin-bottom:-1px;margin-top:1px" ref="tabs">
|
||||
<li v-for="tab in tabs" :key="tab.view.id" class="nav-item" @click.middle="remove(tab)">
|
||||
<li v-for="(tab,index) in tabs" :key="'tab-' + index" class="nav-item" @click.middle="remove(tab)">
|
||||
<a href="#" @click.prevent="show(tab)" class="nav-link tab"
|
||||
:class="{active: tab === activeTab, hasNew: tab.hasNew && tab !== activeTab}">
|
||||
<img v-if="tab.user" :src="'https://static.f-list.net/images/avatar/' + tab.user.toLowerCase() + '.png'"/>
|
||||
|
@ -38,6 +38,7 @@
|
|||
|
||||
import {Component, Hook} from '@f-list/vue-ts';
|
||||
import * as electron from 'electron';
|
||||
import * as remote from '@electron/remote';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as url from 'url';
|
||||
|
@ -47,7 +48,7 @@
|
|||
import { getSafeLanguages, updateSupportedLanguages } from './language';
|
||||
import log from 'electron-log'; // tslint:disable-line: match-default-export-name
|
||||
|
||||
const browserWindow = electron.remote.getCurrentWindow();
|
||||
const browserWindow = remote.getCurrentWindow();
|
||||
|
||||
// void browserWindow.webContents.setVisualZoomLevelLimits(1, 5);
|
||||
|
||||
|
@ -60,7 +61,43 @@
|
|||
function destroyTab(tab: Tab): void {
|
||||
if(tab.user !== undefined) electron.ipcRenderer.send('disconnect', tab.user);
|
||||
tab.tray.destroy();
|
||||
tab.view.destroy();
|
||||
|
||||
tab.view.webContents.stop();
|
||||
tab.view.webContents.stopPainting();
|
||||
|
||||
try {
|
||||
if ((tab.view.webContents as any).destroy) {
|
||||
(tab.view.webContents as any).destroy();
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
try {
|
||||
if ((tab.view.webContents as any).close) {
|
||||
(tab.view.webContents as any).close();
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
try {
|
||||
if ((tab.view as any).destroy) {
|
||||
(tab.view as any).destroy();
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
try {
|
||||
if ((tab.view as any).close) {
|
||||
(tab.view as any).close();
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
// tab.view.destroy();
|
||||
electron.ipcRenderer.send('tab-closed');
|
||||
}
|
||||
|
||||
|
@ -145,7 +182,7 @@
|
|||
tab.tray.setToolTip(`${l('title')} - ${tab.user}`);
|
||||
const menu = this.createTrayMenu(tab);
|
||||
menu.unshift({label: tab.user, enabled: false}, {type: 'separator'});
|
||||
tab.tray.setContextMenu(electron.remote.Menu.buildFromTemplate(menu));
|
||||
tab.tray.setContextMenu(remote.Menu.buildFromTemplate(menu));
|
||||
});
|
||||
electron.ipcRenderer.on('disconnect', (_e: Event, id: number) => {
|
||||
const tab = this.tabMap[id];
|
||||
|
@ -155,7 +192,7 @@
|
|||
}
|
||||
tab.user = undefined;
|
||||
tab.tray.setToolTip(l('title'));
|
||||
tab.tray.setContextMenu(electron.remote.Menu.buildFromTemplate(this.createTrayMenu(tab)));
|
||||
tab.tray.setContextMenu(remote.Menu.buildFromTemplate(this.createTrayMenu(tab)));
|
||||
});
|
||||
electron.ipcRenderer.on('has-new', (_e: Event, id: number, hasNew: boolean) => {
|
||||
const tab = this.tabMap[id];
|
||||
|
@ -252,11 +289,11 @@
|
|||
|
||||
async addTab(): Promise<void> {
|
||||
if(this.lockTab) return;
|
||||
const tray = new electron.remote.Tray(trayIcon);
|
||||
const tray = new remote.Tray(trayIcon);
|
||||
tray.setToolTip(l('title'));
|
||||
tray.on('click', (_e) => this.trayClicked(tab));
|
||||
|
||||
const view = new electron.remote.BrowserView(
|
||||
const view = new remote.BrowserView(
|
||||
{
|
||||
webPreferences: {
|
||||
webviewTag: true,
|
||||
|
@ -277,7 +314,7 @@
|
|||
view.setAutoResize({width: true, height: true});
|
||||
electron.ipcRenderer.send('tab-added', view.webContents.id);
|
||||
const tab = {active: false, view, user: undefined, hasNew: false, tray};
|
||||
tray.setContextMenu(electron.remote.Menu.buildFromTemplate(this.createTrayMenu(tab)));
|
||||
tray.setContextMenu(remote.Menu.buildFromTemplate(this.createTrayMenu(tab)));
|
||||
this.tabs.push(tab);
|
||||
this.tabMap[view.webContents.id] = tab;
|
||||
this.show(tab);
|
||||
|
@ -332,7 +369,7 @@
|
|||
}
|
||||
|
||||
openMenu(): void {
|
||||
electron.remote.Menu.getApplicationMenu()!.popup({});
|
||||
remote.Menu.getApplicationMenu()!.popup({});
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
* @see {@link https://github.com/f-list/exported|GitHub repo}
|
||||
*/
|
||||
|
||||
// tslint:disable-next-line:no-submodule-imports no-import-side-effect
|
||||
import 'core-js/es7/global';
|
||||
|
||||
// import { DebugLogger } from './debug-logger';
|
||||
// // @ts-ignore
|
||||
// const dl = new DebugLogger('chat');
|
||||
|
@ -37,6 +40,7 @@
|
|||
import Axios from 'axios';
|
||||
import {exec, execSync} from 'child_process';
|
||||
import * as electron from 'electron';
|
||||
import * as remote from '@electron/remote';
|
||||
import * as path from 'path';
|
||||
import * as qs from 'querystring';
|
||||
import {getKey} from '../chat/common';
|
||||
|
@ -60,7 +64,7 @@ log.debug('init.chat');
|
|||
|
||||
document.addEventListener('keydown', (e: KeyboardEvent) => {
|
||||
if(e.ctrlKey && e.shiftKey && getKey(e) === Keys.KeyI)
|
||||
electron.remote.getCurrentWebContents().toggleDevTools();
|
||||
remote.getCurrentWebContents().toggleDevTools();
|
||||
});
|
||||
|
||||
/* process.env.SPELLCHECKER_PREFER_HUNSPELL = '1';
|
||||
|
@ -76,12 +80,12 @@ const sc = nativeRequire<{
|
|||
const spellchecker = new sc.Spellchecker();*/
|
||||
|
||||
|
||||
Axios.defaults.params = {__fchat: `desktop/${electron.remote.app.getVersion()}`};
|
||||
Axios.defaults.params = {__fchat: `desktop/${remote.app.getVersion()}`};
|
||||
|
||||
if(process.env.NODE_ENV === 'production') {
|
||||
// setupRaven('https://a9239b17b0a14f72ba85e8729b9d1612@sentry.f-list.net/2', electron.remote.app.getVersion());
|
||||
// setupRaven('https://a9239b17b0a14f72ba85e8729b9d1612@sentry.f-list.net/2', remote.app.getVersion());
|
||||
|
||||
electron.remote.getCurrentWebContents().on('devtools-opened', () => {
|
||||
remote.getCurrentWebContents().on('devtools-opened', () => {
|
||||
console.log(`%c${l('consoleWarning.head')}`, 'background: red; color: yellow; font-size: 30pt');
|
||||
console.log(`%c${l('consoleWarning.body')}`, 'font-size: 16pt; color:red');
|
||||
});
|
||||
|
@ -106,7 +110,7 @@ function openIncognito(url: string): void {
|
|||
exec(`start ${start} ${url}`);
|
||||
}
|
||||
|
||||
const webContents = electron.remote.getCurrentWebContents();
|
||||
const webContents = remote.getCurrentWebContents();
|
||||
const wordPosSearch = new WordPosSearch();
|
||||
|
||||
webContents.on('context-menu', (_, props) => {
|
||||
|
@ -200,12 +204,12 @@ webContents.on('context-menu', (_, props) => {
|
|||
);
|
||||
}
|
||||
|
||||
if(menuTemplate.length > 0) electron.remote.Menu.buildFromTemplate(menuTemplate).popup({});
|
||||
if(menuTemplate.length > 0) remote.Menu.buildFromTemplate(menuTemplate).popup({});
|
||||
|
||||
log.debug('context.text', { linkText: props.linkText, misspelledWord: props.misspelledWord, selectionText: props.selectionText, titleText: props.titleText });
|
||||
});
|
||||
|
||||
let dictDir = path.join(electron.remote.app.getPath('userData'), 'spellchecker');
|
||||
let dictDir = path.join(remote.app.getPath('userData'), 'spellchecker');
|
||||
|
||||
if(process.platform === 'win32') //get the path in DOS (8-character) format as special characters cause problems otherwise
|
||||
exec(`for /d %I in ("${dictDir}") do @echo %~sI`, (_, stdout) => dictDir = stdout.trim());
|
||||
|
@ -244,7 +248,7 @@ onSettings(settings);
|
|||
|
||||
log.debug('init.chat.core');
|
||||
|
||||
const connection = new Connection(`F-Chat 3.0 (${process.platform})`, electron.remote.app.getVersion(), Socket);
|
||||
const connection = new Connection(`F-Chat 3.0 (${process.platform})`, remote.app.getVersion(), Socket);
|
||||
initCore(connection, settings, Logs, SettingsStore, Notifications);
|
||||
|
||||
log.debug('init.chat.vue');
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// tslint:disable-next-line:no-submodule-imports no-import-side-effect
|
||||
import 'core-js/es7/global';
|
||||
|
||||
import * as electron from 'electron';
|
||||
import * as path from 'path';
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import * as electron from 'electron';
|
||||
import * as remote from '@electron/remote';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import {promisify} from 'util';
|
||||
|
@ -17,12 +17,12 @@ declare module '../chat/interfaces' {
|
|||
const dayMs = 86400000;
|
||||
const read = promisify(fs.read);
|
||||
|
||||
function writeFile(p: fs.PathLike | number, data: string | object | number,
|
||||
options?: {encoding?: string | null; mode?: number | string; flag?: string} | string | null): void {
|
||||
function writeFile(p: fs.PathLike | number, data: string | NodeJS.ArrayBufferView,
|
||||
options?: fs.WriteFileOptions): void {
|
||||
try {
|
||||
fs.writeFileSync(p, data, options);
|
||||
} catch(e) {
|
||||
electron.remote.dialog.showErrorBox(l('fs.error'), (<Error>e).message);
|
||||
remote.dialog.showErrorBox(l('fs.error'), (<Error>e).message);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
// const dl = new DebugLogger('main');
|
||||
|
||||
import * as electron from 'electron';
|
||||
import * as remoteMain from '@electron/remote/main';
|
||||
|
||||
import log from 'electron-log'; //tslint:disable-line:match-default-export-name
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
@ -43,13 +45,13 @@ import l from '../chat/localize';
|
|||
import {defaultHost, GeneralSettings} from './common';
|
||||
import { getSafeLanguages, knownLanguageNames, updateSupportedLanguages } from './language';
|
||||
import * as windowState from './window_state';
|
||||
import BrowserWindow = Electron.BrowserWindow;
|
||||
import MenuItem = Electron.MenuItem;
|
||||
// import BrowserWindow = electron.BrowserWindow;
|
||||
import MenuItem = electron.MenuItem;
|
||||
import { ElectronBlocker } from '@cliqz/adblocker-electron';
|
||||
import fetch from 'node-fetch';
|
||||
import MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
|
||||
import MenuItemConstructorOptions = electron.MenuItemConstructorOptions;
|
||||
import * as _ from 'lodash';
|
||||
import DownloadItem = Electron.DownloadItem;
|
||||
import DownloadItem = electron.DownloadItem;
|
||||
import { AdCoordinatorHost } from '../chat/ads/ad-coordinator-host';
|
||||
import { IpcMainEvent } from 'electron';
|
||||
|
||||
|
@ -59,9 +61,11 @@ const pck = require('./package.json');
|
|||
// Module to control application life.
|
||||
const app = electron.app;
|
||||
|
||||
remoteMain.initialize();
|
||||
|
||||
// Keep a global reference of the window object, if you don't, the window will
|
||||
// be closed automatically when the JavaScript object is garbage collected.
|
||||
const windows: Electron.BrowserWindow[] = [];
|
||||
const windows: electron.BrowserWindow[] = [];
|
||||
const characters: string[] = [];
|
||||
let tabCount = 0;
|
||||
|
||||
|
@ -141,7 +145,7 @@ function setGeneralSettings(value: GeneralSettings): void {
|
|||
log.transports.console.level = settings.risingSystemLogLevel;
|
||||
}
|
||||
|
||||
async function addSpellcheckerItems(menu: Electron.Menu): Promise<void> {
|
||||
async function addSpellcheckerItems(menu: electron.Menu): Promise<void> {
|
||||
const selected = getSafeLanguages(settings.spellcheckLang);
|
||||
const langs = electron.session.defaultSession.availableSpellCheckerLanguages;
|
||||
|
||||
|
@ -162,7 +166,7 @@ async function addSpellcheckerItems(menu: Electron.Menu): Promise<void> {
|
|||
}));
|
||||
}
|
||||
|
||||
function setUpWebContents(webContents: Electron.WebContents): void {
|
||||
function setUpWebContents(webContents: electron.WebContents): void {
|
||||
const openLinkExternally = (e: Event, linkUrl: string) => {
|
||||
e.preventDefault();
|
||||
const profileMatch = linkUrl.match(/^https?:\/\/(www\.)?f-list.net\/c\/([^/#]+)\/?#?/);
|
||||
|
@ -177,12 +181,16 @@ function setUpWebContents(webContents: Electron.WebContents): void {
|
|||
webContents.on('new-window', openLinkExternally);
|
||||
}
|
||||
|
||||
function createWindow(): Electron.BrowserWindow | undefined {
|
||||
function createWindow(): electron.BrowserWindow | undefined {
|
||||
if(tabCount >= 3) return;
|
||||
const lastState = windowState.getSavedWindowState();
|
||||
const windowProperties: Electron.BrowserWindowConstructorOptions & {maximized: boolean} = {
|
||||
|
||||
const windowProperties: electron.BrowserWindowConstructorOptions & {maximized: boolean} = {
|
||||
...lastState, center: lastState.x === undefined, show: false,
|
||||
webPreferences: { webviewTag: true, nodeIntegration: true, nodeIntegrationInWorker: true, spellcheck: true, enableRemoteModule: true }
|
||||
webPreferences: {
|
||||
webviewTag: true, nodeIntegration: true, nodeIntegrationInWorker: true, spellcheck: true,
|
||||
enableRemoteModule: true, contextIsolation: false
|
||||
} as any
|
||||
};
|
||||
|
||||
if(process.platform === 'darwin') {
|
||||
|
@ -416,11 +424,11 @@ function onReady(): void {
|
|||
|
||||
const viewItem = {
|
||||
label: `&${l('action.view')}`,
|
||||
submenu: <Electron.MenuItemConstructorOptions[]>[
|
||||
submenu: <electron.MenuItemConstructorOptions[]>[
|
||||
// {role: 'resetZoom'},
|
||||
{
|
||||
label: 'Reset Zoom',
|
||||
click: (_m: Electron.MenuItem, _w: Electron.BrowserWindow) => {
|
||||
click: (_m: electron.MenuItem, _w: electron.BrowserWindow) => {
|
||||
// log.info('MENU ZOOM0');
|
||||
// w.webContents.setZoomLevel(0);
|
||||
|
||||
|
@ -434,7 +442,7 @@ function onReady(): void {
|
|||
{
|
||||
// role: 'zoomIn',
|
||||
label: 'Zoom In',
|
||||
click: (_m: Electron.MenuItem, w: Electron.BrowserWindow) => {
|
||||
click: (_m: electron.MenuItem, w: electron.BrowserWindow) => {
|
||||
|
||||
// log.info('MENU ZOOM+');
|
||||
zoomLevel = Math.min(zoomLevel + w.webContents.getZoomFactor()/2, 6);
|
||||
|
@ -448,7 +456,7 @@ function onReady(): void {
|
|||
{
|
||||
// role: 'zoomIn',
|
||||
label: 'Zoom Out',
|
||||
click: (_m: Electron.MenuItem, w: Electron.BrowserWindow) => {
|
||||
click: (_m: electron.MenuItem, w: electron.BrowserWindow) => {
|
||||
// log.info('MENU ZOOM-');
|
||||
zoomLevel = Math.max(0, zoomLevel - w.webContents.getZoomFactor()/2);
|
||||
|
||||
|
@ -493,14 +501,14 @@ function onReady(): void {
|
|||
},
|
||||
{
|
||||
label: l('action.newTab'),
|
||||
click: (_m: Electron.MenuItem, w: Electron.BrowserWindow) => {
|
||||
click: (_m: electron.MenuItem, w: electron.BrowserWindow) => {
|
||||
if((hasCompletedUpgrades) && (tabCount < 3)) w.webContents.send('open-tab');
|
||||
},
|
||||
accelerator: 'CmdOrCtrl+t'
|
||||
},
|
||||
{
|
||||
label: l('settings.logDir'),
|
||||
click: (_m, window: BrowserWindow) => {
|
||||
click: (_m, window: electron.BrowserWindow) => {
|
||||
const dir = electron.dialog.showOpenDialogSync(
|
||||
{defaultPath: settings.logDirectory, properties: ['openDirectory']});
|
||||
if(dir !== undefined) {
|
||||
|
@ -522,13 +530,13 @@ function onReady(): void {
|
|||
},
|
||||
{
|
||||
label: l('settings.closeToTray'), type: 'checkbox', checked: settings.closeToTray,
|
||||
click: (item: Electron.MenuItem) => {
|
||||
click: (item: electron.MenuItem) => {
|
||||
settings.closeToTray = item.checked;
|
||||
setGeneralSettings(settings);
|
||||
}
|
||||
}, {
|
||||
label: l('settings.profileViewer'), type: 'checkbox', checked: settings.profileViewer,
|
||||
click: (item: Electron.MenuItem) => {
|
||||
click: (item: electron.MenuItem) => {
|
||||
settings.profileViewer = item.checked;
|
||||
setGeneralSettings(settings);
|
||||
}
|
||||
|
@ -544,7 +552,7 @@ function onReady(): void {
|
|||
}))
|
||||
}, {
|
||||
label: l('settings.hwAcceleration'), type: 'checkbox', checked: settings.hwAcceleration,
|
||||
click: (item: Electron.MenuItem) => {
|
||||
click: (item: electron.MenuItem) => {
|
||||
settings.hwAcceleration = item.checked;
|
||||
setGeneralSettings(settings);
|
||||
}
|
||||
|
@ -552,7 +560,7 @@ function onReady(): void {
|
|||
|
||||
// {
|
||||
// label: l('settings.beta'), type: 'checkbox', checked: settings.beta,
|
||||
// click: async(item: Electron.MenuItem) => {
|
||||
// click: async(item: electron.MenuItem) => {
|
||||
// settings.beta = item.checked;
|
||||
// setGeneralSettings(settings);
|
||||
// // electron.autoUpdater.setFeedURL({url: updaterUrl+(item.checked ? '?channel=beta' : ''), serverType: 'json'});
|
||||
|
@ -561,7 +569,7 @@ function onReady(): void {
|
|||
// },
|
||||
{
|
||||
label: l('fixLogs.action'),
|
||||
click: (_m, window: BrowserWindow) => window.webContents.send('fix-logs')
|
||||
click: (_m, window: electron.BrowserWindow) => window.webContents.send('fix-logs')
|
||||
},
|
||||
|
||||
{type: 'separator'},
|
||||
|
@ -583,7 +591,7 @@ function onReady(): void {
|
|||
},
|
||||
{
|
||||
label: 'Show/hide current profile',
|
||||
click: (_m: Electron.MenuItem, w: Electron.BrowserWindow) => {
|
||||
click: (_m: electron.MenuItem, w: electron.BrowserWindow) => {
|
||||
w.webContents.send('reopen-profile');
|
||||
},
|
||||
accelerator: 'CmdOrCtrl+p'
|
||||
|
@ -595,7 +603,7 @@ function onReady(): void {
|
|||
{
|
||||
accelerator: process.platform === 'darwin' ? 'Cmd+Q' : undefined,
|
||||
label: l('action.quit'),
|
||||
click(_m: Electron.MenuItem, window: Electron.BrowserWindow): void {
|
||||
click(_m: electron.MenuItem, window: electron.BrowserWindow): void {
|
||||
if(characters.length === 0) return app.quit();
|
||||
const button = electron.dialog.showMessageBoxSync(window, {
|
||||
message: l('chat.confirmLeave'),
|
||||
|
@ -663,7 +671,7 @@ function onReady(): void {
|
|||
settings.host = host;
|
||||
setGeneralSettings(settings);
|
||||
});
|
||||
electron.ipcMain.on('connect', (e: Event & {sender: Electron.WebContents}, character: string) => {
|
||||
electron.ipcMain.on('connect', (e: Event & {sender: electron.WebContents}, character: string) => {
|
||||
if(characters.indexOf(character) !== -1) return e.returnValue = false;
|
||||
characters.push(character);
|
||||
e.returnValue = true;
|
||||
|
@ -695,9 +703,9 @@ function onReady(): void {
|
|||
path.join(__dirname, <string>require('./build/badge.png').default)
|
||||
);
|
||||
|
||||
electron.ipcMain.on('has-new', (e: Event & {sender: Electron.WebContents}, hasNew: boolean) => {
|
||||
electron.ipcMain.on('has-new', (e: Event & {sender: electron.WebContents}, hasNew: boolean) => {
|
||||
if(process.platform === 'darwin') app.dock.setBadge(hasNew ? '!' : '');
|
||||
const window = electron.BrowserWindow.fromWebContents(e.sender) as BrowserWindow | undefined;
|
||||
const window = electron.BrowserWindow.fromWebContents(e.sender) as electron.BrowserWindow | undefined;
|
||||
if(window !== undefined) window.setOverlayIcon(hasNew ? badge : emptyBadge, hasNew ? 'New messages' : '');
|
||||
});
|
||||
|
||||
|
@ -707,9 +715,9 @@ function onReady(): void {
|
|||
for(const w of electron.webContents.getAllWebContents()) w.send('rising-upgrade-complete');
|
||||
});
|
||||
|
||||
electron.ipcMain.on('update-zoom', (_e, zoomLevel: number) => {
|
||||
electron.ipcMain.on('update-zoom', (_e, zl: number) => {
|
||||
// log.info('MENU ZOOM UPDATE', zoomLevel);
|
||||
for(const w of electron.webContents.getAllWebContents()) w.send('update-zoom', zoomLevel);
|
||||
for(const w of electron.webContents.getAllWebContents()) w.send('update-zoom', zl);
|
||||
});
|
||||
|
||||
createWindow();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {remote} from 'electron';
|
||||
import * as remote from '@electron/remote';
|
||||
import core from '../chat/core';
|
||||
import {Conversation} from '../chat/interfaces';
|
||||
//tslint:disable-next-line:match-default-export-name
|
||||
|
@ -21,4 +21,4 @@ export default class Notifications extends BaseNotifications {
|
|||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,8 @@ const mainConfig = {
|
|||
entry: [path.join(__dirname, 'main.ts'), path.join(__dirname, 'package.json')],
|
||||
output: {
|
||||
path: __dirname + '/app',
|
||||
filename: 'main.js'
|
||||
filename: 'main.js',
|
||||
globalObject: 'global'
|
||||
},
|
||||
context: __dirname,
|
||||
target: 'electron-main',
|
||||
|
@ -31,6 +32,7 @@ const mainConfig = {
|
|||
]
|
||||
},
|
||||
node: {
|
||||
global: true,
|
||||
__dirname: false,
|
||||
__filename: false
|
||||
},
|
||||
|
@ -104,6 +106,7 @@ const mainConfig = {
|
|||
]
|
||||
},
|
||||
node: {
|
||||
global: true,
|
||||
__dirname: false,
|
||||
__filename: false
|
||||
},
|
||||
|
@ -156,8 +159,13 @@ const storeWorkerEndpointConfig = _.assign(
|
|||
filename: 'storeWorkerEndpoint.js',
|
||||
globalObject: 'this'
|
||||
},
|
||||
|
||||
target: 'electron-renderer',
|
||||
|
||||
node: {
|
||||
global: true,
|
||||
},
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// tslint:disable-next-line:no-submodule-imports no-import-side-effect
|
||||
import 'core-js/es7/global';
|
||||
|
||||
import * as qs from 'querystring';
|
||||
import log from 'electron-log'; //tslint:disable-line:match-default-export-name
|
||||
|
||||
|
@ -18,7 +21,7 @@ log.transports.file.maxSize = 5 * 1024 * 1024;
|
|||
log.info('init.window.vue');
|
||||
|
||||
//tslint:disable-next-line:no-unused-expression
|
||||
new Window({
|
||||
export default new Window({
|
||||
el: '#app',
|
||||
data: {settings}
|
||||
});
|
||||
|
|
17
package.json
17
package.json
|
@ -5,12 +5,13 @@
|
|||
"description": "A heavily modded F-Chat 3.0 client for F-List",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@electron/remote": "^1.2.1",
|
||||
"@f-list/fork-ts-checker-webpack-plugin": "^3.1.1",
|
||||
"@f-list/vue-ts": "^1.0.3",
|
||||
"@fortawesome/fontawesome-free": "^5.15.1",
|
||||
"@types/bluebird": "^3.5.33",
|
||||
"@types/lodash": "^4.14.164",
|
||||
"@types/node": "^12.12.47",
|
||||
"@types/node": "^14.17.0",
|
||||
"@types/node-fetch": "^2.5.12",
|
||||
"@types/qs": "^6.9.5",
|
||||
"@types/request-promise": "^4.1.46",
|
||||
|
@ -24,10 +25,10 @@
|
|||
"copy-webpack-plugin": "^6.2.1",
|
||||
"css-loader": "^5.0.0",
|
||||
"date-fns": "^2.16.1",
|
||||
"electron": "^10.1.5",
|
||||
"electron-log": "^4.2.4",
|
||||
"electron-packager": "^15.1.0",
|
||||
"electron-rebuild": "^2.3.2",
|
||||
"electron": "^11.5.0",
|
||||
"electron-log": "^4.4.1",
|
||||
"electron-packager": "~15.1.0",
|
||||
"electron-rebuild": "^3.2.3",
|
||||
"extract-loader": "^5.1.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"lodash": "^4.17.20",
|
||||
|
@ -49,10 +50,10 @@
|
|||
"vue": "2.6.12",
|
||||
"vue-loader": "^15.9.8",
|
||||
"vue-template-compiler": "2.6.12",
|
||||
"webpack": "^5.3.2"
|
||||
"webpack": "5.8.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@cliqz/adblocker-electron": "^1.20.5",
|
||||
"@cliqz/adblocker-electron": "^1.22.5",
|
||||
"jquery": "^3.6.0",
|
||||
"keytar": "~7.5.0",
|
||||
"node-fetch": "^2.6.2"
|
||||
|
@ -60,7 +61,7 @@
|
|||
"optionalDependencies": {
|
||||
"appdmg": "^0.6.0",
|
||||
"electron-squirrel-startup": "^1.0.0",
|
||||
"electron-winstaller": "^4.0.1"
|
||||
"electron-winstaller": "^5.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"vue": "2.6.12",
|
||||
|
|
Loading…
Reference in New Issue