service_manager.dart 5.70 KiB
import 'package:flutter/foundation.dart';
import 'package:tuple/tuple.dart';
import '../data/models/contact.dart';
import '../data/models/node.dart';
import '../data/models/transaction_state.dart';
import 'api.dart';
import 'duniter_datapod_helper.dart';
import 'duniter_indexer_helper.dart';
import 'g1_v2_helper.dart';
import 'pay_result.dart';
import 'transaction_v1_parser.dart';
import 'transactions_v2_parser.dart';
abstract class DuniterService {
Future<Contact> getProfile(String pubKey,
{bool onlyProfile = false, bool resize = true, bool complete = false});
Future<List<Contact>> getProfiles(List<String> pubKeys);
Future<List<Contact>> searchWot(String searchPatternRaw);
Future<List<Contact>> searchProfiles(
{required String searchTermLower,
required String searchTerm,
required String searchTermCapitalized});
Future<Tuple2<Map<String, dynamic>?, Node>> getHistoryAndBalance(
String pubKeyRaw,
{int? pageSize = 10,
int? from,
int? to,
String? cursor,
required bool isConnected});
Future<TransactionState> transactionsParser(
Map<String, dynamic> txData, TransactionState state, String myPubKeyRaw);
Future<PayResult> pay(
{required List<String> to, required double amount, String? comment});
Future<String?> getProfileUserName(String pubKey);
Future<bool> createOrUpdateProfile(String name);
Future<bool> deleteProfile();
}
class DuniterServiceV1 implements DuniterService {
@override
Future<Contact> getProfile(String pubKey,
{bool onlyProfile = false, bool resize = true, bool complete = false}) {
return getProfileV1(pubKey, onlyCPlusProfile: onlyProfile, resize: resize);
}
@override
Future<List<Contact>> searchWot(String searchPatternRaw) {
return searchWotV1(searchPatternRaw);
}
@override
Future<List<Contact>> searchProfiles(
{required String searchTermLower,
required String searchTerm,
required String searchTermCapitalized}) {
return searchProfilesV1(
searchTermLower: searchTermLower,
searchTerm: searchTerm,
searchTermCapitalized: searchTermCapitalized);
}