@@ -106,6 +106,7 @@ import Game from '../../model/game/Game';
106
106
import ConflictManagementProvider from ' ../../providers/generic/installing/ConflictManagementProvider' ;
107
107
import { MOD_LOADER_VARIANTS } from ' ../../r2mm/installing/profile_installers/ModLoaderVariantRecord' ;
108
108
import ModalCard from ' ../ModalCard.vue' ;
109
+ import * as PackageDb from ' ../../r2mm/manager/PackageDexieStore' ;
109
110
110
111
interface DownloadProgress {
111
112
assignId: number ;
@@ -222,26 +223,26 @@ let assignId = 0;
222
223
async getModVersions() {
223
224
this .currentVersion = null ;
224
225
if (this .thunderstoreMod !== null ) {
225
- this .selectedVersion = this .thunderstoreMod .getVersions ()[0 ].getVersionNumber ().toString ();
226
- this .versionNumbers = this .thunderstoreMod .getVersions ()
227
- .map (value => value .getVersionNumber ().toString ());
226
+ this .selectedVersion = this .thunderstoreMod .getLatestVersion ().getVersionNumber ().toString ();
227
+ this .recommendedVersion = null ;
228
+
229
+ this .versionNumbers = await PackageDb .getPackageVersionNumbers (
230
+ this .activeGame .internalFolderName ,
231
+ this .thunderstoreMod .getFullName ()
232
+ );
228
233
229
234
const foundRecommendedVersion = MOD_LOADER_VARIANTS [this .activeGame .internalFolderName ]
230
235
.find (value => value .packageName === this .thunderstoreMod ! .getFullName ());
231
236
232
- if (foundRecommendedVersion === undefined || foundRecommendedVersion .recommendedVersion === undefined ) {
233
- this .recommendedVersion = null ;
234
- this .selectedVersion = this .thunderstoreMod .getVersions ()[0 ].getVersionNumber ().toString ();
235
- } else {
237
+ if (foundRecommendedVersion && foundRecommendedVersion .recommendedVersion ) {
236
238
this .recommendedVersion = foundRecommendedVersion .recommendedVersion .toString ();
237
239
238
- // Bind to recommended version or fall back to latest
239
- const thunderstoreRecommendedVersion = this .thunderstoreMod .getVersions ()
240
- .find (value => value .getVersionNumber ().isEqualTo (foundRecommendedVersion .recommendedVersion ! ));
241
- if (thunderstoreRecommendedVersion !== undefined ) {
242
- this .selectedVersion = thunderstoreRecommendedVersion .getVersionNumber ().toString ();
243
- } else {
244
- this .selectedVersion = this .thunderstoreMod .getVersions ()[0 ].getVersionNumber ().toString ()
240
+ // Auto-select recommended version if it's found.
241
+ const recommendedVersion = this .versionNumbers .find (
242
+ (ver ) => ver === foundRecommendedVersion .recommendedVersion ! .toString ()
243
+ );
244
+ if (recommendedVersion ) {
245
+ this .selectedVersion = recommendedVersion ;
245
246
}
246
247
}
247
248
@@ -259,18 +260,26 @@ let assignId = 0;
259
260
this .$store .commit (" closeDownloadModModal" );
260
261
}
261
262
262
- downloadThunderstoreMod() {
263
+ async downloadThunderstoreMod() {
263
264
const refSelectedThunderstoreMod: ThunderstoreMod | null = this .thunderstoreMod ;
264
265
const refSelectedVersion: string | null = this .selectedVersion ;
265
266
if (refSelectedThunderstoreMod === null || refSelectedVersion === null ) {
266
267
// Shouldn't happen, but shouldn't throw an error.
267
268
return ;
268
269
}
269
- const version = refSelectedThunderstoreMod .getVersions ()
270
- .find ((modVersion : ThunderstoreVersion ) => modVersion .getVersionNumber ().toString () === refSelectedVersion );
271
- if (version === undefined ) {
270
+
271
+ let version: ThunderstoreVersion ;
272
+
273
+ try {
274
+ version = await PackageDb .getVersionAsThunderstoreVersion (
275
+ this .activeGame .internalFolderName ,
276
+ refSelectedThunderstoreMod .getFullName (),
277
+ refSelectedVersion
278
+ );
279
+ } catch {
272
280
return ;
273
281
}
282
+
274
283
this .downloadHandler (refSelectedThunderstoreMod , version );
275
284
}
276
285
0 commit comments