mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
players from query
This commit is contained in:
parent
8fa199f735
commit
6ba687d9db
3 changed files with 30 additions and 7 deletions
|
|
@ -9,7 +9,7 @@ export interface SteamUser {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Api {
|
export class Api {
|
||||||
private base: string;
|
private readonly base: string;
|
||||||
|
|
||||||
constructor(base: string) {
|
constructor(base: string) {
|
||||||
this.base = base;
|
this.base = base;
|
||||||
|
|
@ -36,6 +36,20 @@ export class Api {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return await this.request('users/search', {query}) as SteamUser[];
|
const players = await this.request('users/search', {query}) as SteamUser[];
|
||||||
|
for (let player of players) {
|
||||||
|
localStorage.setItem(`player.${player.steamid}`, JSON.stringify(player));
|
||||||
|
}
|
||||||
|
return players
|
||||||
|
}
|
||||||
|
|
||||||
|
async getPlayer(id: string | number): Promise<SteamUser> {
|
||||||
|
const cached = localStorage.getItem(`player.${id}`);
|
||||||
|
if (cached) {
|
||||||
|
return JSON.parse(cached);
|
||||||
|
}
|
||||||
|
const player = await this.request(`users/${id}`, {}) as SteamUser;
|
||||||
|
localStorage.setItem(`player.${id}`, JSON.stringify(player));
|
||||||
|
return player;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import {render} from "solid-js/web";
|
import {render} from "solid-js/web";
|
||||||
import {ready} from "./ready";
|
import {ready} from "./ready";
|
||||||
import {FilterBar} from "./filterbar"
|
import {FilterBar} from "./filterbar"
|
||||||
import {Api} from "./api";
|
import {Api, SteamId} from "./api";
|
||||||
|
|
||||||
let lastFilter = {
|
let lastFilter = {
|
||||||
mode: "",
|
mode: "",
|
||||||
|
|
@ -9,21 +9,30 @@ let lastFilter = {
|
||||||
players: []
|
players: []
|
||||||
};
|
};
|
||||||
|
|
||||||
ready(() => {
|
ready(async () => {
|
||||||
const filterBar = document.getElementById('filter-bar');
|
const filterBar = document.getElementById('filter-bar');
|
||||||
const maps = filterBar.dataset.maps.split(",");
|
const maps = filterBar.dataset.maps.split(",");
|
||||||
const apiBase = filterBar.dataset.apiBase;
|
const apiBase = filterBar.dataset.apiBase;
|
||||||
const api = new Api(apiBase);
|
const api = new Api(apiBase);
|
||||||
const demoListBody = document.querySelector('.demolist tbody');
|
const demoListBody = document.querySelector('.demolist tbody');
|
||||||
const searchParams = new URLSearchParams(window.location.search);
|
const searchParams = new URLSearchParams(window.location.search);
|
||||||
|
const steamIds = (searchParams.get("players") || "").split(",").filter(id => id);
|
||||||
|
console.log(steamIds);
|
||||||
|
let players = [];
|
||||||
|
|
||||||
|
if (steamIds.length) {
|
||||||
|
players = await Promise.all(steamIds.map(steamId => api.getPlayer(steamId)));
|
||||||
|
console.log(players);
|
||||||
|
}
|
||||||
|
|
||||||
lastFilter = {
|
lastFilter = {
|
||||||
mode: searchParams.get("mode") || "",
|
mode: searchParams.get("mode") || "",
|
||||||
map: searchParams.get("map") || "",
|
map: searchParams.get("map") || "",
|
||||||
players: (searchParams.get("players") || "").split(",")
|
players,
|
||||||
};
|
};
|
||||||
|
|
||||||
render(() => <FilterBar maps={maps} api={api} initialFilter={lastFilter} onChange={onFilter.bind(null, api, demoListBody)}/>, filterBar);
|
render(() => <FilterBar maps={maps} api={api} initialFilter={lastFilter}
|
||||||
|
onChange={onFilter.bind(null, api, demoListBody)}/>, filterBar);
|
||||||
});
|
});
|
||||||
|
|
||||||
const filterEq = (a, b) => {
|
const filterEq = (a, b) => {
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ export const FilterBar = ({maps, api, onChange, initialFilter}: FilterBarProps)
|
||||||
map: "",
|
map: "",
|
||||||
});
|
});
|
||||||
}}/>
|
}}/>
|
||||||
<Select class="players" onChange={players => setFilterSet({
|
<Select class="players" initialValue={initialFilter.players} onChange={players => setFilterSet({
|
||||||
...filterSet(),
|
...filterSet(),
|
||||||
players
|
players
|
||||||
})} multiple placeholder="All Players" format={playerFormat} {...playerOptions} />
|
})} multiple placeholder="All Players" format={playerFormat} {...playerOptions} />
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue