Fix latest releases

This commit is contained in:
franzap
2024-10-06 18:15:11 -03:00
parent b8ecaa88c6
commit 67a9ca9e4f
9 changed files with 36 additions and 33 deletions
+1
View File
@@ -88,4 +88,5 @@ void errorHandler(Object exception, StackTrace? stack) {
}
await file.writeAsString(jsonEncode(errorMap));
});
throw exception;
}
+5 -16
View File
@@ -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<App> {
required this.signer});
App.fromJson(super.map)
: developer =
BelongsTo<User>.fromJson(map['developer'] as Map<String, dynamic>),
releases =
HasMany<Release>.fromJson(map['releases'] as Map<String, dynamic>),
signer =
BelongsTo<User>.fromJson(map['signer'] as Map<String, dynamic>),
: developer = belongsTo(map['developer']),
releases = hasMany(map['releases']),
signer = belongsTo(map['signer']),
super.fromJson();
Map<String, dynamic> toJson() => super.toMap();
@@ -273,9 +271,7 @@ mixin AppAdapter on Adapter<App> {
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<App> {
}
return super.deserialize(data);
}
@override
App deserializeLocal(map, {String? key}) {
return App.fromJson(map);
// map = transformDeserialize(map);
// return internalWrapStopInit(() => _$AppFromJson(map), key: key);
}
}
Future<bool> _isHashMismatch(String path, String hash) async {
+2 -1
View File
@@ -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<App>.fromJson(map['app'] as Map<String, dynamic>),
: apps = hasMany(map['app']),
super.fromJson();
Map<String, dynamic> toJson() => super.toMap();
+4 -6
View File
@@ -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<FileMetadata> {
required this.signer});
FileMetadata.fromJson(super.map)
: author =
BelongsTo<User>.fromJson(map['author'] as Map<String, dynamic>),
release =
BelongsTo<Release>.fromJson(map['release'] as Map<String, dynamic>),
signer =
BelongsTo<User>.fromJson(map['signer'] as Map<String, dynamic>),
: author = belongsTo(map['author']),
release = belongsTo(map['release']),
signer = belongsTo(map['signer']),
super.fromJson();
Map<String, dynamic> toJson() => super.toMap();
+4 -5
View File
@@ -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<Release> {
required this.signer});
Release.fromJson(super.map)
: app = BelongsTo<App>.fromJson(map['app'] as Map<String, dynamic>),
artifacts = HasMany<FileMetadata>.fromJson(
map['artifacts'] as Map<String, dynamic>),
signer =
BelongsTo<User>.fromJson(map['signer'] as Map<String, dynamic>),
: app = belongsTo(map['app']),
artifacts = hasMany(map['artifacts']),
signer = belongsTo(map['signer']),
super.fromJson();
Map<String, dynamic> toJson() => super.toMap();
+3 -4
View File
@@ -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<User> {
required this.following});
User.fromJson(super.map)
: followers =
HasMany<User>.fromJson(map['followers'] as Map<String, dynamic>),
following =
HasMany<User>.fromJson(map['following'] as Map<String, dynamic>),
: followers = hasMany(map['followers']),
following = hasMany(map['following']),
super.fromJson();
Map<String, dynamic> toJson() => super.toMap();
+1 -1
View File
@@ -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),
+9
View File
@@ -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<T> belongsTo<T extends DataModelMixin<T>>(Map<String, dynamic> map) {
return BelongsTo<T>.fromJson(map);
}
HasMany<T> hasMany<T extends DataModelMixin<T>>(Map<String, dynamic> map) {
return HasMany<T>.fromJson(map);
}
const kI = "e593c54f840b32054dcad0fac15d57e4ac6523e31fe26b3087de6b07a2e9af58";
@@ -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<List<App>> {
final timer = Timer.periodic(Duration(hours: 4), (_) => fetch());
ref.onDispose(timer.cancel);
fetch();
// .catchError((e) {
// print('caught here');
// throw e;
// });
return localFetch();
}