mirror of
https://github.com/zapstore/zapstore.git
synced 2026-10-05 12:38:24 +00:00
Fix latest releases
This commit is contained in:
@@ -88,4 +88,5 @@ void errorHandler(Object exception, StackTrace? stack) {
|
||||
}
|
||||
await file.writeAsString(jsonEncode(errorMap));
|
||||
});
|
||||
throw exception;
|
||||
}
|
||||
|
||||
+5
-16
@@ -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,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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user