mirror of
https://github.com/zapstore/zapstore.git
synced 2026-10-05 12:38:24 +00:00
Fix regression in zaps
This commit is contained in:
@@ -210,17 +210,22 @@ class _UserZapsList extends HookConsumerWidget {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
// Collect addressable tags for apps
|
||||
// Collect addressable tags for apps and metadata IDs
|
||||
final allAppTags = <String, Set<String>>{};
|
||||
final metadataIds = <String>{};
|
||||
for (final app in apps) {
|
||||
final appTags = app.event.addressableIdTagMap;
|
||||
for (final entry in appTags.entries) {
|
||||
allAppTags[entry.key] = {...?allAppTags[entry.key], ...entry.value};
|
||||
}
|
||||
final metadata = app.latestFileMetadata;
|
||||
if (metadata != null) {
|
||||
metadataIds.add(metadata.id);
|
||||
}
|
||||
}
|
||||
|
||||
// Query zaps on apps (via #a tag)
|
||||
final zapsState = ref.watch(
|
||||
final appZapsState = ref.watch(
|
||||
query<Zap>(
|
||||
tags: allAppTags,
|
||||
source: const LocalAndRemoteSource(relays: 'social'),
|
||||
@@ -228,7 +233,22 @@ class _UserZapsList extends HookConsumerWidget {
|
||||
),
|
||||
);
|
||||
|
||||
final allZaps = zapsState.models;
|
||||
// Query zaps on metadata (via #e tag) - for legacy compatibility
|
||||
final metadataZapsState = metadataIds.isNotEmpty
|
||||
? ref.watch(
|
||||
query<Zap>(
|
||||
tags: {'#e': metadataIds},
|
||||
source: const LocalAndRemoteSource(relays: 'social'),
|
||||
subscriptionPrefix: 'user-metadata-zaps',
|
||||
),
|
||||
)
|
||||
: null;
|
||||
|
||||
// Combine zaps from both queries
|
||||
final allZaps = {
|
||||
...appZapsState.models,
|
||||
if (metadataZapsState != null) ...metadataZapsState.models,
|
||||
};
|
||||
|
||||
if (allZaps.isEmpty) {
|
||||
return const SizedBox.shrink();
|
||||
|
||||
@@ -268,24 +268,15 @@ class SocialActionsRow extends HookConsumerWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _ZappersListSection extends StatelessWidget {
|
||||
class _ZappersListSection extends ConsumerWidget {
|
||||
const _ZappersListSection({required this.app});
|
||||
|
||||
final App app;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return _ZappersListSectionWithMetadata(app: app);
|
||||
}
|
||||
}
|
||||
|
||||
class _ZappersListSectionWithMetadata extends ConsumerWidget {
|
||||
const _ZappersListSectionWithMetadata({required this.app});
|
||||
|
||||
final App app;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final metadataId = app.latestFileMetadata?.id;
|
||||
|
||||
// Query zaps on app (via #a tag)
|
||||
final zapsState = ref.watch(
|
||||
query<Zap>(
|
||||
@@ -295,7 +286,24 @@ class _ZappersListSectionWithMetadata extends ConsumerWidget {
|
||||
),
|
||||
);
|
||||
|
||||
final allZaps = zapsState.models;
|
||||
// Query zaps on metadata (via #e tag) - for legacy compatibility
|
||||
final zapsOnMetadataState = metadataId != null
|
||||
? ref.watch(
|
||||
query<Zap>(
|
||||
tags: {
|
||||
'#e': {metadataId},
|
||||
},
|
||||
source: const LocalAndRemoteSource(relays: 'social'),
|
||||
subscriptionPrefix: 'metadata-zaps',
|
||||
),
|
||||
)
|
||||
: null;
|
||||
|
||||
// Combine zaps from both queries
|
||||
final allZaps = {
|
||||
...zapsState.models,
|
||||
if (zapsOnMetadataState != null) ...zapsOnMetadataState.models,
|
||||
};
|
||||
|
||||
if (allZaps.isEmpty) return const SizedBox.shrink();
|
||||
|
||||
|
||||
@@ -29,23 +29,40 @@ class ProfileAvatar extends StatelessWidget {
|
||||
height: radius * 2,
|
||||
fadeInDuration: const Duration(milliseconds: 500),
|
||||
fadeOutDuration: const Duration(milliseconds: 200),
|
||||
placeholder: (context, url) => const SizedBox.shrink(),
|
||||
errorWidget: (context, url, error) => Center(
|
||||
child: Icon(
|
||||
Icons.person_outline,
|
||||
color: AppColors.darkSkeletonHighlight,
|
||||
size: radius * 1.3,
|
||||
placeholder: (context, url) => Container(
|
||||
width: radius * 2,
|
||||
height: radius * 2,
|
||||
color: const Color(0xFF1A1A1A),
|
||||
child: Center(
|
||||
child: Icon(
|
||||
Icons.person,
|
||||
color: const Color(0xFF2C4A6B),
|
||||
size: radius * 1.2,
|
||||
),
|
||||
),
|
||||
),
|
||||
errorWidget: (context, url, error) => Container(
|
||||
width: radius * 2,
|
||||
height: radius * 2,
|
||||
color: const Color(0xFF1A1A1A),
|
||||
child: Center(
|
||||
child: Icon(
|
||||
Icons.person,
|
||||
color: const Color(0xFF2C4A6B),
|
||||
size: radius * 1.2,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
: SizedBox(
|
||||
: Container(
|
||||
width: radius * 2,
|
||||
height: radius * 2,
|
||||
color: const Color(0xFF1A1A1A),
|
||||
child: Center(
|
||||
child: Icon(
|
||||
Icons.person_outline,
|
||||
color: AppColors.darkSkeletonHighlight,
|
||||
size: radius * 1.3,
|
||||
Icons.person,
|
||||
color: const Color(0xFF0D1B2A),
|
||||
size: radius * 2,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user