This commit is contained in:
@ -1,3 +1,4 @@
|
||||
import 'package:encrypt_shared_preferences/provider.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import 'package:f0ckapp/models/media_item.dart';
|
||||
@ -6,6 +7,9 @@ const List<String> mediaTypes = ["alles", "image", "video", "audio"];
|
||||
const List<String> mediaModes = ["sfw", "nsfw", "untagged", "all"];
|
||||
|
||||
class MediaService extends GetConnect {
|
||||
final EncryptedSharedPreferencesAsync storage =
|
||||
EncryptedSharedPreferencesAsync.getInstance();
|
||||
|
||||
Future<List<MediaItem>> fetchMediaItems({
|
||||
required int type,
|
||||
required int mode,
|
||||
@ -13,6 +17,11 @@ class MediaService extends GetConnect {
|
||||
String? tag,
|
||||
int? older,
|
||||
}) async {
|
||||
final String? token = await storage.getString('token');
|
||||
final Map<String, String> headers = token != null
|
||||
? {'Authorization': 'Bearer $token'}
|
||||
: {};
|
||||
|
||||
final queryParameters = {
|
||||
'type': type.toString(),
|
||||
'mode': mode.toString(),
|
||||
@ -22,9 +31,10 @@ class MediaService extends GetConnect {
|
||||
};
|
||||
|
||||
try {
|
||||
final response = await get(
|
||||
final Response<dynamic> response = await get(
|
||||
'https://api.f0ck.me/items/get',
|
||||
query: queryParameters,
|
||||
headers: headers,
|
||||
);
|
||||
if (response.status.code == 200 && response.body is List) {
|
||||
final data = response.body as List<dynamic>;
|
||||
@ -36,4 +46,62 @@ class MediaService extends GetConnect {
|
||||
return Future.error('Netzwerkfehler: ${e.toString()}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Favorite>?> toggleFavorite(
|
||||
MediaItem item,
|
||||
bool isFavorite,
|
||||
) async {
|
||||
final String? token = await storage.getString('token');
|
||||
if (token == null) return null;
|
||||
|
||||
final 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;
|
||||
}
|
||||
}
|
||||
|
||||
Future<MediaItem?> fetchItem(int itemId) async {
|
||||
final String? token = await storage.getString('token');
|
||||
final Map<String, String> headers = token != null
|
||||
? {'Authorization': 'Bearer $token'}
|
||||
: {};
|
||||
|
||||
try {
|
||||
final Response<dynamic> response = await get(
|
||||
'https://api.f0ck.me/item/$itemId',
|
||||
headers: headers,
|
||||
);
|
||||
if (response.status.code == 200 && response.body is Map) {
|
||||
return MediaItem.fromJson(response.body);
|
||||
}
|
||||
return null;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user