From 98da76f1d38a5c7044a5941cafd7caa46cdb6166 Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Wed, 15 Jan 2025 17:00:44 -0300 Subject: [PATCH] Vertex follows who follow impl --- lib/models/nostr_adapter.dart | 4 +++ lib/models/user.dart | 34 ++++++++----------- lib/widgets/follows_who_follow_container.dart | 3 +- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/models/nostr_adapter.dart b/lib/models/nostr_adapter.dart index 729dbe2..0d14499 100644 --- a/lib/models/nostr_adapter.dart +++ b/lib/models/nostr_adapter.dart @@ -14,6 +14,7 @@ import 'package:zapstore/widgets/latest_releases_container.dart'; // const kAppRelays = {'ws://10.0.2.2:3000'}; const kAppRelays = {'wss://relay.zapstore.dev'}; const kSocialRelays = {'wss://relay.damus.io', 'wss://relay.primal.net', 'ndk'}; +const kVertexRelay = {'wss://relay.vertexlab.io'}; mixin NostrAdapter> on Adapter { RelayMessageNotifier get relay => @@ -22,6 +23,9 @@ mixin NostrAdapter> on Adapter { RelayMessageNotifier get socialRelays => ref.read(relayProviderFamily(kSocialRelays).notifier); + RelayMessageNotifier get vertexRelay => + ref.read(relayProviderFamily(kVertexRelay).notifier); + @override Future onInitialized() async { await super.onInitialized(); diff --git a/lib/models/user.dart b/lib/models/user.dart index da3f4c5..a8f3a82 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -226,26 +226,20 @@ mixin UserAdapter on NostrAdapter { return super.deserialize(data); } - Future> getTrusted(String npub1, String npub2) async { - final url = 'https://trustgraph.live/api/fwf/$npub1/$npub2'; - final users = await sendRequest( - Uri.parse(url), - onSuccess: (response, label) async { - if (response.body == null) return null; - final map = - Map.from(jsonDecode(response.body.toString())); - - final trustedKeys = map.keys.map((npub) => npub.hexKey); - return await findAll( - params: {'authors': trustedKeys}, - onSuccess: (response, label, adapter) { - final data = deserialize(response.body); - return data.models; - }, - ); - }, - ); - return users!; + Future> getFollowsWhoFollow(String npub1, String npub2) async { + final search = jsonEncode({ + 'source': npub1.hexKey, + 'targets': [npub2.hexKey] + }); + final response = await ref.users.nostrAdapter.vertexRelay + .queryRaw(base.RelayRequest(kinds: {6312, 7000}, search: search)); + if (response.isEmpty || response.first['kind'] == 7000) { + return []; + } + final result = response.first['content']; + final pubkeyList = (jsonDecode(result) as List).map((e) => e['pubkey']); + final users = await findAll(params: {'authors': pubkeyList}); + return users; } } diff --git a/lib/widgets/follows_who_follow_container.dart b/lib/widgets/follows_who_follow_container.dart index e66c638..1e0d3d5 100644 --- a/lib/widgets/follows_who_follow_container.dart +++ b/lib/widgets/follows_who_follow_container.dart @@ -59,6 +59,7 @@ class FollowsWhoFollowContainer extends HookConsumerWidget { final followsWhoFollowProvider = FutureProvider.autoDispose .family, ({String from, String to})>((ref, arg) async { final _ = ref.watch(signedInUserProvider); - final users = await ref.users.userAdapter.getTrusted(arg.from, arg.to); + final users = + await ref.users.userAdapter.getFollowsWhoFollow(arg.from, arg.to); return users.toSet().toList(); });