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