mnemo_cards/lib/features/packs/packs_api.dart

80 lines
2.1 KiB
Dart
Raw Normal View History

2024-05-22 20:48:44 +00:00
import 'dart:typed_data';
import 'package:dio/dio.dart';
2024-08-24 21:09:58 +00:00
import 'package:mnemo_cards/features/worker/worker_ext.dart';
2024-05-22 20:48:44 +00:00
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import '../../managers/repository/api.dart';
class PacksApi with Api {
final Dio _dio;
PacksApi(this._dio);
// previews for the main page
Future<List<CardPackPreviewDto>> getPacksPreviews(
Map<String, String?>? packData,
) async {
final r = await _dio.get(
'$path/packs/previews',
queryParameters: packData,
);
2024-06-12 23:00:13 +00:00
final previews =
2024-08-24 21:09:58 +00:00
(r.data! as String).isolatedDecodeList(CardPackPreviewDto.fromJson);
2024-05-22 20:48:44 +00:00
return previews;
}
// previews for the main page
Future<List<CardPackAction>> getPacksActions(
Map<String, String?>? packData,
) async {
final r = await _dio.get(
'$path/packs/actions',
queryParameters: packData,
);
2024-08-24 21:09:58 +00:00
final actions =
(r.data! as String).isolatedDecodeList(CardPackAction.fromJson);
2024-05-22 20:48:44 +00:00
return actions;
}
// pack dto for available packs or null
Future<CardPackDto?> getPackDto(String id) async {
final r = await _dio.get<String>(
'$path/pack/$id',
options: Options(
sendTimeout: Duration(seconds: 5),
receiveTimeout: Duration(seconds: 5),
),
);
2024-08-24 21:09:58 +00:00
return (r.data as String).isolatedDecode(CardPackDto.fromJson);
2024-05-22 20:48:44 +00:00
}
// buy page dto if not available
Future<CardPackBuyDto?> getPackBuy(String id) async {
final r = await _dio.get<String>(
'$path/pack/buy/$id',
options: Options(
sendTimeout: Duration(seconds: 5),
receiveTimeout: Duration(seconds: 5),
),
);
2024-08-24 21:09:58 +00:00
return (r.data as String).isolatedDecode(CardPackBuyDto.fromJson);
2024-05-22 20:48:44 +00:00
}
/// cards zip archive for available pack
/// unavailable packs transfer images by base64
Future<Uint8List> packImagesArchive(String packId) async {
final response = await _dio.get<Uint8List>(
'$path/pack/cards/$packId',
options: Options(
responseType: ResponseType.bytes,
),
);
final data = response.data;
if (data == null) {
return Uint8List.fromList([]);
}
return data;
}
}