Files
ToBePlayed-Frontend/src/utils/corrections.js
T
lobo 78ba0700c8
Build, Test & Push Frontend / quality-check (push) Successful in 18s
Build, Test & Push Frontend / docker (push) Successful in 24s
feat(library): add the merge duplicate dialog
2026-09-28 11:25:45 +02:00

44 lines
1.9 KiB
JavaScript

import {apiFetch} from './api.js';
import {ROLES} from './admin.js';
const JSON_HEADERS = {'Content-Type': 'application/json'};
const url = (appid, field) =>
`${import.meta.env.VITE_CORE_API_URL}/api/library/games/${appid}/corrections/${field}`;
/**
* IGDB's genre names, the values Core stores. Each has a STATS.GENRE key (see genreKey).
*/
export const IGDB_GENRES = ['Adventure', 'Arcade', 'Card & Board Game', 'Fighting', "Hack and slash/Beat 'em up",
'Indie', 'MOBA', 'Music', 'Pinball', 'Platform', 'Point-and-click', 'Puzzle', 'Quiz/Trivia', 'Racing',
'Real Time Strategy (RTS)', 'Role-playing (RPG)', 'Shooter', 'Simulator', 'Sport', 'Strategy', 'Tactical',
'Turn-based strategy (TBS)', 'Visual Novel'];
// SPEEDRUN is the speedrun link, not a stored mood.
export const CORRECTABLE_MOODS = ['STORY', 'COOP', 'CHILL', 'ACTION', 'SCARY'];
/**
* An AUDITOR or higher, by the active role: an admin viewing as USER cannot correct.
*/
export const canCorrect = (currentUser) =>
!!currentUser && ROLES.indexOf(currentUser.activeRole) >= ROLES.indexOf('AUDITOR');
/**
* PUT: 204, 400 {code: INVALID_CORRECTION, message}, 403 below AUDITOR, 404 unknown game.
*/
export const saveCorrection = (appid, field, value) =>
apiFetch(url(appid, field), {method: 'PUT', headers: JSON_HEADERS, body: JSON.stringify({value})});
/**
* DELETE: back to the source's value, 204.
*/
export const resetCorrection = (appid, field) => apiFetch(url(appid, field), {method: 'DELETE'});
/**
* POST: 200 {appid} = the key the game lives under now; 400 {code: SAME_GAME | STEAM_GAMES}, 403 below AUDITOR,
* 404 {code: GAME_NOT_FOUND} for a game not in ToBePlayed.
*/
export const mergeGame = (appid, otherAppid) =>
apiFetch(`${import.meta.env.VITE_CORE_API_URL}/api/library/games/${appid}/merge`,
{method: 'POST', headers: JSON_HEADERS, body: JSON.stringify({otherAppid})});