Support new format (preparing for future NIP)

This commit is contained in:
franzap
2025-06-09 18:02:09 -03:00
parent d4ddc2d697
commit fc8aa42b4f
6 changed files with 18 additions and 20 deletions
+1 -1
View File
@@ -300,7 +300,7 @@ mixin AppAdapter on Adapter<App> {
releases = [];
}
} else {
// NEW FORMAT
// NEW FORMAT BRANCH
final futures = appsNewFormat
.map((app) => ref.releases.findAll(
params: {
+14 -4
View File
@@ -9,7 +9,6 @@ part 'file_metadata.g.dart';
@DataAdapter([NostrAdapter, FileMetadataAdapter])
class FileMetadata extends base.FileMetadata with DataModelMixin<FileMetadata> {
final BelongsTo<User> author;
final BelongsTo<Release> release;
final BelongsTo<User> signer;
@@ -17,8 +16,7 @@ class FileMetadata extends base.FileMetadata with DataModelMixin<FileMetadata> {
Object? get id => event.id;
FileMetadata.fromJson(super.map)
: author = belongsTo(map['author']),
release = belongsTo(map['release']),
: release = belongsTo(map['release']),
signer = belongsTo(map['signer']),
super.fromJson();
@@ -31,7 +29,19 @@ mixin FileMetadataAdapter on Adapter<FileMetadata> {
final list = data is Iterable ? data : [data as Map];
for (final e in list) {
final map = e as Map<String, dynamic>;
map['author'] = map['pubkey'];
final isNewFormat = map['kind'] == 3063;
if (isNewFormat) {
// Map to old 1063
map['kind'] = 1063;
map['tags'].add([
'min_sdk_version',
base.BaseUtil.getTag(map['tags'], 'min_os_version')
]);
map['tags'].add([
'target_sdk_version',
base.BaseUtil.getTag(map['tags'], 'target_os_version')
]);
}
}
return super.deserialize(data);
}
-13
View File
@@ -10,12 +10,6 @@ part of 'file_metadata.dart';
mixin _$FileMetadataAdapter on Adapter<FileMetadata> {
static final Map<String, RelationshipMeta> _kFileMetadataRelationshipMetas = {
'author': RelationshipMeta<User>(
name: 'author',
type: 'users',
kind: 'BelongsTo',
instance: (_) => (_ as FileMetadata).author,
),
'release': RelationshipMeta<Release>(
name: 'release',
inverseName: 'artifacts',
@@ -64,13 +58,6 @@ extension FileMetadataAdapterX on Adapter<FileMetadata> {
extension FileMetadataRelationshipGraphNodeX
on RelationshipGraphNode<FileMetadata> {
RelationshipGraphNode<User> get author {
final meta = _$FileMetadataAdapter._kFileMetadataRelationshipMetas['author']
as RelationshipMeta<User>;
return meta.clone(
parent: this is RelationshipMeta ? this as RelationshipMeta : null);
}
RelationshipGraphNode<Release> get release {
final meta =
_$FileMetadataAdapter._kFileMetadataRelationshipMetas['release']
+1
View File
@@ -178,6 +178,7 @@ mixin NostrAdapter<T extends DataModelMixin<T>> on Adapter<T> {
if (metadataIds.isNotEmpty)
ref.fileMetadata.findAll(
params: {
'kinds': {1063, 3063},
'ids': metadataIds,
'#m': [kAndroidMimeType],
'ignoreReturn': true,
+2 -1
View File
@@ -42,7 +42,8 @@ mixin ReleaseAdapter on Adapter<Release> {
for (final Map<String, dynamic> map in list) {
final tags = map['tags'];
map['app'] = base.BaseUtil.getTag(tags, 'a');
map['app'] = base.BaseUtil.getTag(tags, 'a') ??
'32267:${map['pubkey']}:${base.BaseUtil.getTag(tags, 'i')}';
map['artifacts'] = base.BaseUtil.getTagSet(tags, 'e').toList();
}
return super.deserialize(data);
-1
View File
@@ -31,7 +31,6 @@ class AppDetailScreen extends HookConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final scrollController = ScrollController();
// TODO: Bug using remote=true in watchOne, use hook for now
final snapshot = useFuture(useMemoized(() async {
// Skip cache to actually hit the remote to refresh
return await ref.apps