Skip to content

Commit

Permalink
remove direct metadata provider
Browse files Browse the repository at this point in the history
  • Loading branch information
leo-lox committed Nov 20, 2024
1 parent 30af2c1 commit 5f1237c
Showing 1 changed file with 21 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:camelus/helpers/helpers.dart';
import 'package:camelus/helpers/nprofile_helper.dart';
import 'package:camelus/domain_layer/entities/nostr_note.dart';
import 'package:camelus/presentation_layer/providers/metadata_provider.dart';
import 'package:camelus/presentation_layer/providers/metadata_state_provider.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:url_launcher/url_launcher_string.dart';
Expand Down Expand Up @@ -35,8 +36,6 @@ class NoteCardSplitContent extends ConsumerStatefulWidget {
class _NoteCardSplitContentState extends ConsumerState<NoteCardSplitContent> {
final Map<String, dynamic> _tagsMetadata = {};

late final GetUserMetadata _metadataProvider;

List<String> imageLinks = [];

_NoteCardSplitContentState();
Expand All @@ -46,7 +45,6 @@ class _NoteCardSplitContentState extends ConsumerState<NoteCardSplitContent> {
@override
void initState() {
super.initState();
_metadataProvider = ref.read(metadataProvider);

imageLinks = _extractImages(widget.note);
body = _buildContent(widget.note.content);
Expand Down Expand Up @@ -90,7 +88,6 @@ class _NoteCardSplitContentState extends ConsumerState<NoteCardSplitContent> {
for (var word in words) {
if (profilePattern.hasMatch(word)) {
widgets.add(ProfileLink(
metadataProvider: _metadataProvider,
profileCallback: widget.profileCallback,
word: word,
));
Expand All @@ -100,7 +97,6 @@ class _NoteCardSplitContentState extends ConsumerState<NoteCardSplitContent> {
widgets.add(LegacyMentionHashtag(
note: widget.note,
tagsMetadata: _tagsMetadata,
metadataProvider: _metadataProvider,
profileCallback: widget.profileCallback,
word: word));
} else if (word.startsWith("#")) {
Expand Down Expand Up @@ -223,27 +219,25 @@ class HashtagLink extends StatelessWidget {
}
}

class LegacyMentionHashtag extends StatelessWidget {
class LegacyMentionHashtag extends ConsumerWidget {
const LegacyMentionHashtag({
super.key,
required NostrNote note,
required Map<String, dynamic> tagsMetadata,
required GetUserMetadata metadataProvider,
required Function(String p1) profileCallback,
required this.word,
}) : _note = note,
_tagsMetadata = tagsMetadata,
_metadataProvider = metadataProvider,
_profileCallback = profileCallback;

final NostrNote _note;
final Map<String, dynamic> _tagsMetadata;
final GetUserMetadata _metadataProvider;

final Function(String p1) _profileCallback;
final String word;

@override
Widget build(BuildContext context) {
Widget build(BuildContext context, WidgetRef ref) {
var indexString = word.replaceAll("#[", "").replaceAll("]", "");
int index;
try {
Expand All @@ -263,48 +257,33 @@ class LegacyMentionHashtag extends StatelessWidget {
var pubkeyHr =
"${pubkeyBech.substring(0, 5)}...${pubkeyBech.substring(pubkeyBech.length - 5)}";
_tagsMetadata[tag.value] = pubkeyHr;
var metadata =
_metadataProvider.getMetadataByPubkey(tag.value).first.timeout(
const Duration(seconds: 2),
);

final metadata = ref.watch(metadataStateProvider(tag.value)).userMetadata;

return GestureDetector(
onTap: () {
_profileCallback(tag.value);
},
child: FutureBuilder<UserMetadata?>(
future: metadata,
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(
"@${snapshot.data!.name ?? pubkeyHr}",
style: const TextStyle(color: Palette.primary, fontSize: 17),
);
}
return Text(
"@$pubkeyHr",
style: const TextStyle(color: Palette.primary, fontSize: 17),
);
}),
child: Text(
metadata != null ? "@${metadata.name ?? pubkeyHr}" : "@$pubkeyHr",
style: const TextStyle(color: Palette.primary, fontSize: 17),
),
);
}
}

class ProfileLink extends StatelessWidget {
class ProfileLink extends ConsumerWidget {
const ProfileLink({
super.key,
required GetUserMetadata metadataProvider,
required Function(String p1) profileCallback,
required this.word,
}) : _metadataProvider = metadataProvider,
_profileCallback = profileCallback;
}) : _profileCallback = profileCallback;

final GetUserMetadata _metadataProvider;
final Function(String p1) _profileCallback;
final String word;

@override
Widget build(BuildContext context) {
Widget build(BuildContext context, WidgetRef ref) {
var group = profilePattern.allMatches(word);
var match = group.first;
var cleaned = match.group(0);
Expand Down Expand Up @@ -336,29 +315,19 @@ class ProfileLink extends StatelessWidget {
final String pubkeyHr =
"${pubkeyBech.substring(0, 5)}:${pubkeyBech.substring(pubkeyBech.length - 5)}";

var metadata =
_metadataProvider.getMetadataByPubkey(myPubkeyHex).first.timeout(
const Duration(seconds: 2),
);
final myUserMetadata =
ref.watch(metadataStateProvider(myPubkeyHex)).userMetadata;

return GestureDetector(
onTap: () {
_profileCallback(myPubkeyHex);
},
child: FutureBuilder<UserMetadata?>(
future: metadata,
builder: (context, metadataSnp) {
if (metadataSnp.hasData) {
return Text(
"@${metadataSnp.data!.name ?? pubkeyHr}",
style: const TextStyle(color: Palette.primary, fontSize: 17),
);
}
return Text(
"@$pubkeyHr",
style: const TextStyle(color: Palette.primary, fontSize: 17),
);
}),
child: Text(
myUserMetadata != null
? "@${myUserMetadata.name ?? pubkeyHr}"
: "@$pubkeyHr",
style: const TextStyle(color: Palette.primary, fontSize: 17),
),
);
}
}

0 comments on commit 5f1237c

Please sign in to comment.