mirror of
https://gitlab.com/foxixus/neomovies_mobile.git
synced 2025-10-28 01:18:50 +05:00
fix: add Downloads screen to navigation and fix API models
1. Add Downloads screen to main navigation:
- Import DownloadsScreen in main_screen.dart
- Replace placeholder 'Downloads Page' with actual DownloadsScreen component
- Downloads tab now fully functional with torrent management
2. Fix authentication models for API compatibility:
- AuthResponse: Handle wrapped API response with 'data' field
- User model: Add 'verified' field, support both '_id' and 'id' fields
- Add toJson() method to User for serialization
- Fix parsing to match backend response format
3. Fix movie details screen (gray screen issue):
- Implement getExternalIds() in NeoMoviesApiClient
- Add IMDb ID fetching via /movies/{id}/external-ids endpoint
- Update api_client.dart to use new getExternalIds method
- Fix movie detail provider to properly load IMDb IDs
Changes:
- lib/presentation/screens/main_screen.dart: Add DownloadsScreen import and replace placeholder
- lib/data/models/auth_response.dart: Handle wrapped 'data' response
- lib/data/models/user.dart: Add verified field and toJson method
- lib/data/api/neomovies_api_client.dart: Add getExternalIds endpoint
- lib/data/api/api_client.dart: Implement getImdbId using external IDs
Result:
✅ Downloads tab works and shows torrent list
✅ Authentication properly parses API responses
✅ Movie detail screen loads IMDb IDs correctly
✅ All API models match backend format
This commit is contained in:
@@ -251,6 +251,30 @@ class NeoMoviesApiClient {
|
||||
return _fetchMovies('/tv/search', page: page, query: query);
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// External IDs (IMDb, TVDB, etc.)
|
||||
// ============================================
|
||||
|
||||
/// Get external IDs (IMDb, TVDB) for a movie or TV show
|
||||
Future<String?> getExternalIds(String mediaId, String mediaType) async {
|
||||
try {
|
||||
final uri = Uri.parse('$apiUrl/${mediaType}s/$mediaId/external-ids');
|
||||
final response = await _client.get(uri);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
final apiResponse = json.decode(response.body);
|
||||
final data = (apiResponse is Map && apiResponse['data'] != null)
|
||||
? apiResponse['data']
|
||||
: apiResponse;
|
||||
return data['imdb_id'] as String?;
|
||||
}
|
||||
return null;
|
||||
} catch (e) {
|
||||
print('Error getting external IDs: $e');
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// Unified Search
|
||||
// ============================================
|
||||
|
||||
Reference in New Issue
Block a user