mnemo_cards/lib/admin/admin_api.dart

76 lines
2 KiB
Dart
Raw Normal View History

2024-05-22 20:48:44 +00:00
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:mnemo_cards/di/injector.dart';
import 'package:mnemo_cards/features/packs/packs_api.dart';
import 'package:mnemo_cards/managers/repository/api.dart';
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import '../di/locator.dart';
class AdminApi with Api {
final Dio _dio;
AdminApi(this._dio);
Future<bool> addCard(GameCardDto dto) async {
final r = await _dio.post<String>('$path/cards/add',
data: jsonEncode(dto.toJson()));
return r.statusCode == 200;
}
Future<bool> deleteCard(GameCardDto dto) async {
final r = await _dio.post<String>(
'$path/cards/delete',
data: jsonEncode({'id': dto.id.toString()}),
);
return r.statusCode == 200;
}
Future<List<String>> getCardIds() async {
final r = await _dio.get<String>(
'$path/cards/ids',
);
return (jsonDecode(r.data!)['ids'] as String).split(',').cast();
}
Future<List<GameCardDto>> getCards(List<String> ids) async {
final r = await _dio.get<String>(
'$path/cards',
queryParameters: {'ids': ids.join(',')},
);
return (jsonDecode(r.data!) as List)
.map((e) => GameCardDto.fromJson(e as Map<String, dynamic>))
.toList()
.cast();
}
Future<EditCardPackDto?> getEditPack(String id) async {
final r = await _dio.get<String>(
'$path/pack/edit/$id',
);
return EditCardPackDto.fromJson(
jsonDecode(r.data as String) as Map<String, Object?>,
);
}
Future<bool> deletePack(EditCardPackDto dto) async {
final r = await _dio.post<String>(
'$path/pack/delete',
data: jsonEncode({'id': dto.id.toString()}),
);
return r.statusCode == 200;
}
Future<bool> editPack(EditCardPackDto dto) async {
final r = await _dio.post<String>(
'$path/pack/edit',
data: jsonEncode(dto.toJson()),
);
return r.statusCode == 200;
}
Future<List<CardPackPreviewDto>> packs() =>
getIt.get<PacksApi>().getPacksPreviews(null);
}