diff --git a/backend/endpoints/sockets/scan.py b/backend/endpoints/sockets/scan.py index 8cec73b75..4eefa3ab9 100644 --- a/backend/endpoints/sockets/scan.py +++ b/backend/endpoints/sockets/scan.py @@ -7,7 +7,7 @@ import emoji import socketio # type: ignore -from config import REDIS_URL, SCAN_TIMEOUT +from config import DEV_MODE, REDIS_URL, SCAN_TIMEOUT from endpoints.responses.platform import PlatformSchema from endpoints.responses.rom import SimpleRomSchema from exceptions.fs_exceptions import ( @@ -545,13 +545,13 @@ async def scan_handler(_sid: str, options: dict): roms_ids = options.get("roms_ids", []) metadata_sources = options.get("apis", []) - # Uncomment this to run scan in the current process - # await scan_platforms( - # platform_ids=platform_ids, - # scan_type=scan_type, - # roms_ids=roms_ids, - # metadata_sources=metadata_sources, - # ) + if DEV_MODE: + return await scan_platforms( + platform_ids=platform_ids, + scan_type=scan_type, + roms_ids=roms_ids, + metadata_sources=metadata_sources, + ) return high_prio_queue.enqueue( scan_platforms, diff --git a/backend/handler/metadata/igdb_handler.py b/backend/handler/metadata/igdb_handler.py index 05f31f2fc..64496cae0 100644 --- a/backend/handler/metadata/igdb_handler.py +++ b/backend/handler/metadata/igdb_handler.py @@ -211,8 +211,9 @@ class IGDBHandler(MetadataHandler): def __init__(self) -> None: self.BASE_URL = "https://api.igdb.com/v4" self.platform_endpoint = f"{self.BASE_URL}/platforms" - self.platform_version_endpoint = f"{self.BASE_URL}/platform_versions" self.platforms_fields = PLATFORMS_FIELDS + self.platform_version_endpoint = f"{self.BASE_URL}/platform_versions" + self.platform_version_fields = PLATFORMS_VERSION_FIELDS self.games_endpoint = f"{self.BASE_URL}/games" self.games_fields = GAMES_FIELDS self.search_endpoint = f"{self.BASE_URL}/search" @@ -415,7 +416,7 @@ async def get_platform(self, slug: str) -> IGDBPlatform: # Check if platform is a version if not found platform_versions = await self._request( self.platform_version_endpoint, - data=f'fields {",".join(self.platforms_fields)}; where slug="{slug.lower()}";', + data=f'fields {",".join(self.platform_version_fields)}; where slug="{slug.lower()}";', ) version = pydash.get(platform_versions, "[0]", None) if version: @@ -747,6 +748,13 @@ async def get_oauth_token(self) -> str: "platform_logo.url", ) +PLATFORMS_VERSION_FIELDS = ( + "id", + "name", + "url", + "platform_logo.url", +) + GAMES_FIELDS = ( "id", "name", diff --git a/frontend/src/views/Gallery/Collection.vue b/frontend/src/views/Gallery/Collection.vue index 7ece97680..6b6685aaa 100644 --- a/frontend/src/views/Gallery/Collection.vue +++ b/frontend/src/views/Gallery/Collection.vue @@ -246,6 +246,7 @@ onMounted(async () => { window.addEventListener("wheel", onScroll); window.addEventListener("scroll", onScroll); + window.addEventListener("touchmove", onScroll); } }, { immediate: true }, // Ensure watcher is triggered immediately @@ -277,6 +278,7 @@ onMounted(async () => { window.addEventListener("wheel", onScroll); window.addEventListener("scroll", onScroll); + window.addEventListener("touchmove", onScroll); } }, { immediate: true }, // Ensure watcher is triggered immediately @@ -344,6 +346,7 @@ onBeforeRouteUpdate(async (to, from) => { onBeforeUnmount(() => { window.removeEventListener("wheel", onScroll); window.removeEventListener("scroll", onScroll); + window.removeEventListener("touchmove", onScroll); }); diff --git a/frontend/src/views/Gallery/Platform.vue b/frontend/src/views/Gallery/Platform.vue index 3b16193f8..677721b70 100644 --- a/frontend/src/views/Gallery/Platform.vue +++ b/frontend/src/views/Gallery/Platform.vue @@ -179,6 +179,8 @@ function onGameTouchEnd() { function onScroll() { if (galleryViewStore.currentView != 2) { + clearTimeout(timeout); + window.setTimeout(async () => { const { scrollTop, scrollHeight, clientHeight } = document.documentElement; @@ -252,6 +254,7 @@ onMounted(async () => { window.addEventListener("wheel", onScroll); window.addEventListener("scroll", onScroll); + window.addEventListener("touchmove", onScroll); } else { noPlatformError.value = true; } @@ -298,6 +301,7 @@ onBeforeRouteUpdate(async (to, from) => { onBeforeUnmount(() => { window.removeEventListener("wheel", onScroll); window.removeEventListener("scroll", onScroll); + window.removeEventListener("touchmove", onScroll); }); diff --git a/frontend/src/views/Gallery/Search.vue b/frontend/src/views/Gallery/Search.vue index f0118fc17..47dd35115 100644 --- a/frontend/src/views/Gallery/Search.vue +++ b/frontend/src/views/Gallery/Search.vue @@ -174,11 +174,13 @@ onMounted(async () => { resetGallery(); window.addEventListener("wheel", onScroll); window.addEventListener("scroll", onScroll); + window.addEventListener("touchmove", onScroll); }); onBeforeUnmount(() => { window.removeEventListener("wheel", onScroll); window.removeEventListener("scroll", onScroll); + window.removeEventListener("touchmove", onScroll); searchText.value = ""; });