feat(useragent::evm): basic list & creation

This commit is contained in:
hdbg
2026-03-16 03:13:05 +01:00
parent fac312d860
commit 6ed8150e48
9 changed files with 603 additions and 111 deletions

View File

@@ -1,23 +1,40 @@
import 'package:arbiter/features/connection/connection.dart';
import 'package:arbiter/proto/evm.pb.dart';
import 'package:arbiter/proto/user_agent.pb.dart';
import 'package:arbiter/providers/connection/connection_manager.dart';
import 'package:protobuf/well_known_types/google/protobuf/empty.pb.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'evm.g.dart';
@riverpod
class Evm extends _$Evm {
@override
Future<List<WalletEntry>?> build() async {
final connection = await ref.watch(connectionManagerProvider.future);
if (connection == null) {
return null;
}
await connection.send(UserAgentRequest(
evmWalletList: Empty()
));
return listEvmWallets(connection);
}
final response = await connection.receive();
Future<void> refreshWallets() async {
final connection = await ref.read(connectionManagerProvider.future);
if (connection == null) {
state = const AsyncData(null);
return;
}
state = const AsyncLoading();
state = await AsyncValue.guard(() => listEvmWallets(connection));
}
Future<void> createWallet() async {
final connection = await ref.read(connectionManagerProvider.future);
if (connection == null) {
throw Exception('Not connected to the server.');
}
await createEvmWallet(connection);
state = await AsyncValue.guard(() => listEvmWallets(connection));
}
}