Compare commits

...

4 Commits

Author SHA1 Message Date
Renovate Bot
1e7f1645a6 Update react monorepo 2026-01-12 12:04:23 +00:00
8601d7ced1 fully remove opinions of deleted games 2026-01-12 12:29:00 +01:00
74941a8abc keep opinions of updated games and make sure games are sorted 2026-01-12 12:18:55 +01:00
86683d410f fix price display 2026-01-12 12:04:17 +01:00
3 changed files with 49 additions and 28 deletions

View File

@ -124,6 +124,19 @@ async fn update_game(
if let Some(existing) = games.iter_mut().find(|g| { if let Some(existing) = games.iter_mut().find(|g| {
(g.remote_id == game.remote_id && g.source == game.source) || (g.title == game.title) (g.remote_id == game.remote_id && g.source == game.source) || (g.title == game.title)
}) { }) {
if existing.title != game.title {
// Update title for every opinion
for person in user_list.lock().await.iter_mut() {
let opinion = person
.person
.opinion
.iter_mut()
.find(|o| o.title == existing.title);
if let Some(opinion) = opinion {
opinion.title = game.title.clone();
}
}
}
existing.title = game.title.clone(); existing.title = game.title.clone();
existing.source = game.source; existing.source = game.source;
existing.min_players = game.min_players; existing.min_players = game.min_players;
@ -133,6 +146,9 @@ async fn update_game(
r_existing = Some(existing.clone()); r_existing = Some(existing.clone());
} }
games.sort_unstable_by(|g1, g2| g1.title.cmp(&g2.title));
let users = user_list.lock().await; let users = user_list.lock().await;
save_state(&games, &users); save_state(&games, &users);
@ -154,7 +170,12 @@ async fn delete_game(
{ {
let game = games.remove(pos); let game = games.remove(pos);
let users = user_list.lock().await; let mut users = user_list.lock().await;
for person in users.iter_mut() {
person.person.opinion.retain_mut(|o| o.title != game.title);
}
save_state(&games, &users); save_state(&games, &users);
return Some(game); return Some(game);

View File

@ -16,13 +16,13 @@ importers:
version: 2.10.1 version: 2.10.1
react: react:
specifier: ^19.2.1 specifier: ^19.2.1
version: 19.2.1 version: 19.2.3
react-dom: react-dom:
specifier: ^19.2.1 specifier: ^19.2.1
version: 19.2.1(react@19.2.1) version: 19.2.3(react@19.2.3)
react-router-dom: react-router-dom:
specifier: ^7.10.1 specifier: ^7.10.1
version: 7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
devDependencies: devDependencies:
'@eslint/js': '@eslint/js':
specifier: ^9.39.1 specifier: ^9.39.1
@ -32,10 +32,10 @@ importers:
version: 24.10.1 version: 24.10.1
'@types/react': '@types/react':
specifier: ^19.2.7 specifier: ^19.2.7
version: 19.2.7 version: 19.2.8
'@types/react-dom': '@types/react-dom':
specifier: ^19.2.3 specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.7) version: 19.2.3(@types/react@19.2.8)
'@vitejs/plugin-react': '@vitejs/plugin-react':
specifier: ^5.1.2 specifier: ^5.1.2
version: 5.1.2(rolldown-vite@7.2.5(@types/node@24.10.1)) version: 5.1.2(rolldown-vite@7.2.5(@types/node@24.10.1))
@ -359,8 +359,8 @@ packages:
peerDependencies: peerDependencies:
'@types/react': ^19.2.0 '@types/react': ^19.2.0
'@types/react@19.2.7': '@types/react@19.2.8':
resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==}
'@typescript-eslint/eslint-plugin@8.48.1': '@typescript-eslint/eslint-plugin@8.48.1':
resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==} resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==}
@ -425,7 +425,7 @@ packages:
resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==} resolution: {integrity: sha512-EcA07pHJouywpzsoTUqNh5NwGayl2PPVEJKUSinGGSxFGYn+shYbqMGBg6FXDqgXum9Ou/ecb+411ssw8HImJQ==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies: peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 vite: npm:rolldown-vite@7.2.5
acorn-jsx@5.3.2: acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@ -863,10 +863,10 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'} engines: {node: '>=6'}
react-dom@19.2.1: react-dom@19.2.3:
resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==} resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies: peerDependencies:
react: ^19.2.1 react: ^19.2.3
react-refresh@0.18.0: react-refresh@0.18.0:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
@ -889,8 +889,8 @@ packages:
react-dom: react-dom:
optional: true optional: true
react@19.2.1: react@19.2.3:
resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
resolve-from@4.0.0: resolve-from@4.0.0:
@ -1354,11 +1354,11 @@ snapshots:
dependencies: dependencies:
undici-types: 7.16.0 undici-types: 7.16.0
'@types/react-dom@19.2.3(@types/react@19.2.7)': '@types/react-dom@19.2.3(@types/react@19.2.8)':
dependencies: dependencies:
'@types/react': 19.2.7 '@types/react': 19.2.8
'@types/react@19.2.7': '@types/react@19.2.8':
dependencies: dependencies:
csstype: 3.2.3 csstype: 3.2.3
@ -1845,28 +1845,28 @@ snapshots:
punycode@2.3.1: {} punycode@2.3.1: {}
react-dom@19.2.1(react@19.2.1): react-dom@19.2.3(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
scheduler: 0.27.0 scheduler: 0.27.0
react-refresh@0.18.0: {} react-refresh@0.18.0: {}
react-router-dom@7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-router-dom@7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react-router: 7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react-router: 7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-router@7.10.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-router@7.10.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
cookie: 1.1.1 cookie: 1.1.1
react: 19.2.1 react: 19.2.3
set-cookie-parser: 2.7.2 set-cookie-parser: 2.7.2
optionalDependencies: optionalDependencies:
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react@19.2.1: {} react@19.2.3: {}
resolve-from@4.0.0: {} resolve-from@4.0.0: {}

View File

@ -86,7 +86,7 @@ export function FilteredGamesList({
fontWeight: 600, fontWeight: 600,
}} }}
> >
{price === 0 ? "0 (Free)" : price} {price === 0 ? "0€ (Free)" : `${price}`}
</div> </div>
</div> </div>
<GameImage game={game} /> <GameImage game={game} />