59 lines
2.1 KiB
JavaScript
59 lines
2.1 KiB
JavaScript
import { getCampaign, getCampaignLog, getCampaigns, getHealth, getMe, getRulesets } from "../generated/api-client.js";
|
|
import { syncSelectedCharacter } from "./state.js";
|
|
export async function refreshHealth(elements) {
|
|
const health = await getHealth();
|
|
elements.healthElement.textContent = `API status: ${health.status}`;
|
|
}
|
|
export async function ensureRulesets(state, elements) {
|
|
if (state.rulesets.length > 0) {
|
|
return;
|
|
}
|
|
state.rulesets = await getRulesets();
|
|
elements.campaignRulesetSelect.innerHTML = state.rulesets
|
|
.map((ruleset) => `<option value="${ruleset.id}">${ruleset.name}</option>`)
|
|
.join("");
|
|
}
|
|
export async function reloadSession(state) {
|
|
try {
|
|
const me = await getMe();
|
|
state.user = me.user;
|
|
state.activeCharacterId = me.activeCharacterId ?? null;
|
|
state.selectedCampaignId = me.currentCampaignId ?? state.selectedCampaignId;
|
|
}
|
|
catch {
|
|
state.user = null;
|
|
state.activeCharacterId = null;
|
|
}
|
|
}
|
|
export async function reloadCampaigns(state, preferredCampaignId) {
|
|
state.campaigns = await getCampaigns();
|
|
if (state.campaigns.length === 0) {
|
|
state.selectedCampaignId = null;
|
|
return;
|
|
}
|
|
const availableIds = new Set(state.campaigns.map((campaign) => campaign.id));
|
|
if (preferredCampaignId && availableIds.has(preferredCampaignId)) {
|
|
state.selectedCampaignId = preferredCampaignId;
|
|
return;
|
|
}
|
|
if (state.selectedCampaignId && availableIds.has(state.selectedCampaignId)) {
|
|
return;
|
|
}
|
|
state.selectedCampaignId = state.campaigns[0].id;
|
|
}
|
|
export async function reloadSelectedCampaign(state) {
|
|
if (!state.selectedCampaignId) {
|
|
state.selectedCampaign = null;
|
|
return;
|
|
}
|
|
state.selectedCampaign = await getCampaign(state.selectedCampaignId);
|
|
syncSelectedCharacter(state);
|
|
}
|
|
export async function reloadCampaignLog(state) {
|
|
if (!state.selectedCampaignId) {
|
|
state.campaignLog = [];
|
|
return;
|
|
}
|
|
state.campaignLog = await getCampaignLog(state.selectedCampaignId);
|
|
}
|