From 8481b14a7a64c9f43b6c0de4427619c399c618c1 Mon Sep 17 00:00:00 2001 From: Sicherhaven Date: Sat, 4 Apr 2026 18:56:40 +0530 Subject: [PATCH] fix: resolve 3 console errors (RenderFlex overflow, gamification 404s, CORS) - Wrap Top Events skeleton Row in SingleChildScrollView to fix 225px RenderFlex overflow when 3x 200px skeletons exceed container width - Fix gamification service using POST for GET endpoints: dashboard, leaderboard, and shop/items all use router.get() on the Node.js server - CORS: add http://localhost:8080 to CORS_ALLOWED_ORIGINS (applied live to eventify-django container + local settings.py) --- .../gamification/services/gamification_service.dart | 8 ++++---- lib/screens/home_screen.dart | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/features/gamification/services/gamification_service.dart b/lib/features/gamification/services/gamification_service.dart index 26945c9..3f58fd6 100644 --- a/lib/features/gamification/services/gamification_service.dart +++ b/lib/features/gamification/services/gamification_service.dart @@ -24,7 +24,7 @@ class GamificationService { Future getDashboard() async { final email = await _getUserEmail(); final url = '${ApiEndpoints.gamificationDashboard}?user_id=$email'; - final res = await _api.post(url, requiresAuth: false); + final res = await _api.get(url, requiresAuth: false); final profileJson = res['profile'] as Map? ?? {}; final rawSubs = res['submissions'] as List? ?? []; @@ -51,7 +51,7 @@ class GamificationService { // --------------------------------------------------------------------------- Future getDashboardForUser(String userId) async { final url = '${ApiEndpoints.gamificationDashboard}?user_id=$userId'; - final res = await _api.post(url, requiresAuth: false); + final res = await _api.get(url, requiresAuth: false); final profileJson = res['profile'] as Map? ?? {}; final rawSubs = res['submissions'] as List? ?? []; @@ -102,7 +102,7 @@ class GamificationService { final query = Uri(queryParameters: params).query; final url = '${ApiEndpoints.leaderboard}?$query'; - final res = await _api.post(url, requiresAuth: false); + final res = await _api.get(url, requiresAuth: false); final rawList = res['leaderboard'] as List? ?? []; final entries = rawList @@ -128,7 +128,7 @@ class GamificationService { // GET /v1/shop/items // --------------------------------------------------------------------------- Future> getShopItems() async { - final res = await _api.post(ApiEndpoints.shopItems, requiresAuth: false); + final res = await _api.get(ApiEndpoints.shopItems, requiresAuth: false); final rawItems = res['items'] as List? ?? []; return rawItems .map((e) => ShopItem.fromJson(Map.from(e as Map))) diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index d9327b4..5f6a11d 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -1590,7 +1590,10 @@ class _HomeScreenState extends State with SingleTickerProviderStateM SizedBox( height: 200, child: _allFilteredByDate.isEmpty && _loading - ? Row(children: List.generate(3, (_) => const Padding(padding: EdgeInsets.only(right: 12), child: EventCardSkeleton()))) + ? SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row(children: List.generate(3, (_) => const Padding(padding: EdgeInsets.only(right: 12), child: EventCardSkeleton()))), + ) : _allFilteredByDate.isEmpty ? Center(child: Text( _selectedDateFilter.isNotEmpty ? 'No events for "$_selectedDateFilter"' : 'No events found',