diff --git a/app/js/tl/filter.js b/app/js/tl/filter.js index ca5c1d51..61878950 100644 --- a/app/js/tl/filter.js +++ b/app/js/tl/filter.js @@ -514,7 +514,6 @@ function resetNotfFilter(tlid) { } function notfFilter(id, tlid, acct_id) { var excludetxt = localStorage.getItem('exclude-' + tlid) - console.log(excludetxt) if (excludetxt || excludetxt != '') { excludetxt = excludetxt + '&account_id=' + id } else { diff --git a/app/main.js b/app/main.js index a21a9ad3..17756c89 100644 --- a/app/main.js +++ b/app/main.js @@ -12,7 +12,6 @@ const np = require('./main/np.js') const systemFunc = require('./main/system.js') const Menu = electron.Menu const join = require('path').join -const windowStateKeeper = require('electron-window-state') // アプリケーションをコントロールするモジュール const app = electron.app @@ -59,10 +58,10 @@ if (process.argv.indexOf('--dev') === -1) { console.log('Welcome!') } var info_path = join(app.getPath('userData'), 'window-size.json') +var max_info_path = join(app.getPath('userData'), 'max-window-size.json') var lang_path = join(app.getPath('userData'), 'language') var ha_path = join(app.getPath('userData'), 'hardwareAcceleration') var ua_path = join(app.getPath('userData'), 'useragent') - try { fs.readFileSync(ha_path, 'utf8') app.disableHardwareAcceleration() @@ -70,6 +69,26 @@ try { } catch { if (!packaged) console.log('enabled: Hardware Acceleration') } +var window_size +try { + window_size = JSON.parse(fs.readFileSync(info_path, 'utf8')) +} catch (e) { + window_size = { + width: 1000, + height: 750 + } // デフォルトバリュー +} +var max_window_size +try { + max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8')) +} catch (e) { + max_window_size = { + width: 'string', + height: 'string', + x: 'string', + y: 'string' + } // デフォルトバリュー +} function isFile(file) { try { fs.statSync(file) @@ -84,10 +103,6 @@ app.on('window-all-closed', function() { app.quit() }) function createWindow() { - let window_size = windowStateKeeper({ - defaultWidth: 1000, - defaultHeight: 750 - }) if (isFile(lang_path)) { var lang = fs.readFileSync(lang_path, 'utf8') } else { @@ -162,7 +177,7 @@ function createWindow() { mainWindow = new BrowserWindow(arg) mainWindow.once('page-title-updated', () => { mainWindow.show() - if (window_size.isMaximized) { + if (window_size.max) { mainWindow.maximize() } }) @@ -200,7 +215,9 @@ function createWindow() { .substring(0, N) } mainWindow.loadURL(base + lang + '/index.html' + plus, { userAgent: ua }) - window_size.manage(mainWindow) + if (!window_size.x && !window_size.y) { + mainWindow.center() + } // ウィンドウが閉じられたらアプリも終了 mainWindow.on('closed', function() { electron.ipcMain.removeAllListeners() @@ -208,6 +225,7 @@ function createWindow() { }) closeArg = false mainWindow.on('close', function(e, arg) { + writePos(mainWindow) if (!closeArg) { e.preventDefault() } @@ -226,7 +244,36 @@ function createWindow() { closeArg = true mainWindow.close() }) + function writePos(mainWindow) { + if ( + max_window_size.width == mainWindow.getBounds().width && + max_window_size.height == mainWindow.getBounds().height && + max_window_size.x == mainWindow.getBounds().x && + max_window_size.y == mainWindow.getBounds().y + ) { + var size = { + width: mainWindow.getBounds().width, + height: mainWindow.getBounds().height, + x: mainWindow.getBounds().x, + y: mainWindow.getBounds().y, + max: true + } + } else { + var size = { + width: mainWindow.getBounds().width, + height: mainWindow.getBounds().height, + x: mainWindow.getBounds().x, + y: mainWindow.getBounds().y + } + } + fs.writeFileSync(info_path, JSON.stringify(size)) + } + mainWindow.on('maximize', function() { + writePos(mainWindow) + fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds())) + }) mainWindow.on('minimize', function() { + writePos(mainWindow) mainWindow.webContents.send('asRead', '') }) diff --git a/app/main/system.js b/app/main/system.js index 01373b37..a671f241 100644 --- a/app/main/system.js +++ b/app/main/system.js @@ -1,313 +1,301 @@ function system(mainWindow, dir, lang, dirname) { - const electron = require('electron') - const app = electron.app - const join = require('path').join - var Jimp = require('jimp') - const fs = require('fs') - var JSON5 = require('json5') - var ipc = electron.ipcMain - const clipboard = electron.clipboard - var tmp_img = join(app.getPath('userData'), 'tmp.png') - var ha_path = join(app.getPath('userData'), 'hardwareAcceleration') - var ua_path = join(app.getPath('userData'), 'useragent') - var lang_path = join(app.getPath('userData'), 'language') - var log_dir_path = join(app.getPath('userData'), 'logs') + const electron = require("electron"); + const app = electron.app; + const join = require("path").join; + var Jimp = require("jimp"); + const fs = require("fs"); + var JSON5 = require("json5"); + var ipc = electron.ipcMain; + const clipboard = electron.clipboard; + var tmp_img = join(app.getPath("userData"), "tmp.png"); + var ha_path = join(app.getPath("userData"), "hardwareAcceleration"); + var ua_path = join(app.getPath("userData"), "useragent"); + var lang_path = join(app.getPath("userData"), "language"); + var log_dir_path = join(app.getPath("userData"), "logs"); //ログ - var today = new Date() + var today = new Date(); //今日のやつ - var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log' + var todayStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log"; //昨日のやつ - today.setDate(today.getDate() - 1) - var yestStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log' + today.setDate(today.getDate() - 1); + var yestStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log"; //一昨日のやつ - today.setDate(today.getDate() - 1) - var yest2Str = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log' + today.setDate(today.getDate() - 1); + var yest2Str = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log"; - const BrowserWindow = electron.BrowserWindow - const dialog = electron.dialog - const os = require('os') - const language = require('../main/language.js') + const BrowserWindow = electron.BrowserWindow; + const dialog = electron.dialog; + const os = require("os"); + const language = require("../main/language.js"); //プラットフォーム - ipc.on('getPlatform', function(e, arg) { + ipc.on("getPlatform", function(e, arg) { try { - var gitHash = fs.readFileSync('git', 'utf8') + var gitHash = fs.readFileSync("git", "utf8"); } catch { - var gitHash = null + var gitHash = null; } - e.sender.webContents.send('platform', [ - process.platform, - process.arch, - process.version, - process.versions.chrome, - process.versions.electron, - gitHash - ]) - }) + e.sender.webContents.send("platform", [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash]); + }); //言語 - ipc.on('lang', function(e, arg) { - console.log('set:' + arg) - fs.writeFileSync(lang_path, arg) - e.sender.webContents.send('langres', arg) - }) + ipc.on("lang", function(e, arg) { + console.log("set:" + arg); + fs.writeFileSync(lang_path, arg); + e.sender.webContents.send("langres", arg); + }); //エクスポートのダイアログ - ipc.on('exportSettings', function(e, args) { + ipc.on("exportSettings", function(e, args) { dialog.showSaveDialog( mainWindow, { - title: 'Export', - properties: ['openFile', 'createDirectory'], - defaultPath: 'export.thedeskconfig.json5' + title: "Export", + properties: ["openFile", "createDirectory"], + defaultPath: "export.thedeskconfig.json5" }, savedFiles => { if (!savedFiles) { - return false + return false; } - e.sender.webContents.send('exportSettingsFile', savedFiles) + e.sender.webContents.send("exportSettingsFile", savedFiles); } - ) - }) + ); + }); //インポートのダイアログ - ipc.on('importSettings', function(e, args) { + ipc.on("importSettings", function(e, args) { dialog.showOpenDialog( mainWindow, { - title: 'Import', - properties: ['openFile'], - filters: [ - { name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2', 'json5'] } - ] + title: "Import", + properties: ["openFile"], + filters: [{ name: "TheDesk Config", extensions: ["thedeskconfig", "thedeskconfigv2", "json5"] }] }, fileNames => { - console.log('imported from: ', fileNames) + console.log("imported from: ", fileNames) if (!fileNames) { - return false + return false; } - e.sender.webContents.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8'))) + e.sender.webContents.send("config", JSON5.parse(fs.readFileSync(fileNames[0], "utf8"))); } - ) - }) + ); + }); //保存フォルダのダイアログ - ipc.on('savefolder', function(e, args) { + ipc.on("savefolder", function(e, args) { dialog.showOpenDialog( mainWindow, { - title: 'Save folder', - properties: ['openDirectory'] + title: "Save folder", + properties: ["openDirectory"] }, fileNames => { - e.sender.webContents.send('savefolder', fileNames[0]) + e.sender.webContents.send("savefolder", fileNames[0]); } - ) - }) + ); + }); //カスタムサウンドのダイアログ - ipc.on('customSound', function(e, arg) { + ipc.on("customSound", function(e, arg) { dialog.showOpenDialog( mainWindow, { - title: 'Custom sound', - properties: ['openFile'], - filters: [ - { name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] }, - { name: 'All', extensions: ['*'] } - ] + title: "Custom sound", + properties: ["openFile"], + filters: [{ name: "Audio", extensions: ["mp3", "aac", "wav", "flac", "m4a"] }, { name: "All", extensions: ["*"] }] }, fileNames => { - e.sender.webContents.send('customSoundRender', [arg, fileNames[0]]) + e.sender.webContents.send("customSoundRender", [arg, fileNames[0]]); } - ) - }) + ); + }); //ハードウェアアクセラレーションの無効化 - ipc.on('ha', function(e, arg) { - if (arg == 'true') { - fs.writeFileSync(ha_path, arg) + ipc.on("ha", function(e, arg) { + if (arg == "true") { + fs.writeFileSync(ha_path, arg); } else { - fs.unlink(ha_path, function(err) {}) + fs.unlink(ha_path, function(err) {}); } - app.relaunch() - app.exit() - }) - ipc.on('ua', function(e, arg) { - if (arg == '') { - fs.unlink(ua_path, function(err) {}) + app.relaunch(); + app.exit(); + }); + ipc.on("ua", function(e, arg) { + if (arg == "") { + fs.unlink(ua_path, function(err) {}); } else { - fs.writeFileSync(ua_path, arg) + fs.writeFileSync(ua_path, arg); } - app.relaunch() - app.exit() - }) + app.relaunch(); + app.exit(); + }); - ipc.on('quit', (e, args) => { - app.quit() - }) - ipc.on('about', (e, args) => { - about() - }) + ipc.on("quit", (e, args) => { + app.quit(); + }); + ipc.on("about", (e, args) => { + about(); + }); function about() { - var ver = app.getVersion() + var ver = app.getVersion(); var window = new BrowserWindow({ webPreferences: { webviewTag: false, nodeIntegration: false, contextIsolation: true, - preload: join(dirname, 'js', 'platform', 'preload.js') + preload: join(dirname, "js", "platform", "preload.js") }, width: 300, height: 500, transparent: false, // ウィンドウの背景を透過 frame: false, // 枠の無いウィンドウ resizable: false - }) - window.loadURL(dir + '/about.html?ver=' + ver) - return 'true' + }); + window.loadURL(dir + "/about.html?ver=" + ver); + return "true"; } - ipc.on('nano', function(e, x, y) { - var nano_info_path = join(app.getPath('userData'), 'nano-window-position.json') - var window_pos + ipc.on("nano", function(e, x, y) { + var nano_info_path = join(app.getPath("userData"), "nano-window-position.json"); + var window_pos; try { - window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8')) + window_pos = JSON.parse(fs.readFileSync(nano_info_path, "utf8")); } catch (e) { - window_pos = [0, 0] // デフォルトバリュー + window_pos = [0, 0]; // デフォルトバリュー } var nanowindow = new BrowserWindow({ webPreferences: { webviewTag: false, nodeIntegration: false, contextIsolation: true, - preload: join(dirname, 'js', 'platform', 'preload.js') + preload: join(dirname, "js", "platform", "preload.js") }, width: 350, height: 140, transparent: false, // ウィンドウの背景を透過 frame: false, // 枠の無いウィンドウ resizable: false - }) - nanowindow.loadURL(dir + '/nano.html') - nanowindow.setAlwaysOnTop(true) + }); + nanowindow.loadURL(dir + "/nano.html"); + nanowindow.setAlwaysOnTop(true); //nanowindow.toggleDevTools() - nanowindow.setPosition(window_pos[0], window_pos[1]) - nanowindow.on('close', function() { - fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition())) - }) - return true - }) - var cbTimer1 - ipc.on('startmem', (e, arg) => { - event = e.sender - cbTimer1 = setInterval(mems, 1000) - }) + nanowindow.setPosition(window_pos[0], window_pos[1]); + nanowindow.on("close", function() { + fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition())); + }); + return true; + }); + var cbTimer1; + ipc.on("startmem", (e, arg) => { + event = e.sender; + cbTimer1 = setInterval(mems, 1000); + }); function mems() { - var mem = os.totalmem() - os.freemem() + var mem = os.totalmem() - os.freemem(); if (mainWindow) { - event.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem()]) + event.webContents.send("memory", [mem, os.cpus()[0].model, os.totalmem()]); } } - ipc.on('endmem', (e, arg) => { + ipc.on("endmem", (e, arg) => { if (cbTimer1) { - clearInterval(cbTimer1) + clearInterval(cbTimer1); } - }) + }); - ipc.on('export', (e, args) => { - fs.writeFileSync(args[0], JSON5.stringify(args[1])) - e.sender.webContents.send('exportAllComplete', '') - }) + ipc.on("export", (e, args) => { + fs.writeFileSync(args[0], JSON5.stringify(args[1])); + e.sender.webContents.send("exportAllComplete", ""); + }); //フォント function object_array_sort(data, key, order, fn) { //デフォは降順(DESC) - var num_a = -1 - var num_b = 1 + var num_a = -1; + var num_b = 1; - if (order === 'asc') { + if (order === "asc") { //指定があれば昇順(ASC) - num_a = 1 - num_b = -1 + num_a = 1; + num_b = -1; } data = data.sort(function(a, b) { - var x = a[key] - var y = b[key] - if (x > y) return num_a - if (x < y) return num_b - return 0 - }) + var x = a[key]; + var y = b[key]; + if (x > y) return num_a; + if (x < y) return num_b; + return 0; + }); //重複排除 - var arrObj = {} + var arrObj = {}; for (var i = 0; i < data.length; i++) { - arrObj[data[i]['family']] = data[i] + arrObj[data[i]["family"]] = data[i]; } - data = [] + data = []; for (var key in arrObj) { - data.push(arrObj[key]) + data.push(arrObj[key]); } - fn(data) // ソート後の配列を返す + fn(data); // ソート後の配列を返す } - ipc.on('fonts', (e, arg) => { - const fm = require('font-manager') - var fonts = fm.getAvailableFontsSync() - object_array_sort(fonts, 'family', 'asc', function(fonts_sorted) { - e.sender.webContents.send('font-list', fonts_sorted) - }) - }) + ipc.on("fonts", (e, arg) => { + const fm = require("font-manager"); + var fonts = fm.getAvailableFontsSync(); + object_array_sort(fonts, "family", "asc", function(fonts_sorted) { + e.sender.webContents.send("font-list", fonts_sorted); + }); + }); //コピー - ipc.on('copy', (e, arg) => { - clipboard.writeText(arg) - }) + ipc.on("copy", (e, arg) => { + clipboard.writeText(arg); + }); //ログ - ipc.on('log', (e, arg) => { - var today = new Date() - var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() - var log_path = join(log_dir_path, todayStr + '.log') - fs.appendFile(log_path, '\n' + arg, function(err) { + ipc.on("log", (e, arg) => { + var today = new Date(); + var todayStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate(); + var log_path = join(log_dir_path, todayStr + ".log"); + fs.appendFile(log_path, "\n" + arg, function(err) { if (err) { - throw err + throw err; } - }) - }) - ipc.on('getLogs', (e, arg) => { - var logs = '' - var todayLog = '' - var yestLog = '' - var yest2Log = '' + }); + }); + ipc.on("getLogs", (e, arg) => { + var logs="" + var todayLog="" + var yestLog="" + var yest2Log="" fs.readdir(log_dir_path, function(err, files) { - if (err) throw err + if (err) throw err; files.filter(function(file) { if (file == todayStr) { - todayLog = fs.readFileSync(join(log_dir_path, file), 'utf8') + todayLog=fs.readFileSync(join(log_dir_path, file), "utf8") } if (file == yestStr) { - yestLog = logs + fs.readFileSync(join(log_dir_path, file), 'utf8') + yestLog=logs+fs.readFileSync(join(log_dir_path, file), "utf8") } if (file == yest2Str) { - yest2Log = fs.readFileSync(join(log_dir_path, file), 'utf8') + yest2Log=fs.readFileSync(join(log_dir_path, file), "utf8") } - logs = todayLog + yestLog + yest2Log - }) - logs = yest2Log + yestLog + todayLog - e.sender.webContents.send('logData', logs) - }) - }) + logs = todayLog + yestLog + yest2Log; + }); + logs = yest2Log + yestLog + todayLog; + e.sender.webContents.send("logData", logs); + }); + }); //起動時ログディレクトリ存在確認と作成、古ログ削除 fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, error => { if (error) { - if (error.code === 'ENOENT') { - fs.mkdirSync(log_dir_path) + if (error.code === "ENOENT") { + fs.mkdirSync(log_dir_path); } else { - return + return; } } else { fs.readdir(log_dir_path, function(err, files) { - if (err) throw err + if (err) throw err; files.filter(function(file) { if (file != todayStr && file != yestStr && file != yest2Str) { - fs.unlinkSync(join(log_dir_path, file)) + fs.unlinkSync(join(log_dir_path, file)); } - }) - }) + }); + }); } - }) + }); } -exports.system = system +exports.system = system; diff --git a/app/package.json b/app/package.json index 569bbd56..5bf0d453 100644 --- a/app/package.json +++ b/app/package.json @@ -52,13 +52,12 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.11.2", "electron-dl": "^1.14.0", - "electron-window-state": "^5.0.3", "jimp": "^0.9.1", "jquery": "^3.4.1", "jquery-ui-dist": "^1.12.1", + "materialize-css": "git://github.com/cutls/materialize", "json5": "^2.1.1", "lodash": "^4.17.15", - "materialize-css": "git://github.com/cutls/materialize", "sumchecker": "^3.0.1", "sweetalert2": "^9.4.0", "vue": "^2.6.10" diff --git a/app/yarn.lock b/app/yarn.lock index 74947222..b8cb1b9f 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -1031,14 +1031,6 @@ electron-rebuild@^1.8.8: spawn-rx "^3.0.0" yargs "^13.2.4" -electron-window-state@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/electron-window-state/-/electron-window-state-5.0.3.tgz#4f36d09e3f953d87aff103bf010f460056050aa8" - integrity sha512-1mNTwCfkolXl3kMf50yW3vE2lZj0y92P/HYWFBrb+v2S/pCka5mdwN3cagKm458A7NjndSwijynXgcLWRodsVg== - dependencies: - jsonfile "^4.0.0" - mkdirp "^0.5.1" - electron@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/electron/-/electron-7.1.1.tgz#98be17d850e64689a09ab6dd1e437b36307f2fcf"