This commit is contained in:
@@ -84,6 +84,7 @@
|
||||
allowLeave = false;
|
||||
let hasLinkedSetup = $state(false);
|
||||
let loadingVersions = $state<Set<number>>(new Set());
|
||||
let addingAllFiles = $state(false);
|
||||
const rowRequests = new Map<number, number>();
|
||||
let versionRequest = 0;
|
||||
let betaLabel = $state('');
|
||||
@@ -103,6 +104,9 @@
|
||||
picks.some((pick) => pick.scriptId === file.id && versionsFor(pick).length > 0))
|
||||
)
|
||||
);
|
||||
const remainingFiles = $derived(
|
||||
eligibleFiles.filter((file) => !picks.some((pick) => pick.scriptId === file.id))
|
||||
);
|
||||
const filesReady = $derived(
|
||||
picks.length > 0 &&
|
||||
picks.every(
|
||||
@@ -526,6 +530,22 @@
|
||||
loadingVersions = new Set([...loadingVersions].filter((key) => key !== pick.key));
|
||||
}
|
||||
}
|
||||
async function addAllFiles() {
|
||||
if (addingAllFiles || loadingVersions.size || !remainingFiles.length) return;
|
||||
const selected = picks.filter((pick) => pick.scriptId !== null);
|
||||
const additions = remainingFiles.map((file) => ({
|
||||
key: nextKey++,
|
||||
scriptId: file.id,
|
||||
versionId: null
|
||||
}));
|
||||
picks = [...selected, ...additions];
|
||||
addingAllFiles = true;
|
||||
try {
|
||||
await Promise.all(additions.map((_, index) => onPickFile(selected.length + index)));
|
||||
} finally {
|
||||
addingAllFiles = false;
|
||||
}
|
||||
}
|
||||
function toggleServer(name: string) {
|
||||
const next = new Set(pickedServers);
|
||||
if (next.has(name)) next.delete(name);
|
||||
@@ -749,11 +769,21 @@
|
||||
</p>{/if}{/if}
|
||||
</section>{/each}
|
||||
</div>
|
||||
<Button
|
||||
onclick={() =>
|
||||
(picks = [...picks, { key: nextKey++, scriptId: null, versionId: null }])}
|
||||
disabled={picks.length >= eligibleFiles.length}>Add file</Button
|
||||
>
|
||||
<div class="actions">
|
||||
<Button
|
||||
onclick={() =>
|
||||
(picks = [
|
||||
...picks,
|
||||
{ key: nextKey++, scriptId: null, versionId: null }
|
||||
])}
|
||||
disabled={picks.length >= eligibleFiles.length}>Add file</Button
|
||||
>
|
||||
<Button
|
||||
onclick={addAllFiles}
|
||||
disabled={!remainingFiles.length || loadingVersions.size > 0}
|
||||
loading={addingAllFiles}>Add all eligible files</Button
|
||||
>
|
||||
</div>
|
||||
<p class="muted">
|
||||
Combine files for different games in one beta. Each file installs only on
|
||||
servers matching its scope, and every file needs at least one test participant.
|
||||
|
||||
Reference in New Issue
Block a user