This commit is contained in:
		
							
								
								
									
										86
									
								
								lib/services/api.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								lib/services/api.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
			
		||||
import 'package:encrypt_shared_preferences/provider.dart';
 | 
			
		||||
import 'package:get/get.dart';
 | 
			
		||||
 | 
			
		||||
import 'package:f0ckapp/models/item.dart';
 | 
			
		||||
import 'package:f0ckapp/models/feed.dart';
 | 
			
		||||
 | 
			
		||||
class ApiService extends GetConnect {
 | 
			
		||||
  final EncryptedSharedPreferencesAsync storage =
 | 
			
		||||
      EncryptedSharedPreferencesAsync.getInstance();
 | 
			
		||||
 | 
			
		||||
  Future<Feed> fetchItems({
 | 
			
		||||
    int? older,
 | 
			
		||||
    int? newer,
 | 
			
		||||
    int type = 0,
 | 
			
		||||
    int mode = 0,
 | 
			
		||||
    int random = 0,
 | 
			
		||||
    String? tag,
 | 
			
		||||
  }) async {
 | 
			
		||||
    String? token = await storage.getString('token');
 | 
			
		||||
    final params = <String, String>{
 | 
			
		||||
      'type': type.toString(),
 | 
			
		||||
      'mode': mode.toString(),
 | 
			
		||||
      'random': random.toString(),
 | 
			
		||||
    };
 | 
			
		||||
    if (older != null) params['older'] = older.toString();
 | 
			
		||||
    if (newer != null) params['newer'] = newer.toString();
 | 
			
		||||
    if (tag != null) params['tag'] = tag;
 | 
			
		||||
 | 
			
		||||
    final Map<String, String> headers = <String, String>{};
 | 
			
		||||
    if (token != null && token.isNotEmpty) {
 | 
			
		||||
      headers['Authorization'] = 'Bearer $token';
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    final Response<dynamic> response = await get(
 | 
			
		||||
      'https://api.f0ck.me/items_new/get',
 | 
			
		||||
      query: params,
 | 
			
		||||
      headers: headers,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (response.status.code == 200 && response.body is Map<String, dynamic>) {
 | 
			
		||||
      final Feed feed = Feed.fromJson(response.body as Map<String, dynamic>);
 | 
			
		||||
      feed.items.sort((a, b) => b.id.compareTo(a.id));
 | 
			
		||||
      return feed;
 | 
			
		||||
    } else {
 | 
			
		||||
      throw Exception('Fehler beim Laden der Items');
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Future<List<Favorite>?> toggleFavorite(
 | 
			
		||||
    MediaItem item,
 | 
			
		||||
    bool isFavorite,
 | 
			
		||||
  ) async {
 | 
			
		||||
    String? token = await storage.getString('token');
 | 
			
		||||
    if (token == null || token.isEmpty) return null;
 | 
			
		||||
 | 
			
		||||
    final Map<String, String> headers = {
 | 
			
		||||
      'Authorization': 'Bearer $token',
 | 
			
		||||
      'Content-Type': 'application/json',
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    try {
 | 
			
		||||
      Response response;
 | 
			
		||||
      if (!isFavorite) {
 | 
			
		||||
        response = await put(
 | 
			
		||||
          'https://api.f0ck.me/favorites/${item.id}',
 | 
			
		||||
          null,
 | 
			
		||||
          headers: headers,
 | 
			
		||||
        );
 | 
			
		||||
      } else {
 | 
			
		||||
        response = await delete(
 | 
			
		||||
          'https://api.f0ck.me/favorites/${item.id}',
 | 
			
		||||
          headers: headers,
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
      if (response.status.code == 200 && response.body is List) {
 | 
			
		||||
        return (response.body as List)
 | 
			
		||||
            .map((json) => Favorite.fromJson(json))
 | 
			
		||||
            .toList();
 | 
			
		||||
      } else {
 | 
			
		||||
        return null;
 | 
			
		||||
      }
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      return null;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user