Store overhaul (#142)

* feat: small library tweaks + company page

* feat: new store view

* fix: ci merge error

* feat: add genres to store page

* feat: sorting

* feat: lock game/version imports while their tasks are running

* feat: feature games

* feat: tag based filtering

* fix: make tags alphabetical

* refactor: move a bunch of i18n to common

* feat: add localizations for everything

* fix: title description on panel

* fix: feature carousel text

* fix: i18n footer strings

* feat: add tag page

* fix: develop merge

* feat: offline games support (don't error out if provider throws)

* feat: tag management

* feat: show library next to game import + small fixes

* feat: most of the company and tag managers

* feat: company text field editing

* fix: small fixes + tsgo experiemental

* feat: upload icon and banner

* feat: store infinite scrolling and bulk import mode

* fix: lint

* fix: add drop-base to prettier ignore
This commit is contained in:
DecDuck
2025-07-30 13:40:49 +10:00
committed by GitHub
parent 1ae051f066
commit 8363de2eed
97 changed files with 3506 additions and 524 deletions

View File

@ -65,6 +65,11 @@ interface GameResult {
reviews?: Array<{
api_detail_url: string;
}>;
genres?: Array<{
name: string;
id: number;
}>;
}
interface ReviewResult {
@ -189,7 +194,7 @@ export class GiantBombProvider implements MetadataProvider {
context?.logger.warn(`Failed to import publisher "${pub}"`);
continue;
}
context?.logger.info(`Imported publisher "${pub}"`);
context?.logger.info(`Imported publisher "${pub.name}"`);
publishers.push(res);
}
}
@ -224,11 +229,7 @@ export class GiantBombProvider implements MetadataProvider {
const releaseDate = gameData.original_release_date
? DateTime.fromISO(gameData.original_release_date).toJSDate()
: DateTime.fromISO(
`${gameData.expected_release_year ?? new Date().getFullYear()}-${
gameData.expected_release_month ?? 1
}-${gameData.expected_release_day ?? 1}`,
).toJSDate();
: new Date();
context?.progress(85);
@ -249,6 +250,8 @@ export class GiantBombProvider implements MetadataProvider {
}
}
const tags = (gameData.genres ?? []).map((e) => e.name);
const metadata: GameMetadata = {
id: gameData.guid,
name: gameData.name,
@ -256,7 +259,7 @@ export class GiantBombProvider implements MetadataProvider {
description: longDescription,
released: releaseDate,
tags: [],
tags,
reviews,