Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added resources/images/promo/trophy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions resources/lobby-card-overlays.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[
{
"slot": 2,
"offset": 0,
"interval": 1,
"ttl": 15000,
"video": {
"url": "/video/promo/ofm_card_intro.mp4",
"videoLength": 6
},
"image": {
"url": "/images/promo/trophy.png"
},
"displayInfo": {
"title": "Join the new OpenFront Masters tournament!",
"subtitle": "Sign up now",
"count": 40
},
"linkTo": "https://discord.gg/u5TnUxf43x"
},
{
"slot": 1,
"offset": 1,
"interval": 2,
"ttl": 15000,
"video": {
"url": "/video/promo/ofm_card_intro.mp4",
"videoLength": 6
},
"image": {
"url": "/images/promo/trophy.png"
},
"displayInfo": {
"title": "Join the new OpenFront Masters tournament!",
"subtitle": "Sign up now",
"count": 40
},
"linkTo": "https://discord.gg/u5TnUxf43x"
}
]
Binary file added resources/video/promo/ofm_card_intro.mp4
Binary file not shown.
26 changes: 25 additions & 1 deletion src/client/Api.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import lobbyCardOverlaysFallback from "resources/lobby-card-overlays.json";
import newsItemsFallback from "resources/news.json";
import { z } from "zod";
import type { NewsItem } from "../core/ApiSchemas";
import type { LobbyCardOverlay, NewsItem } from "../core/ApiSchemas";
import {
LobbyCardOverlaySchema,
ClaimAllRewardsResponse,
ClaimAllRewardsResponseSchema,
ClaimRewardResponse,
Expand Down Expand Up @@ -683,3 +685,25 @@ export async function getNews(): Promise<NewsItem[]> {
return newsItemsFallback as NewsItem[];
}
}

export async function getLobbyCardOverlays(): Promise<LobbyCardOverlay[]> {
try {
const res = await fetch(`${getApiBase()}/lobby-card-overlays.json`, {
headers: { Accept: "application/json" },
});
if (res.status !== 200) {
console.warn("getLobbyCardOverlays: unexpected status", res.status);
return lobbyCardOverlaysFallback as LobbyCardOverlay[];
}
const json = await res.json();
const parsed = z.array(LobbyCardOverlaySchema).safeParse(json);
if (!parsed.success) {
console.warn("getLobbyCardOverlays: Zod validation failed", parsed.error);
return lobbyCardOverlaysFallback as LobbyCardOverlay[];
}
return parsed.data;
} catch (err) {
console.warn("getLobbyCardOverlays: request failed, using fallback", err);
return lobbyCardOverlaysFallback as LobbyCardOverlay[];
}
}
Loading
Loading