From 623d0a0bf36050be6d49b58fa023bd6b0a30c6fa Mon Sep 17 00:00:00 2001 From: jliddev Date: Sun, 18 Oct 2020 23:42:23 -0700 Subject: [PATCH 1/9] Linux compatibiliy changes --- wowup-electron/src/app/app.component.html | 2 +- wowup-electron/src/app/app.component.ts | 4 ++++ .../src/app/services/electron/electron.service.ts | 1 + .../src/app/services/warcraft/warcraft.service.ts | 6 +++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/wowup-electron/src/app/app.component.html b/wowup-electron/src/app/app.component.html index e0e0c411..9146c2b0 100644 --- a/wowup-electron/src/app/app.component.html +++ b/wowup-electron/src/app/app.component.html @@ -1,5 +1,5 @@
- +
diff --git a/wowup-electron/src/app/app.component.ts b/wowup-electron/src/app/app.component.ts index 38ebd337..276b5e2d 100644 --- a/wowup-electron/src/app/app.component.ts +++ b/wowup-electron/src/app/app.component.ts @@ -20,6 +20,8 @@ const AUTO_UPDATE_PERIOD_MS = 60 * 60 * 1000; // 1 hour export class AppComponent implements AfterViewInit { private _autoUpdateInterval?: number; + public showTitleBar: boolean = true; + constructor( private _analyticsService: AnalyticsService, private _electronService: ElectronService, @@ -33,6 +35,8 @@ export class AppComponent implements AfterViewInit { this.translate.setDefaultLang("en"); this.translate.use(this._electronService.locale); + + this.showTitleBar = !this._electronService.isLinux; } ngAfterViewInit(): void { diff --git a/wowup-electron/src/app/services/electron/electron.service.ts b/wowup-electron/src/app/services/electron/electron.service.ts index c9ba7f91..6d48cfe0 100644 --- a/wowup-electron/src/app/services/electron/electron.service.ts +++ b/wowup-electron/src/app/services/electron/electron.service.ts @@ -28,6 +28,7 @@ export class ElectronService { public readonly windowMinimized$ = this._windowMinimizedSrc.asObservable(); public readonly isWin = process.platform === "win32"; public readonly isMac = process.platform === "darwin"; + public readonly isLinux = process.platform === "linux"; get isElectron(): boolean { return !!(window && window.process && window.process.type); diff --git a/wowup-electron/src/app/services/warcraft/warcraft.service.ts b/wowup-electron/src/app/services/warcraft/warcraft.service.ts index 4f77bcdc..9661d7ec 100644 --- a/wowup-electron/src/app/services/warcraft/warcraft.service.ts +++ b/wowup-electron/src/app/services/warcraft/warcraft.service.ts @@ -10,8 +10,8 @@ import * as fs from "fs"; import { map, filter, delay, switchMap } from "rxjs/operators"; import { WowClientType } from "app/models/warcraft/wow-client-type"; import { StorageService } from "../storage/storage.service"; -import log from "electron-log"; import { WarcraftServiceMac } from "./warcraft.service.mac"; +import { WarcraftServiceLinux } from "./warcraft.service.linux"; import { AddonFolder } from "app/models/wowup/addon-folder"; import { ElectronService } from ".."; import { TocService } from "../toc/toc.service"; @@ -374,6 +374,10 @@ export class WarcraftService { return new WarcraftServiceMac(); } + if(this._electronService.isLinux){ + return new WarcraftServiceLinux(); + } + throw new Error("No warcraft service implementation found"); } } From bf230ae3f91601b25d8858a423d5d7f5f6aefbd7 Mon Sep 17 00:00:00 2001 From: jliddev Date: Sun, 18 Oct 2020 23:50:39 -0700 Subject: [PATCH 2/9] Warcraft linux impl --- .../warcraft/warcraft.service.linux.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 wowup-electron/src/app/services/warcraft/warcraft.service.linux.ts diff --git a/wowup-electron/src/app/services/warcraft/warcraft.service.linux.ts b/wowup-electron/src/app/services/warcraft/warcraft.service.linux.ts new file mode 100644 index 00000000..01bbaa36 --- /dev/null +++ b/wowup-electron/src/app/services/warcraft/warcraft.service.linux.ts @@ -0,0 +1,25 @@ +import { WarcraftServiceImpl } from "./warcraft.service.impl"; +import { WowClientType } from "app/models/warcraft/wow-client-type"; + +export class WarcraftServiceLinux implements WarcraftServiceImpl { + public async getBlizzardAgentPath(): Promise { + return ''; + } + + public getExecutableName(clientType: WowClientType): string { + switch (clientType) { + case WowClientType.Retail: + return 'Wow.exe'; + case WowClientType.Classic: + return 'WowClassic.exe'; + case WowClientType.RetailPtr: + return 'WowT.exe'; + case WowClientType.ClassicPtr: + return 'WowClassicT.exe'; + case WowClientType.Beta: + return 'WowB.exe'; + default: + return ''; + } + } +} \ No newline at end of file From e6e7ff97a29289854444c815407cd5bf9a896154 Mon Sep 17 00:00:00 2001 From: McBurn Date: Mon, 19 Oct 2020 09:43:43 +0200 Subject: [PATCH 3/9] Update de.json --- wowup-electron/src/assets/i18n/de.json | 42 +++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/wowup-electron/src/assets/i18n/de.json b/wowup-electron/src/assets/i18n/de.json index facce1bb..f8d5b592 100644 --- a/wowup-electron/src/assets/i18n/de.json +++ b/wowup-electron/src/assets/i18n/de.json @@ -3,7 +3,7 @@ "ABOUT": { "CHANGE_LOG_SECTION_LABEL": "Log ändern", "TITLE": "WowUp.io", - "WEBSITE_LINK_LABEL": "Schau dir die Webseite an!" + "WEBSITE_LINK_LABEL": "Schau Dir die Webseite an!" }, "GET_ADDONS": { "CLIENT_TYPE_SELECT_LABEL": "World of Warcraft", @@ -28,7 +28,7 @@ }, "MY_ADDONS": { "CHECK_UPDATES_BUTTON": "Updates prüfen", - "CHECK_UPDATES_BUTTON_TOOLTIP": "Nach neuesten Addon-Updates suchen", + "CHECK_UPDATES_BUTTON_TOOLTIP": "Nach neuen Addon-Updates suchen", "CLIENT_TYPE_SELECT_LABEL": "World of Warcraft", "RESCAN_FOLDERS_BUTTON": "Ordner erneut scannen", "RESCAN_FOLDERS_BUTTON_TOOLTIP": "Scannen Sie Ihren Client-Ordner nach installierten Addons", @@ -49,10 +49,10 @@ "IGNORE_ADDON_BUTTON": "Ignorieren", "AUTO_UPDATE_ADDON_BUTTON": "Automatisches Aktualisieren", "CHANNEL_SUBMENT_TITLE": "Kanal", - "SHOW_FOLDER": "SHOW_FOLDER", + "SHOW_FOLDER": "Dateiordner anzeigen", "REINSTALL_ADDON_BUTTON": "Neu installieren", "REMOVE_ADDON_BUTTON": "Entfernen", - "STABLE_ADDON_CHANNEL": "Stall", + "STABLE_ADDON_CHANNEL": "Stable", "BETA_ADDON_CHANNEL": "Beta", "ALPHA_ADDON_CHANNEL": "Alpha" }, @@ -68,8 +68,8 @@ "APPLICATION": { "ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "ENABLE_SYSTEM_NOTIFICATIONS_LABEL", "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION", - "MINIMIZE_ON_CLOSE_LABEL": "Minimieren bei Schliessen", - "MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "Beim Schließen des WowUp-Fensters auf das Systemabschnitt minimieren.", + "MINIMIZE_ON_CLOSE_LABEL": "Minimieren beim Schließen", + "MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "Beim Schließen des WowUp-Fensters auf den Systembereich minimieren.", "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC", "TELEMETRY_DESCRIPTION": "Helfen Sie WowUp zu verbessern, indem Sie anonyme Installationsdaten und/oder Fehler senden.", "TELEMETRY_LABEL": "Telemetrie", @@ -77,7 +77,7 @@ }, "DEBUG": { "DEBUG_DATA_BUTTON": "Debug-Daten dumpen", - "DEBUG_DATA_DESCRIPTION": "Protokollieren Sie Debug-Daten, um mögliche Probleme zu diagnostizieren. Dies finden Sie in Ihrer aktuellen Protokolldatei für Neugierde.", + "DEBUG_DATA_DESCRIPTION": "Protokollieren Sie Debug-Daten, um mögliche Probleme zu diagnostizieren. Dies finden Sie in Ihrer aktuellen Protokolldatei (für Neugierige).", "DEBUG_DATA_LABEL": "Debug-Daten", "LOG_FILES_BUTTON": "Log-Dateien anzeigen", "LOG_FILES_DESCRIPTION": "Öffnen Sie den Ordner, der Ihre letzten Logdateien enthält.", @@ -108,14 +108,14 @@ }, "INSTALL_FROM_URL": { "ADDON_URL_INPUT_LABEL": "Addon URL", - "ADDON_URL_INPUT_PLACEHOLDER": "Ex. GitHub or WowInterface URL", + "ADDON_URL_INPUT_PLACEHOLDER": "z.B. GitHub oder WowInterface URL", "CLOSE_BUTTON": "Schließen", "IMPORT_BUTTON": "Importieren", "INSTALL_BUTTON": "Installieren", "INSTALL_SUCCESS_LABEL": "Installiert!", - "TITLE": "Installieren Sie die Addon-URL", - "DESCRIPTION": "Wenn Sie ein Addon direkt von einer URL installieren möchten, fügen Sie es unten ein, um loszulegen.", - "SUPPORTED_SOURCES": "Unterstützt WowInterface und GitHub*" + "TITLE": "Installation eines Addons über eine externe URL", + "DESCRIPTION": "Wenn Sie ein Addon direkt von einer URL installieren möchten, fügen Sie es unten in der Zeile ein.", + "SUPPORTED_SOURCES": "Unterstützt wird WowInterface und GitHub*" }, "TELEMETRY": { "DESCRIPTION": "Hilf mir, WowUp zu verbessern, indem du anonyme Installationsdateien und/oder Fehler schickst?", @@ -126,18 +126,18 @@ }, "COMMON": { "ADDON_STATUS": { - "COMPLETE": "COMPLETE", - "DOWNLOADING": "DOWNLOADING", - "INSTALLING": "INSTALLING", - "UNINSTALLING": "UNINSTALLING", - "UPDATING": "UPDATING" + "COMPLETE": "Vollständig", + "DOWNLOADING": "Herunterladen", + "INSTALLING": "Installiere", + "UNINSTALLING": "Deinstalliere", + "UPDATING": "Aktualisiere" }, "ADDON_STATE": { - "UNINSTALL": "UNINSTALL", - "IGNORED": "IGNORED", - "UPDATE": "UPDATE", - "INSTALL": "INSTALL", - "UPTODATE": "UPTODATE" + "UNINSTALL": "Deinstalliert", + "IGNORED": "Ignoriert", + "UPDATE": "Aktualisiert", + "INSTALL": "Installiert", + "UPTODATE": "Aktuell" } } } From 8d9efedd20b1d8a1b6a3fa2556729673b7c9b073 Mon Sep 17 00:00:00 2001 From: McBurn Date: Mon, 19 Oct 2020 10:30:38 +0200 Subject: [PATCH 4/9] Update de.json changed DOWNLOAD_COUNT_COLUMN_HEADER --- wowup-electron/src/assets/i18n/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wowup-electron/src/assets/i18n/de.json b/wowup-electron/src/assets/i18n/de.json index facce1bb..378e6bfb 100644 --- a/wowup-electron/src/assets/i18n/de.json +++ b/wowup-electron/src/assets/i18n/de.json @@ -15,7 +15,7 @@ "AUTHOR_COLUMN_HEADER": "Autor", "PROVIDER_COLUMN_HEADER": "Anbieter", "STATUS_COLUMN_HEADER": "Status", - "DOWNLOAD_COUNT_COLUMN_HEADER": "TEXT_ELEMENT" + "DOWNLOAD_COUNT_COLUMN_HEADER": "Anzahl Downloads" } }, "HOME": { From 80a5038e84c8464f6659101e230efe33af2d5173 Mon Sep 17 00:00:00 2001 From: Oleksandr <72464426+Medoke@users.noreply.github.com> Date: Mon, 19 Oct 2020 11:49:24 +0300 Subject: [PATCH 5/9] RU localization update --- wowup-electron/src/assets/i18n/ru.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wowup-electron/src/assets/i18n/ru.json b/wowup-electron/src/assets/i18n/ru.json index 30d6208f..e5a1647a 100644 --- a/wowup-electron/src/assets/i18n/ru.json +++ b/wowup-electron/src/assets/i18n/ru.json @@ -15,11 +15,11 @@ "AUTHOR_COLUMN_HEADER": "Автор", "PROVIDER_COLUMN_HEADER": "Источник", "STATUS_COLUMN_HEADER": "Статус", - "DOWNLOAD_COUNT_COLUMN_HEADER": "Кол-во загрузок" + "DOWNLOAD_COUNT_COLUMN_HEADER": "Загрузок" } }, "HOME": { - "TITLE": "Приложение работает !", + "TITLE": "Приложение работает!", "GO_TO_DETAIL": "Детали", "MY_ADDONS_TAB_TITLE": "Мои модификации", "GET_ADDONS_TAB_TITLE": "Получить модификации", @@ -67,11 +67,11 @@ }, "OPTIONS": { "APPLICATION": { - "ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "ENABLE_SYSTEM_NOTIFICATIONS_LABEL", - "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION", + "ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "Включить системные уведомления", + "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "Включить/Выключить различные окна системных уведомлений, такие как автоматически обновлённые модификации.", "MINIMIZE_ON_CLOSE_LABEL": "Свернуть в трей при закрытии", - "MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "При закрытии окна WowUp сворачивается в системный трей.", - "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC", + "MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "При закрытии окна WowUp сворачивается в область уведомлений панели задач.", + "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "При закрытии окна WowUp сворачивается в меню статуса.", "TELEMETRY_DESCRIPTION": "Помогите улучшить WowUp, отправив анонимные данные об установке и/или ошибках.", "TELEMETRY_LABEL": "Телеметрия", "TITLE": "Приложение" From fedbb0623917f0c5b1b662faa6580a11870d9ff8 Mon Sep 17 00:00:00 2001 From: McBurn Date: Mon, 19 Oct 2020 11:58:06 +0200 Subject: [PATCH 6/9] Update de.json changes in "ENABLE_SYSTEM_NOTIFICATIONS_" --- wowup-electron/src/assets/i18n/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wowup-electron/src/assets/i18n/de.json b/wowup-electron/src/assets/i18n/de.json index facce1bb..061b72ce 100644 --- a/wowup-electron/src/assets/i18n/de.json +++ b/wowup-electron/src/assets/i18n/de.json @@ -66,8 +66,8 @@ }, "OPTIONS": { "APPLICATION": { - "ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "ENABLE_SYSTEM_NOTIFICATIONS_LABEL", - "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION", + "ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "Systembenachrichtigungen aktivieren", + "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "Aktivieren / Deaktivieren verschiedener Systembenachrichtigungen", "MINIMIZE_ON_CLOSE_LABEL": "Minimieren bei Schliessen", "MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "Beim Schließen des WowUp-Fensters auf das Systemabschnitt minimieren.", "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC", From 46d93fe4716083accc964473b61876705e76fb5b Mon Sep 17 00:00:00 2001 From: Jason Leeraert Date: Mon, 19 Oct 2020 13:07:38 +0200 Subject: [PATCH 7/9] made addon detail view a bit bigger and added a min width fixed update icon in my-addons status col too --- .../addon-detail/addon-detail.component.scss | 3 +- .../my-addon-status-column.component.html | 35 ++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/wowup-electron/src/app/components/addon-detail/addon-detail.component.scss b/wowup-electron/src/app/components/addon-detail/addon-detail.component.scss index 23707778..ddd8c43e 100644 --- a/wowup-electron/src/app/components/addon-detail/addon-detail.component.scss +++ b/wowup-electron/src/app/components/addon-detail/addon-detail.component.scss @@ -1,6 +1,7 @@ .addon-detail-view { width: 35vw; - max-width: 500px; + min-width: 380px; + max-width: 600px; margin-top: 8px; .addon-detail-title, diff --git a/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.html b/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.html index b8a790ef..07f4c1b4 100644 --- a/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.html +++ b/wowup-electron/src/app/components/my-addon-status-column/my-addon-status-column.component.html @@ -1,13 +1,24 @@ - - -
-
- {{getStatusText()}} -
- - update - -
\ No newline at end of file + + + +
+ {{ getStatusText() }} +
+ + update + +
From a6dd7dbd4e033e967ee5d9913283efe5224d7b5e Mon Sep 17 00:00:00 2001 From: Morten Formo Date: Mon, 19 Oct 2020 15:40:37 +0200 Subject: [PATCH 8/9] =?UTF-8?q?Add=20Norwegian=20(bokm=C3=A5l)=20translati?= =?UTF-8?q?on.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wowup-electron/src/assets/i18n/nb.json | 146 +++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 wowup-electron/src/assets/i18n/nb.json diff --git a/wowup-electron/src/assets/i18n/nb.json b/wowup-electron/src/assets/i18n/nb.json new file mode 100644 index 00000000..82936185 --- /dev/null +++ b/wowup-electron/src/assets/i18n/nb.json @@ -0,0 +1,146 @@ +{ + "PAGES": { + "ABOUT": { + "CHANGE_LOG_SECTION_LABEL": "Endringslogg", + "TITLE": "WowUp.io", + "WEBSITE_LINK_LABEL": "Besøk nettsiden!" + }, + "GET_ADDONS": { + "CLIENT_TYPE_SELECT_LABEL": "World of Warcraft", + "REFRESH_BUTTON": "Oppdater", + "INSTALL_FROM_URL_BUTTON": "Installer fra URL", + "SEARCH_LABEL": "Søk", + "TABLE": { + "ADDON_COLUMN_HEADER": "Utvidelse", + "AUTHOR_COLUMN_HEADER": "Forfatter", + "PROVIDER_COLUMN_HEADER": "Leverandør", + "STATUS_COLUMN_HEADER": "Status", + "DOWNLOAD_COUNT_COLUMN_HEADER": "Nedlastinger" + } + }, + "HOME": { + "TITLE": "Appen virker !", + "GO_TO_DETAIL": "Gå til Detalj", + "MY_ADDONS_TAB_TITLE": "Mine Utvidelser", + "GET_ADDONS_TAB_TITLE": "Få Utvidelser", + "ABOUT_TAB_TITLE": "Om", + "OPTIONS_TAB_TITLE": "Alternativer" + }, + "MY_ADDONS": { + "CHECK_UPDATES_BUTTON": "Finn Oppdateringer", + "CHECK_UPDATES_BUTTON_TOOLTIP": "Finn de siste oppdateringene til utvidelsene dine", + "CLIENT_TYPE_SELECT_LABEL": "World of Warcraft", + "FILTER_LABEL": "Filter", + "RESCAN_FOLDERS_BUTTON": "Skann Mapper", + "RESCAN_FOLDERS_BUTTON_TOOLTIP": "Skann klientens mapper etter installerte utvidelser", + "UPDATE_ALL_BUTTON": "Oppdater Alle", + "UPDATE_ALL_BUTTON_TOOLTIP": "Oppdater alle utvidelser for denne klienten", + "TABLE": { + "ADDON_COLUMN_HEADER": "Utvidelse", + "ADDON_INSTALL_BUTTON": "Installer", + "ADDON_UPDATE_BUTTON": "Oppdater", + "AUTHOR_COLUMN_HEADER": "Forfatter", + "AUTO_UPDATE_ICON_TOOLTIP": "Automatisk oppdatering aktivert", + "GAME_VERSION_COLUMN_HEADER": "Spillversjon", + "LATEST_VERSION_COLUMN_HEADER": "Siste Versjon", + "PROVIDER_COLUMN_HEADER": "Leverandør", + "STATUS_COLUMN_HEADER": "Status" + }, + "ADDON_CONTEXT_MENU": { + "IGNORE_ADDON_BUTTON": "Ignorer", + "AUTO_UPDATE_ADDON_BUTTON": "Oppdater Automatisk", + "CHANNEL_SUBMENT_TITLE": "Kanal", + "SHOW_FOLDER": "Vis Mappe", + "REINSTALL_ADDON_BUTTON": "Re-Installer", + "REMOVE_ADDON_BUTTON": "Fjern", + "STABLE_ADDON_CHANNEL": "Stable", + "BETA_ADDON_CHANNEL": "Beta", + "ALPHA_ADDON_CHANNEL": "Alpha" + }, + "COLUMNS_CONTEXT_MENU": { + "TITLE": "Vis Kolonner" + }, + "UPDATE_ALL_CONTEXT_MENU": { + "UPDATE_RETAIL_CLASSIC_BUTTON": "Oppdater Retail/Classic", + "UPDATE_ALL_CLIENTS_BUTTON": "Oppdater Alle Klienter" + } + }, + "OPTIONS": { + "APPLICATION": { + "ENABLE_SYSTEM_NOTIFICATIONS_LABEL": "Aktiver systemvarsler", + "ENABLE_SYSTEM_NOTIFICATIONS_DESCRIPTION": "Aktiver/Deaktiver forskjellige systemvarsler, foreksempel: automatisk oppdatering av addons.", + "MINIMIZE_ON_CLOSE_LABEL": "Minimer ved lukking", + "MINIMIZE_ON_CLOSE_DESCRIPTION_MAC": "Når WowUp-vinduet lukkes, minimer til menylinjen.", + "MINIMIZE_ON_CLOSE_DESCRIPTION_WINDOWS": "Når WowUp-vinduet lukkes, minimer til oppgavelinjens varselområde.", + "TELEMETRY_DESCRIPTION": "Hjelp til med å forbedre WowUp ved å sende anonyme data og feilmeldinger.", + "TELEMETRY_LABEL": "Telemetri", + "TITLE": "Applikasjon" + }, + "DEBUG": { + "DEBUG_DATA_BUTTON": "Dump Debugdata", + "DEBUG_DATA_DESCRIPTION": "Loggfør debugdata for å hjelpe til med å diagnotisere eventuelle problemer. Hvis du er nyskgjerrig kan du finne dette i din siste loggfil.", + "DEBUG_DATA_LABEL": "Debugdata", + "LOG_FILES_BUTTON": "Vis Loggfiler", + "LOG_FILES_DESCRIPTION": "Åpne mappen som inneholder dine siste loggfiler.", + "LOG_FILES_LABEL": "Loggfiler", + "TITLE": "Debug" + }, + "WOW": { + "AUTO_UPDATE_DESCRIPTION": "Nye utvidelser du installerer vil bli satt til å oppdateres automatisk", + "AUTO_UPDATE_LABEL": "Automatisk Oppdatering", + "TITLE": "World of Warcraft", + "DEFAULT_ADDON_CHANNEL_LABEL": "Standard kanal for utvidelser", + "DEFAULT_ADDON_CHANNEL_SELECT_LABEL": "Kanal for Utvidelser", + "RESCAN_CLIENTS_BUTTON": "Skann Igjen", + "RESCAN_CLIENTS_LABEL": "Skann installerte World of Warcraft produkter på nytt" + } + } + }, + "DIALOGS": { + "ADDON_DETAILS": { + "VIEW_IN_BROWSER_BUTTON": "Se i nettleser" + }, + "ALERT": { + "POSITIVE_BUTTON": "Okey" + }, + "CONFIRM": { + "NEGATIVE_BUTTON": "Nei", + "POSITIVE_BUTTON": "Ja" + }, + "INSTALL_FROM_URL": { + "ADDON_URL_INPUT_LABEL": "Utvidelsens URL", + "ADDON_URL_INPUT_PLACEHOLDER": "Ex. GitHub eller WowInterface URL", + "CLOSE_BUTTON": "Lukk", + "IMPORT_BUTTON": "Importer", + "INSTALL_BUTTON": "Installer", + "INSTALL_SUCCESS_LABEL": "Installert!", + "TITLE": "Installer Utvidelse fra URL", + "DESCRIPTION": "Hvis du vil installere en utvidelse direkte fra en URL kan du lime den inn i feltet nedenfor.", + "SUPPORTED_SOURCES": "Støtter WowInterface og GitHub*" + }, + "TELEMETRY": { + "DESCRIPTION": "Hjelp meg med å forbedre WowUp ved å sende anyonyme data og feilmeldinger?", + "NEGATIVE_BUTTON": "Nei Takk!", + "POSITIVE_BUTTON": "Selvfølgelig!", + "TITLE": "WowUp Telemetri" + } + }, + "COMMON": { + "ADDON_STATUS": { + "BACKINGUP": "Sikkerhetskopierer", + "COMPLETE": "Installert", + "DOWNLOADING": "Laster Ned", + "INSTALLING": "Installerer", + "PENDING": "Venter", + "UNINSTALLING": "Avinstallerer", + "UPDATING": "Oppdaterer..." + }, + "ADDON_STATE": { + "UNINSTALL": "Avinstaller", + "IGNORED": "Ignorert", + "UPDATE": "Oppdater", + "INSTALL": "Installer", + "UPTODATE": "Oppdatert" + } + } +} From 999505f5a3cecd339ffb2ed429dc9aec0a750334 Mon Sep 17 00:00:00 2001 From: jliddev Date: Mon, 19 Oct 2020 12:36:17 -0500 Subject: [PATCH 9/9] Fix open file issue locking zips. Add a delete file method. --- wowup-electron/ipc-events.ts | 26 ++++++++++---- .../src/app/services/addons/addon.service.ts | 14 ++++++-- .../src/app/services/files/file.service.ts | 34 ++++++++++++++++++- .../src/app/services/wowup/wowup.service.ts | 26 ++++++++++++++ wowup-electron/src/common/constants.ts | 1 + 5 files changed, 91 insertions(+), 10 deletions(-) diff --git a/wowup-electron/ipc-events.ts b/wowup-electron/ipc-events.ts index 6aea993c..309d5cfa 100644 --- a/wowup-electron/ipc-events.ts +++ b/wowup-electron/ipc-events.ts @@ -22,6 +22,7 @@ import { RENAME_DIRECTORY_CHANNEL, READ_FILE_CHANNEL, GET_ASSET_FILE_PATH, + DELETE_FILE_CHANNEL, } from "./src/common/constants"; import { CurseGetScanResultsRequest } from "./src/common/curse/curse-get-scan-results-request"; import { CurseGetScanResultsResponse } from "./src/common/curse/curse-get-scan-results-response"; @@ -132,13 +133,10 @@ ipcMain.on(LIST_DIRECTORIES_CHANNEL, (evt, arg: ValueRequest) => { ipcMain.on(PATH_EXISTS_CHANNEL, (evt, arg: ValueRequest) => { const response: ValueResponse = { value: false }; - fs.open(arg.value, "r", (err, fid) => { + fs.access(arg.value, (err) => { if (err) { - if (err.code === "ENOENT") { - response.value = false; - } else { - response.error = err; - } + console.error(err); + response.value = true; } else { response.value = true; } @@ -243,6 +241,22 @@ ipcMain.on(DELETE_DIRECTORY_CHANNEL, (evt, arg: DeleteDirectoryRequest) => { }); }); +ipcMain.on(DELETE_FILE_CHANNEL, (evt, arg: ValueRequest) => { + console.log("Delete File", arg); + const response: ValueResponse = { + value: false, + }; + fs.unlink(arg.value, (err) => { + if (err) { + response.error = err; + } else { + response.value = true; + } + + evt.reply(arg.responseKey, response); + }); +}); + ipcMain.on(RENAME_DIRECTORY_CHANNEL, (evt, arg: CopyDirectoryRequest) => { console.log("Rename Dir", arg); fs.rename(arg.sourcePath, arg.destinationPath, (err) => { diff --git a/wowup-electron/src/app/services/addons/addon.service.ts b/wowup-electron/src/app/services/addons/addon.service.ts index 219fd9f1..93dd26c8 100644 --- a/wowup-electron/src/app/services/addons/addon.service.ts +++ b/wowup-electron/src/app/services/addons/addon.service.ts @@ -224,12 +224,20 @@ export class AddonService { // TODO track error } finally { - if (fs.existsSync(unzippedDirectory)) { + const unzippedDirectoryExists = await this._fileService.pathExists( + unzippedDirectory + ); + + const downloadedFilePathExists = await this._fileService.pathExists( + downloadedFilePath + ); + + if (unzippedDirectoryExists) { await this._fileService.deleteDirectory(unzippedDirectory); } - if (fs.existsSync(downloadedFilePath)) { - fs.unlinkSync(downloadedFilePath); + if (downloadedFilePathExists) { + await this._fileService.deleteFile(downloadedFilePath); } } diff --git a/wowup-electron/src/app/services/files/file.service.ts b/wowup-electron/src/app/services/files/file.service.ts index 909a696d..30f0a15e 100644 --- a/wowup-electron/src/app/services/files/file.service.ts +++ b/wowup-electron/src/app/services/files/file.service.ts @@ -2,6 +2,7 @@ import { Injectable } from "@angular/core"; import { COPY_DIRECTORY_CHANNEL, DELETE_DIRECTORY_CHANNEL, + DELETE_FILE_CHANNEL, GET_ASSET_FILE_PATH, LIST_DIRECTORIES_CHANNEL, LIST_FILES_CHANNEL, @@ -53,7 +54,11 @@ export class FileService { }); } - public pathExists(sourcePath: string) { + public pathExists(sourcePath: string): Promise { + if (!sourcePath) { + return Promise.resolve(false); + } + return new Promise((resolve, reject) => { const eventHandler = (_evt: any, arg: ValueResponse) => { if (arg.error) { @@ -91,6 +96,25 @@ export class FileService { }); } + public deleteFile(sourcePath: string): Promise { + return new Promise((resolve, reject) => { + const eventHandler = (_evt: any, arg: ValueResponse) => { + if (arg.error) { + return reject(arg.error); + } + resolve(arg.value); + }; + + const request: ValueRequest = { + value: sourcePath, + responseKey: uuidv4(), + }; + + this._electronService.ipcRenderer.once(request.responseKey, eventHandler); + this._electronService.ipcRenderer.send(DELETE_FILE_CHANNEL, request); + }); + } + public copyDirectory(sourcePath: string, destinationPath: string) { return new Promise((resolve, reject) => { const eventHandler = (_evt: any, arg: Error) => { @@ -173,6 +197,14 @@ export class FileService { }); } + public listEntries(sourcePath: string, filter: string) { + const globFilter = globrex(filter); + + return fs + .readdirSync(sourcePath, { withFileTypes: true }) + .filter((entry) => !!globFilter.regex.test(entry.name)); + } + public listFiles(sourcePath: string, filter: string) { const globFilter = globrex(filter); diff --git a/wowup-electron/src/app/services/wowup/wowup.service.ts b/wowup-electron/src/app/services/wowup/wowup.service.ts index be255680..321b1d9e 100644 --- a/wowup-electron/src/app/services/wowup/wowup.service.ts +++ b/wowup-electron/src/app/services/wowup/wowup.service.ts @@ -68,6 +68,8 @@ export class WowUpService { this.applicationVersion = _electronService.remote.app.getVersion(); this.isBetaBuild = this.applicationVersion.toLowerCase().indexOf("beta") != -1; + + this.cleanupDownloads(); } public get updaterExists() { @@ -308,4 +310,28 @@ export class WowUpService { ? WowUpReleaseChannelType.Beta : WowUpReleaseChannelType.Stable; } + + /** + * Clean up lost downloads in the download folder + */ + private async cleanupDownloads() { + const downloadFiles = this._fileService.listEntries( + this.applicationDownloadsFolderPath, + "*" + ); + + for (let entry of downloadFiles) { + const path = join(this.applicationDownloadsFolderPath, entry.name); + try { + if (entry.isDirectory()) { + await this._fileService.deleteDirectory(path); + } else { + await this._fileService.deleteFile(path); + } + } catch (e) { + console.error("Failed to delete download entry", path); + console.error(e); + } + } + } } diff --git a/wowup-electron/src/common/constants.ts b/wowup-electron/src/common/constants.ts index b98d2094..f83cd8b5 100644 --- a/wowup-electron/src/common/constants.ts +++ b/wowup-electron/src/common/constants.ts @@ -1,6 +1,7 @@ export const DOWNLOAD_FILE_CHANNEL = "download-file"; export const COPY_DIRECTORY_CHANNEL = "copy-directory"; export const DELETE_DIRECTORY_CHANNEL = "delete-directory"; +export const DELETE_FILE_CHANNEL = "delete-file"; export const RENAME_DIRECTORY_CHANNEL = "rename-directory"; export const STAT_DIRECTORY_CHANNEL = "stat-directory"; export const LIST_DIRECTORIES_CHANNEL = "list-directories";