From 67a9ca9e4fda7ae6c78a16c092ade2c8480fe1fb Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Sun, 6 Oct 2024 18:15:11 -0300 Subject: [PATCH] Fix latest releases --- lib/main.dart | 1 + lib/models/app.dart | 21 +++++---------------- lib/models/app_curation_set.dart | 3 ++- lib/models/file_metadata.dart | 10 ++++------ lib/models/release.dart | 9 ++++----- lib/models/user.dart | 7 +++---- lib/screens/search_screen.dart | 2 +- lib/utils/extensions.dart | 9 +++++++++ lib/widgets/latest_releases_container.dart | 7 +++++++ 9 files changed, 36 insertions(+), 33 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index a196ccd..7e64c5b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -88,4 +88,5 @@ void errorHandler(Object exception, StackTrace? stack) { } await file.writeAsString(jsonEncode(errorMap)); }); + throw exception; } diff --git a/lib/models/app.dart b/lib/models/app.dart index ff07953..fc94b29 100644 --- a/lib/models/app.dart +++ b/lib/models/app.dart @@ -20,6 +20,7 @@ import 'package:zapstore/models/release.dart'; import 'package:zapstore/models/user.dart'; import 'package:http/http.dart' as http; import 'package:path/path.dart' as path; +import 'package:zapstore/utils/extensions.dart'; import 'package:zapstore/utils/system_info.dart'; part 'app.g.dart'; @@ -41,12 +42,9 @@ class App extends BaseApp with DataModelMixin { required this.signer}); App.fromJson(super.map) - : developer = - BelongsTo.fromJson(map['developer'] as Map), - releases = - HasMany.fromJson(map['releases'] as Map), - signer = - BelongsTo.fromJson(map['signer'] as Map), + : developer = belongsTo(map['developer']), + releases = hasMany(map['releases']), + signer = belongsTo(map['signer']), super.fromJson(); Map toJson() => super.toMap(); @@ -273,9 +271,7 @@ mixin AppAdapter on Adapter { return z; } } - print('calling bottom loadappmodels'); - final loadedAppModels = await loadAppModels(params); - return loadedAppModels; + return await loadAppModels(params); } @override @@ -348,13 +344,6 @@ mixin AppAdapter on Adapter { } return super.deserialize(data); } - - @override - App deserializeLocal(map, {String? key}) { - return App.fromJson(map); - // map = transformDeserialize(map); - // return internalWrapStopInit(() => _$AppFromJson(map), key: key); - } } Future _isHashMismatch(String path, String hash) async { diff --git a/lib/models/app_curation_set.dart b/lib/models/app_curation_set.dart index 63c58ec..53eb987 100644 --- a/lib/models/app_curation_set.dart +++ b/lib/models/app_curation_set.dart @@ -2,6 +2,7 @@ import 'package:flutter_data/flutter_data.dart'; import 'package:purplebase/purplebase.dart'; import 'package:zapstore/models/app.dart'; import 'package:zapstore/models/nostr_adapter.dart'; +import 'package:zapstore/utils/extensions.dart'; part 'app_curation_set.g.dart'; @@ -13,7 +14,7 @@ class AppCurationSet extends BaseAppCurationSet AppCurationSet({required this.apps}); AppCurationSet.fromJson(super.map) - : apps = HasMany.fromJson(map['app'] as Map), + : apps = hasMany(map['app']), super.fromJson(); Map toJson() => super.toMap(); diff --git a/lib/models/file_metadata.dart b/lib/models/file_metadata.dart index 2164554..4aaef88 100644 --- a/lib/models/file_metadata.dart +++ b/lib/models/file_metadata.dart @@ -3,6 +3,7 @@ import 'package:purplebase/purplebase.dart'; import 'package:zapstore/models/nostr_adapter.dart'; import 'package:zapstore/models/release.dart'; import 'package:zapstore/models/user.dart'; +import 'package:zapstore/utils/extensions.dart'; part 'file_metadata.g.dart'; @@ -21,12 +22,9 @@ class FileMetadata extends BaseFileMetadata with DataModelMixin { required this.signer}); FileMetadata.fromJson(super.map) - : author = - BelongsTo.fromJson(map['author'] as Map), - release = - BelongsTo.fromJson(map['release'] as Map), - signer = - BelongsTo.fromJson(map['signer'] as Map), + : author = belongsTo(map['author']), + release = belongsTo(map['release']), + signer = belongsTo(map['signer']), super.fromJson(); Map toJson() => super.toMap(); diff --git a/lib/models/release.dart b/lib/models/release.dart index e7cbe29..ff1db79 100644 --- a/lib/models/release.dart +++ b/lib/models/release.dart @@ -5,6 +5,7 @@ import 'package:zapstore/models/app.dart'; import 'package:zapstore/models/file_metadata.dart'; import 'package:zapstore/models/nostr_adapter.dart'; import 'package:zapstore/models/user.dart'; +import 'package:zapstore/utils/extensions.dart'; part 'release.g.dart'; @@ -23,11 +24,9 @@ class Release extends BaseRelease with DataModelMixin { required this.signer}); Release.fromJson(super.map) - : app = BelongsTo.fromJson(map['app'] as Map), - artifacts = HasMany.fromJson( - map['artifacts'] as Map), - signer = - BelongsTo.fromJson(map['signer'] as Map), + : app = belongsTo(map['app']), + artifacts = hasMany(map['artifacts']), + signer = belongsTo(map['signer']), super.fromJson(); Map toJson() => super.toMap(); diff --git a/lib/models/user.dart b/lib/models/user.dart index 730e3a7..73a3f27 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -4,6 +4,7 @@ import 'package:collection/collection.dart'; import 'package:flutter_data/flutter_data.dart'; import 'package:purplebase/purplebase.dart'; import 'package:zapstore/models/nostr_adapter.dart'; +import 'package:zapstore/utils/extensions.dart'; part 'user.g.dart'; @@ -16,10 +17,8 @@ class User extends BaseUser with DataModelMixin { required this.following}); User.fromJson(super.map) - : followers = - HasMany.fromJson(map['followers'] as Map), - following = - HasMany.fromJson(map['following'] as Map), + : followers = hasMany(map['followers']), + following = hasMany(map['following']), super.fromJson(); Map toJson() => super.toMap(); diff --git a/lib/screens/search_screen.dart b/lib/screens/search_screen.dart index fa494c2..2e7aa67 100644 --- a/lib/screens/search_screen.dart +++ b/lib/screens/search_screen.dart @@ -110,7 +110,7 @@ class SearchScreen extends HookConsumerWidget { if (searchResultState.value?.isNotEmpty ?? false) for (final app in searchResultState.value!) AppCard(app: app), Gap(20), - // const CategoriesContainer(), + const CategoriesContainer(), Gap(20), const LatestReleasesContainer(), Gap(10), diff --git a/lib/utils/extensions.dart b/lib/utils/extensions.dart index 017bec7..c84a4cb 100644 --- a/lib/utils/extensions.dart +++ b/lib/utils/extensions.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_data/flutter_data.dart'; import 'package:toastification/toastification.dart'; extension ContextX on BuildContext { @@ -37,4 +38,12 @@ extension ContextX on BuildContext { } } +BelongsTo belongsTo>(Map map) { + return BelongsTo.fromJson(map); +} + +HasMany hasMany>(Map map) { + return HasMany.fromJson(map); +} + const kI = "e593c54f840b32054dcad0fac15d57e4ac6523e31fe26b3087de6b07a2e9af58"; diff --git a/lib/widgets/latest_releases_container.dart b/lib/widgets/latest_releases_container.dart index d440a0b..4b6f6da 100644 --- a/lib/widgets/latest_releases_container.dart +++ b/lib/widgets/latest_releases_container.dart @@ -14,6 +14,9 @@ class LatestReleasesContainer extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final state = ref.watch(latestReleasesAppProvider); + if (state.hasError) { + return Text(state.error.toString()); + } final apps = state.value ?? []; return Column( @@ -38,6 +41,10 @@ class LatestReleasesAppNotifier extends AutoDisposeAsyncNotifier> { final timer = Timer.periodic(Duration(hours: 4), (_) => fetch()); ref.onDispose(timer.cancel); fetch(); + // .catchError((e) { + // print('caught here'); + // throw e; + // }); return localFetch(); }