From edfce9538b4c3315f341ed77159fdfafd22dde90 Mon Sep 17 00:00:00 2001 From: john liddell Date: Fri, 25 Sep 2020 14:26:28 -0500 Subject: [PATCH] Standardize log folders Move showing dirs to the main process. --- wowup-electron/ipc-events.ts | 10 ++++++++-- wowup-electron/main.ts | 9 +++++++++ .../src/app/services/files/file.service.ts | 17 ++++++++++++++++- .../src/app/services/wowup/wowup.service.ts | 6 ++++-- wowup-electron/src/common/constants.ts | 3 ++- .../common/models/curse-hash-file-request.ts | 4 ++-- wowup-electron/src/common/models/ipc-request.ts | 3 +++ .../src/common/models/ipc-response.ts | 3 --- .../src/common/models/show-directory-request.ts | 5 +++++ wowup-electron/src/main.ts | 6 ++++++ 10 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 wowup-electron/src/common/models/ipc-request.ts delete mode 100644 wowup-electron/src/common/models/ipc-response.ts create mode 100644 wowup-electron/src/common/models/show-directory-request.ts diff --git a/wowup-electron/ipc-events.ts b/wowup-electron/ipc-events.ts index 3569aed7..89c28065 100644 --- a/wowup-electron/ipc-events.ts +++ b/wowup-electron/ipc-events.ts @@ -1,14 +1,20 @@ -import { ipcMain } from "electron"; +import { ipcMain, shell } from "electron"; import * as fs from 'fs'; import * as path from 'path'; -import { CURSE_HASH_FILE_CHANNEL, LIST_FILES_CHANNEL } from './src/common/constants'; +import { CURSE_HASH_FILE_CHANNEL, LIST_FILES_CHANNEL, SHOW_DIRECTORY } from './src/common/constants'; import { CurseHashFileRequest } from './src/common/models/curse-hash-file-request'; import { CurseHashFileResponse } from './src/common/models/curse-hash-file-response'; import { ListFilesRequest } from "./src/common/models/list-files-request"; import { ListFilesResponse } from "./src/common/models/list-files-response"; +import { ShowDirectoryRequest } from "./src/common/models/show-directory-request"; const nativeAddon = require('./build/Release/addon.node'); +ipcMain.on(SHOW_DIRECTORY, async (evt, arg: ShowDirectoryRequest) => { + const result = await shell.openPath(arg.sourceDir); + evt.reply(arg.responseKey, true); +}) + ipcMain.on(CURSE_HASH_FILE_CHANNEL, async (evt, arg: CurseHashFileRequest) => { // console.log(CURSE_HASH_FILE_CHANNEL, arg); diff --git a/wowup-electron/main.ts b/wowup-electron/main.ts index 42863c58..62e36fa8 100644 --- a/wowup-electron/main.ts +++ b/wowup-electron/main.ts @@ -22,6 +22,15 @@ import { ListFilesResponse } from './src/common/models/list-files-response'; import { ncp } from 'ncp'; import * as rimraf from 'rimraf'; import './ipc-events'; +import * as log from 'electron-log'; + +const LOG_PATH = path.join(app.getPath('userData'), 'logs'); +app.setAppLogsPath(LOG_PATH); +log.transports.file.resolvePath = (variables: log.PathVariables, message?: log.LogMessage) => { + console.log('RES', path.join(LOG_PATH, variables.fileName)) + return path.join(LOG_PATH, variables.fileName); +} +log.info('Main starting'); app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors'); electronDl(); diff --git a/wowup-electron/src/app/services/files/file.service.ts b/wowup-electron/src/app/services/files/file.service.ts index fe2ca84d..24e406e3 100644 --- a/wowup-electron/src/app/services/files/file.service.ts +++ b/wowup-electron/src/app/services/files/file.service.ts @@ -1,5 +1,5 @@ import { Injectable } from "@angular/core"; -import { COPY_DIRECTORY_CHANNEL, DELETE_DIRECTORY_CHANNEL, LIST_FILES_CHANNEL, READ_FILE_CHANNEL, RENAME_DIRECTORY_CHANNEL } from "common/constants"; +import { COPY_DIRECTORY_CHANNEL, DELETE_DIRECTORY_CHANNEL, LIST_FILES_CHANNEL, READ_FILE_CHANNEL, RENAME_DIRECTORY_CHANNEL, SHOW_DIRECTORY } from "common/constants"; import { CopyDirectoryRequest } from "common/models/copy-directory-request"; import { DeleteDirectoryRequest } from "common/models/delete-directory-request"; import { ElectronService } from "../electron/electron.service"; @@ -9,6 +9,8 @@ import { ReadFileResponse } from "common/models/read-file-response"; import { ReadFileRequest } from "common/models/read-file-request"; import { ListFilesResponse } from "common/models/list-files-response"; import { ListFilesRequest } from "common/models/list-files-request"; +import { ShowDirectoryRequest } from "common/models/show-directory-request"; +import { v4 as uuidv4 } from 'uuid'; @Injectable({ providedIn: 'root' @@ -19,6 +21,19 @@ export class FileService { private _electronService: ElectronService ) { } + public showDirectory(sourceDir: string) { + return new Promise((resolve, reject) => { + const eventHandler = (_evt: any, arg: boolean) => { + resolve(arg); + }; + + const request: ShowDirectoryRequest = { sourceDir, responseKey: uuidv4() }; + + this._electronService.ipcRenderer.once(request.responseKey, eventHandler); + this._electronService.ipcRenderer.send(SHOW_DIRECTORY, request); + }) + } + public deleteDirectory(sourcePath: string) { return new Promise((resolve, reject) => { const eventHandler = (_evt: any, arg: Error) => { diff --git a/wowup-electron/src/app/services/wowup/wowup.service.ts b/wowup-electron/src/app/services/wowup/wowup.service.ts index cdf3a2c5..8015c2f0 100644 --- a/wowup-electron/src/app/services/wowup/wowup.service.ts +++ b/wowup-electron/src/app/services/wowup/wowup.service.ts @@ -20,6 +20,7 @@ import * as compareVersions from 'compare-versions'; import { DownloadSevice } from "../download/download.service"; import { Preferences } from "../../../constants"; import { PreferenceChange } from "app/models/wowup/preference-change"; +import { FileService } from "../files/file.service"; const LATEST_VERSION_CACHE_KEY = 'latest-version-response'; @@ -32,7 +33,7 @@ export class WowUpService { public readonly updaterName = 'WowUpUpdater.exe'; public readonly applicationFolderPath: string = remote.app.getPath('userData'); - public readonly applicationLogsFolderPath: string = join(this.applicationFolderPath, 'logs'); + public readonly applicationLogsFolderPath: string = remote.app.getPath('logs'); public readonly applicationDownloadsFolderPath: string = join(this.applicationFolderPath, 'downloads'); public readonly applicationUpdaterPath: string = join(this.applicationFolderPath, this.updaterName); public readonly applicationVersion: string = AppConfig.appVersion; @@ -43,6 +44,7 @@ export class WowUpService { private _preferenceStorageService: PreferenceStorageService, private _downloadService: DownloadSevice, private _electronService: ElectronService, + private _fileService: FileService, private _cacheService: CachingService, private _wowUpApiService: WowUpApiService ) { @@ -97,7 +99,7 @@ export class WowUpService { } public showLogsFolder() { - this._electronService.shell.openExternal(this.applicationLogsFolderPath, { activate: true }); + this._fileService.showDirectory(this.applicationLogsFolderPath); } public isUpdateAvailable(): Observable { diff --git a/wowup-electron/src/common/constants.ts b/wowup-electron/src/common/constants.ts index 3bba9034..3426a0fa 100644 --- a/wowup-electron/src/common/constants.ts +++ b/wowup-electron/src/common/constants.ts @@ -7,4 +7,5 @@ export const LIST_FILES_CHANNEL = 'list-files'; export const READ_FILE_CHANNEL = 'read-file'; export const UNZIP_FILE_CHANNEL = 'unzip-file'; export const COPY_FILE_CHANNEL = 'copy-file'; -export const CURSE_HASH_FILE_CHANNEL = 'curse-hash-file'; \ No newline at end of file +export const CURSE_HASH_FILE_CHANNEL = 'curse-hash-file'; +export const SHOW_DIRECTORY = 'show-directory'; \ No newline at end of file diff --git a/wowup-electron/src/common/models/curse-hash-file-request.ts b/wowup-electron/src/common/models/curse-hash-file-request.ts index 1b194ee7..fd6225c1 100644 --- a/wowup-electron/src/common/models/curse-hash-file-request.ts +++ b/wowup-electron/src/common/models/curse-hash-file-request.ts @@ -1,6 +1,6 @@ -import { IpcResponse } from "./ipc-response"; +import { IpcRequest } from "./ipc-request"; -export interface CurseHashFileRequest extends IpcResponse { +export interface CurseHashFileRequest extends IpcRequest { filePath?: string; targetString?: string; targetStringEncoding?: BufferEncoding; diff --git a/wowup-electron/src/common/models/ipc-request.ts b/wowup-electron/src/common/models/ipc-request.ts new file mode 100644 index 00000000..024aeccc --- /dev/null +++ b/wowup-electron/src/common/models/ipc-request.ts @@ -0,0 +1,3 @@ +export interface IpcRequest { + responseKey: string; +} \ No newline at end of file diff --git a/wowup-electron/src/common/models/ipc-response.ts b/wowup-electron/src/common/models/ipc-response.ts deleted file mode 100644 index aecd9eb8..00000000 --- a/wowup-electron/src/common/models/ipc-response.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface IpcResponse { - responseKey: string; -} \ No newline at end of file diff --git a/wowup-electron/src/common/models/show-directory-request.ts b/wowup-electron/src/common/models/show-directory-request.ts new file mode 100644 index 00000000..8b12a84f --- /dev/null +++ b/wowup-electron/src/common/models/show-directory-request.ts @@ -0,0 +1,5 @@ +import { IpcRequest } from "./ipc-request"; + +export interface ShowDirectoryRequest extends IpcRequest { + sourceDir: string; +} \ No newline at end of file diff --git a/wowup-electron/src/main.ts b/wowup-electron/src/main.ts index edf616c6..88d0feb6 100644 --- a/wowup-electron/src/main.ts +++ b/wowup-electron/src/main.ts @@ -4,6 +4,12 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app/app.module'; import { AppConfig } from './environments/environment'; import * as log from 'electron-log'; +import { app, remote } from 'electron'; +import { join } from 'path'; + +log.transports.file.resolvePath = (variables: log.PathVariables, message?: log.LogMessage) => { + return join(remote.app.getPath('logs'), variables.fileName); +} if (AppConfig.production) { enableProdMode();