Skip to content

Commit 3da08b8

Browse files
committed
feat: required_on_remote info
1 parent 72cd1a6 commit 3da08b8

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/gql/mods/mod.graphql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ query GetMod($mod: String!) {
2727
version
2828
created_at
2929
game_version
30+
required_on_remote
3031
}
3132
beta {
3233
id
@@ -45,6 +46,7 @@ query GetMod($mod: String!) {
4546
version
4647
created_at
4748
game_version
49+
required_on_remote
4850
}
4951
release {
5052
id
@@ -63,6 +65,7 @@ query GetMod($mod: String!) {
6365
version
6466
created_at
6567
game_version
68+
required_on_remote
6669
}
6770
}
6871
downloads

src/lib/components/mods/ModLatestVersions.svelte

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import type { Version, VersionDependency, VersionTarget } from '$lib/generated';
99
import { T } from '@tolgee/svelte';
1010
11-
type IVersion = Pick<Version, 'id' | 'link' | 'version' | 'created_at'> & {
11+
type IVersion = Pick<Version, 'id' | 'link' | 'version' | 'created_at' | 'required_on_remote'> & {
1212
targets?: Pick<VersionTarget, 'targetName' | 'size' | 'hash'>[];
1313
} & { dependencies?: Pick<VersionDependency, 'mod_id' | 'optional' | 'condition'>[] };
1414
@@ -27,6 +27,34 @@
2727
export let modReference!: string;
2828
2929
export const { t } = getTranslate();
30+
31+
function formatRemote(targets: Pick<VersionTarget, 'targetName'>[]) {
32+
if (!Array.isArray(targets)) {
33+
return;
34+
}
35+
36+
const HasClient = targets.some((target) => target.targetName === 'Windows');
37+
const HasServer =
38+
targets.some((target) => target.targetName === 'WindowsServer') ||
39+
targets.some((target) => target.targetName === 'LinuxServer');
40+
41+
if (HasClient && !HasServer) {
42+
return $t({
43+
key: 'version.required_on_remote.client',
44+
defaultValue: `This mod is only required on the client to function, so no server builds are provided.`
45+
});
46+
} else if (!HasClient && HasServer) {
47+
return $t({
48+
key: 'version.required_on_remote.server',
49+
defaultValue: `This mod is only required on the server to function, so no client builds are provided.`
50+
});
51+
} else if (HasClient && HasServer) {
52+
return $t({
53+
key: 'version.required_on_remote.both',
54+
defaultValue: `This mod is only required on the server or the client to function, but not required on both. See mod page/documentation for details.`
55+
});
56+
}
57+
}
3058
</script>
3159

3260
<div class="card p-4">
@@ -62,6 +90,11 @@
6290
</a>
6391
</div>
6492
</div>
93+
{#if !latestVersions[stability].required_on_remote}
94+
<div class="grid grid-flow-row text-center">
95+
{formatRemote(latestVersions[stability].targets ?? [])}
96+
</div>
97+
{/if}
6598
<VersionTargetSupportGrid targets={latestVersions[stability].targets} />
6699
<VersionDependenciesGrid dependencies={latestVersions[stability].dependencies} />
67100
{/if}

0 commit comments

Comments
 (0)