diff --git a/backend/handler/database/roms_handler.py b/backend/handler/database/roms_handler.py index e9cca91aa..161fae962 100644 --- a/backend/handler/database/roms_handler.py +++ b/backend/handler/database/roms_handler.py @@ -276,18 +276,19 @@ class DBRomsHandler(DBBaseHandler): rom_user = self.get_rom_user_by_id(id) - if data.get("is_main_sibling", False): - rom = self.get_rom(rom_user.rom_id) + if not data.get("is_main_sibling", False): + return rom_user - session.execute( - update(RomUser) - .where( - and_( - RomUser.rom_id.in_(r.id for r in rom.sibling_roms), - RomUser.user_id == rom_user.user_id, - ) + rom = self.get_rom(rom_user.rom_id) + session.execute( + update(RomUser) + .where( + and_( + RomUser.rom_id.in_(r.id for r in rom.sibling_roms), + RomUser.user_id == rom_user.user_id, ) - .values(is_main_sibling=False) ) + .values(is_main_sibling=False) + ) return self.get_rom_user_by_id(id) diff --git a/frontend/src/components/common/Game/AdminMenu.vue b/frontend/src/components/common/Game/AdminMenu.vue index e6078680d..8d6cc6fe8 100644 --- a/frontend/src/components/common/Game/AdminMenu.vue +++ b/frontend/src/components/common/Game/AdminMenu.vue @@ -64,7 +64,7 @@ async function switchFromFavourites() { } await collectionApi .updateCollection({ collection: favCollection.value as Collection }) - .then(({ data }) => { + .then(() => { emitter?.emit("snackbarShow", { msg: `${props.rom.name} ${ collectionsStore.isFav(props.rom) ? "added to" : "removed from" @@ -101,6 +101,8 @@ async function resetLastPlayed() { color: "green", timeout: 2000, }); + + romsStore.removeFromContinuePlaying(props.rom); }) .catch((error) => { console.log(error); diff --git a/frontend/src/services/api/rom.ts b/frontend/src/services/api/rom.ts index 4347a755b..49c5594ba 100644 --- a/frontend/src/services/api/rom.ts +++ b/frontend/src/services/api/rom.ts @@ -187,7 +187,7 @@ async function updateUserRomProps({ romId: number; data: Partial; updateLastPlayed?: boolean; -}): Promise<{ data: DetailedRom }> { +}): Promise<{ data: RomUserSchema }> { return api.put(`/roms/${romId}/props`, { data: data, update_last_played: updateLastPlayed, diff --git a/frontend/src/stores/roms.ts b/frontend/src/stores/roms.ts index 305d1c4ea..be3168fd3 100644 --- a/frontend/src/stores/roms.ts +++ b/frontend/src/stores/roms.ts @@ -101,9 +101,17 @@ export default defineStore("roms", { addToRecent(rom: SimpleRom) { this.recentRoms = [rom, ...this.recentRoms]; }, + removeFromRecent(rom: SimpleRom) { + this.recentRoms = this.recentRoms.filter((value) => value.id !== rom.id); + }, addToContinuePlaying(rom: SimpleRom) { this.continuePlayingRoms = [rom, ...this.continuePlayingRoms]; }, + removeFromContinuePlaying(rom: SimpleRom) { + this.continuePlayingRoms = this.continuePlayingRoms.filter( + (value) => value.id !== rom.id, + ); + }, update(rom: SimpleRom) { this.allRoms = this.allRoms.map((value) => value.id === rom.id ? rom : value,