diff --git a/wowup-electron/src/app/addon-providers/tukui-addon-provider.ts b/wowup-electron/src/app/addon-providers/tukui-addon-provider.ts index b5c1bedd..bda3f4ec 100644 --- a/wowup-electron/src/app/addon-providers/tukui-addon-provider.ts +++ b/wowup-electron/src/app/addon-providers/tukui-addon-provider.ts @@ -54,7 +54,9 @@ export class TukUiAddonProvider extends AddonProvider { try { const addons = await this.getAllAddons(clientType); - const filteredAddons = addons.filter((addon) => _.some(addonIds, (aid) => aid === addon.id)); + const filteredAddons = addons.filter((addon) => + _.some(addonIds, (aid) => aid.toString() === addon.id.toString()) + ); results = await this.mapAddonsToSearchResults(filteredAddons); } catch (err) { // _analyticsService.Track(ex, "Failed to search TukUi"); @@ -143,7 +145,7 @@ export class TukUiAddonProvider extends AddonProvider { name: tukUiAddon.name, author: tukUiAddon.author, downloadUrl: tukUiAddon.url, - externalId: tukUiAddon.id, + externalId: tukUiAddon.id.toString(), externalUrl: tukUiAddon.web_url, gameVersion: tukUiAddon.patch, installedAt: addonFolder.fileStats.birthtime, @@ -219,7 +221,7 @@ export class TukUiAddonProvider extends AddonProvider { return { author: addon.author, - externalId: addon.id, + externalId: addon.id.toString(), name: addon.name, thumbnailUrl: addon.screenshot_url, externalUrl: addon.web_url, diff --git a/wowup-electron/src/app/services/addons/addon.service.ts b/wowup-electron/src/app/services/addons/addon.service.ts index 9da74d01..51c205d1 100644 --- a/wowup-electron/src/app/services/addons/addon.service.ts +++ b/wowup-electron/src/app/services/addons/addon.service.ts @@ -751,7 +751,7 @@ export class AddonService { _.forEach(newAddons, (newAddon) => { const existingAddon = _.find( existingAddons, - (ea) => ea.externalId == newAddon.externalId && ea.providerName == newAddon.providerName + (ea) => ea.externalId.toString() === newAddon.externalId.toString() && ea.providerName == newAddon.providerName ); if (!existingAddon) { @@ -799,9 +799,11 @@ export class AddonService { const searchResults = await addonProvider.getAll(clientType, providerAddonIds); for (let result of searchResults) { - const addon = addons.find((addon) => addon.externalId === result?.externalId); + const addon = addons.find((addon) => addon.externalId.toString() === result?.externalId?.toString()); const latestFile = this.getLatestFile(result, addon?.channelType); + this.setExternalIdString(addon); + addon.summary = result.summary; addon.thumbnailUrl = result.thumbnailUrl; addon.latestChangelog = latestFile?.changelog || addon.latestChangelog; @@ -837,6 +839,16 @@ export class AddonService { } } + // Legacy TukUI/ElvUI ids were ints, correct them + private setExternalIdString(addon: Addon) { + if (typeof addon.externalId === "string") { + return; + } + + addon.externalId = `${addon.externalId}`; + this._addonStorage.set(addon.id, addon); + } + private getExternalIdsForProvider(addonProvider: AddonProvider, addons: Addon[]): string[] { return addons.filter((addon) => addon.providerName === addonProvider.name).map((addon) => addon.externalId); } @@ -1207,7 +1219,7 @@ export class AddonService { thumbnailUrl: searchResult.thumbnailUrl, latestVersion: latestFile.version, clientType: clientType, - externalId: searchResult.externalId, + externalId: searchResult.externalId.toString(), gameVersion: AddonUtils.getGameVersion(latestFile.gameVersion), author: searchResult.author, downloadUrl: latestFile.downloadUrl, diff --git a/wowup-electron/src/assets/changelog.json b/wowup-electron/src/assets/changelog.json index bad01360..9a89ba3a 100644 --- a/wowup-electron/src/assets/changelog.json +++ b/wowup-electron/src/assets/changelog.json @@ -212,6 +212,10 @@ "Add the showing of unmatched addon folders to 'My Addons'" ] }, + { + "Version": "2.0.3", + "changes": ["Fix an issue with legacy TukUI/ElvUI external IDs saved as ints"] + }, { "Version": "2.0.2", "changes": ["Fix an issue with a hardcoded hub URL"]