blob: a111e08cce64101a8806691c1967d3e6d829cfa7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import {ThunderstoreMod} from "../../../../src-tauri/bindings/ThunderstoreMod";
import {NorthstarMod} from "../../../../src-tauri/bindings/NorthstarMod";
import {store} from "../../plugins/store";
/**
* Strips off a Thunderstore dependency string from its version
* (e.g. "taskinoz-WallrunningTitans-1.0.0" to
* "taskinoz-WallrunningTitans").
**/
function getThunderstoreDependencyStringPrefix(dependency: string): string {
const dependencyStringMembers = dependency.split('-');
return `${dependencyStringMembers[0]}-${dependencyStringMembers[1]}`;
}
function isThunderstoreModOutdated(mod: ThunderstoreMod): boolean {
// Ensure mod is up-to-date.
const tsModPrefix = getThunderstoreDependencyStringPrefix(mod.versions[0].full_name);
const matchingMods: NorthstarMod[] = store.state.installed_mods.filter((mod: NorthstarMod) => {
if (!mod.thunderstore_mod_string) return false;
return getThunderstoreDependencyStringPrefix(mod.thunderstore_mod_string!) === tsModPrefix;
});
if (matchingMods.length !== 0) {
// There shouldn't be several mods with same dependency string, but we never know...
const matchingMod = matchingMods[0];
// A mod is outdated if its dependency strings differs from Thunderstore dependency string
// (no need for semver check here).
// This assumes mod versions list is sorted from newest to oldest version.
return matchingMod.thunderstore_mod_string !== mod.versions[0].full_name;
}
return false;
}
export { isThunderstoreModOutdated };
|