From 18c1bce5b32bcdc6bd57bbcaa4100b8ba3c764b1 Mon Sep 17 00:00:00 2001 From: jliddev Date: Mon, 10 May 2021 10:22:24 -0500 Subject: [PATCH] Fix #848 --- .../addon-providers/curse-addon-provider.ts | 10 +++---- wowup-electron/src/app/app.component.ts | 3 -- .../pages/my-addons/my-addons.component.ts | 7 +++-- .../src/app/services/addons/addon.service.ts | 30 ++++++++++++++----- 4 files changed, 32 insertions(+), 18 deletions(-) diff --git a/wowup-electron/src/app/addon-providers/curse-addon-provider.ts b/wowup-electron/src/app/addon-providers/curse-addon-provider.ts index c86cd9f3..53cb145f 100644 --- a/wowup-electron/src/app/addon-providers/curse-addon-provider.ts +++ b/wowup-electron/src/app/addon-providers/curse-addon-provider.ts @@ -317,13 +317,13 @@ export class CurseAddonProvider extends AddonProvider { return response; } - private async getAddonsByFingerprints(fingerprints: number[]): Promise { - const url = `${API_URL}/fingerprint`; + // private async getAddonsByFingerprints(fingerprints: number[]): Promise { + // const url = `${API_URL}/fingerprint`; - console.log(`Curse Fetching fingerprints`, JSON.stringify(fingerprints)); + // console.log(`Curse Fetching fingerprints`, JSON.stringify(fingerprints)); - return await this._circuitBreaker.postJson(url, fingerprints); - } + // return await this._circuitBreaker.postJson(url, fingerprints); + // } private async getAllIds(addonIds: number[]): Promise { if (!addonIds?.length) { diff --git a/wowup-electron/src/app/app.component.ts b/wowup-electron/src/app/app.component.ts index 6306be33..92793c99 100644 --- a/wowup-electron/src/app/app.component.ts +++ b/wowup-electron/src/app/app.component.ts @@ -334,8 +334,6 @@ export class AppComponent implements OnInit, OnDestroy, AfterViewInit { } private onAddonSyncError = (error: AddonSyncError) => { - console.debug("onAddonSyncError", error); - const durationMs = 4000; let errorMessage = this.translate.instant("COMMON.ERRORS.ADDON_SYNC_ERROR", { providerName: error.providerName, }); @@ -360,7 +358,6 @@ export class AppComponent implements OnInit, OnDestroy, AfterViewInit { error.innerError instanceof GitHubFetchRepositoryError || error.innerError instanceof GitHubFetchReleasesError ) { - const err = error.innerError as GitHubFetchRepositoryError; errorMessage = this.translate.instant("COMMON.ERRORS.GITHUB_REPOSITORY_FETCH_ERROR", { addonName: error.addonName, }); diff --git a/wowup-electron/src/app/pages/my-addons/my-addons.component.ts b/wowup-electron/src/app/pages/my-addons/my-addons.component.ts index 8c1f874b..49733ac9 100644 --- a/wowup-electron/src/app/pages/my-addons/my-addons.component.ts +++ b/wowup-electron/src/app/pages/my-addons/my-addons.component.ts @@ -362,7 +362,6 @@ export class MyAddonsComponent implements OnInit, OnDestroy, AfterViewInit { try { console.debug("onRefresh"); await this.addonService.syncAllClients(); - // await this.addonService.syncInstallationAddons(this.selectedInstallation); await this.loadAddons(this.selectedInstallation); await this._wowUpAddonService.updateForInstallation(this.selectedInstallation); } catch (e) { @@ -933,7 +932,11 @@ export class MyAddonsComponent implements OnInit, OnDestroy, AfterViewInit { this._cdRef.detectChanges(); try { - const addons = await this.addonService.getAddons(installation, reScan); + let addons = await this.addonService.getAddons(installation, reScan); + if (reScan) { + await this.addonService.syncInstallationAddons(installation); + addons = await this.addonService.getAddons(installation, false); + } const rowData = this.formatAddons(addons); this.enableControls = this.calculateControlState(); diff --git a/wowup-electron/src/app/services/addons/addon.service.ts b/wowup-electron/src/app/services/addons/addon.service.ts index 3d387276..cd9942c7 100644 --- a/wowup-electron/src/app/services/addons/addon.service.ts +++ b/wowup-electron/src/app/services/addons/addon.service.ts @@ -967,6 +967,27 @@ export class AddonService { return this._addonStorage.getAllForInstallationId(installation.id); } + public async rescanInstallation(installation: WowInstallation): Promise { + if (!installation) { + return []; + } + + // Fetch existing installation addons + let addons = this._addonStorage.getAllForInstallationId(installation.id); + + // Collect info on filesystem addons + const newAddons = await this.scanAddons(installation); + + this._addonStorage.removeAllForInstallation(installation.id); + + // Map the old installation addon settings to the new ones + addons = this.updateAddons(addons, newAddons); + + await this._addonStorage.saveAll(addons); + + return addons; + } + public async getAddons(installation: WowInstallation, rescan = false): Promise { if (!installation) { return []; @@ -975,16 +996,9 @@ export class AddonService { let addons = this._addonStorage.getAllForInstallationId(installation.id); if (rescan || addons.length === 0) { - const newAddons = await this.scanAddons(installation); - this._addonStorage.removeAllForInstallation(installation.id); - - addons = this.updateAddons(addons, newAddons); - await this._addonStorage.saveAll(addons); + addons = await this.rescanInstallation(installation); } - // Only sync non-ignored addons - // const notIgnored = _.filter(addons, (addon) => addon.isIgnored === false); - return addons; }