Release Healer Man 0.1.6

This commit is contained in:
phenom committed 2026-08-20 14:05:50 -04:00
1 parent 55cfd43d66
commit b12fb84859
96 files changed
+10874 -609

No files matched your search

+76
View File
@@ -6,6 +6,8 @@ import {
type AccountResult,
} from "./accountRepository";
import type { CharacterProfile, PlayerSession } from "./types";
import type { OnlineGroupSnapshot, StartOnlineGroupActivityInput } from "./onlineGroupTypes";
import type { OnlineSessionSnapshot, OnlineSessionSyncInput } from "./onlineSessionTypes";
const NATIVE_API_ORIGIN = "https://iwanttoheal.phenomrom.com";
const SAVE_DEBOUNCE_MS = 500;
@@ -159,3 +161,77 @@ export async function logoutOnlineSession(session: PlayerSession | null): Promis
}
if (activeSession?.ownerId === session?.ownerId) activeSession = null;
}
function onlineGroupRequest<T>(session: PlayerSession, pathname: string, init: RequestInit = {}): Promise<T> {
if (!session.accessToken) throw new OnlineApiError("Online grouping requires a signed-in account.", 401);
return requestOnlineJson<T>(pathname, init, session.accessToken);
}
export function fetchOnlineGroup(session: PlayerSession): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group");
}
export async function inviteOnlineGroupPlayer(session: PlayerSession, username: string): Promise<OnlineGroupSnapshot> {
const response = await onlineGroupRequest<{ state: OnlineGroupSnapshot }>(session, "/api/online-group/invite", {
method: "POST",
body: JSON.stringify({ username }),
});
return response.state;
}
export function respondToOnlineGroupInvite(
session: PlayerSession,
inviteId: string,
accept: boolean,
): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group/invite/respond", {
method: "POST",
body: JSON.stringify({ inviteId, accept }),
});
}
export function leaveOnlineGroup(session: PlayerSession): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group/leave", { method: "POST" });
}
export function removeOnlineGroupPlayer(session: PlayerSession, accountId: string): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group/remove", {
method: "POST",
body: JSON.stringify({ accountId }),
});
}
export function updateOnlineGroupMember(
session: PlayerSession,
character: CharacterProfile,
role: string,
): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group/member", {
method: "PUT",
body: JSON.stringify({ character, role }),
});
}
export function startOnlineGroupActivity(
session: PlayerSession,
activity: StartOnlineGroupActivityInput,
): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group/activity", {
method: "POST",
body: JSON.stringify(activity),
});
}
export function clearOnlineGroupActivity(session: PlayerSession): Promise<OnlineGroupSnapshot> {
return onlineGroupRequest(session, "/api/online-group/activity/clear", { method: "POST" });
}
export function synchronizeOnlineSession(
session: PlayerSession,
input: OnlineSessionSyncInput,
): Promise<OnlineSessionSnapshot> {
return onlineGroupRequest(session, "/api/online-session/sync", {
method: "POST",
body: JSON.stringify(input),
});
}