More misc fixes

This commit is contained in:
franzap
2024-05-08 22:45:06 -03:00
parent 1af5c934ff
commit 3e5cf98516
7 changed files with 48 additions and 39 deletions
+3 -1
View File
@@ -12,6 +12,8 @@ import 'package:zapstore/screens/updates_screen.dart';
import 'package:zapstore/widgets/app_drawer.dart';
import 'package:zapstore/screens/search_screen.dart';
const kDbVersion = 1;
void main() {
runApp(
ProviderScope(
@@ -23,7 +25,7 @@ void main() {
print('initializing local storage at $path');
return path;
},
clear: LocalStorageClearStrategy.always,
clear: LocalStorageClearStrategy.whenError,
),
)
],
+8 -9
View File
@@ -113,12 +113,12 @@ mixin AppAdapter on Adapter<App> {
params.remove('installed');
print('filtering by installed ${params['#d']}');
final apps = findAllLocal();
if (apps.isNotEmpty) {
loadAppModels(params);
return apps;
}
return loadAppModels(params);
// final apps = findAllLocal();
// if (apps.isNotEmpty) {
// loadAppModels(params);
// return apps;
// }
return await loadAppModels(params);
}
}
@@ -237,7 +237,7 @@ extension AppX on App {
sink.add(data);
downloadedBytes += data.length;
notifier.state =
DownloadingInstallProgress(downloadedBytes / totalBytes, uri.host);
DownloadingInstallProgress(downloadedBytes / totalBytes);
}, onError: (e) {
throw e;
}, onDone: () async {
@@ -270,8 +270,7 @@ class IdleInstallProgress extends AppInstallProgress {}
class DownloadingInstallProgress extends AppInstallProgress {
final double progress;
final String host;
DownloadingInstallProgress(this.progress, this.host);
DownloadingInstallProgress(this.progress);
}
class DeviceInstallProgress extends AppInstallProgress {}
+5 -1
View File
@@ -27,9 +27,13 @@ mixin UserAdapter on NostrAdapter<User> {
final k0s = list
.where((e) {
// filter shitty kind 0s
if (e['kind'] != 0 || !e['content'].toString().startsWith('{')) {
return false;
}
final map = Map<String, dynamic>.from(jsonDecode(e['content']));
final name = map['name'] ?? map['display_name'] ?? map['displayName'];
return e['kind'] == 0 && name != null;
return name != null;
})
.toList()
.groupSetsBy((e) => e['pubkey'] as String);
+12 -5
View File
@@ -33,6 +33,8 @@ class AppDetailScreen extends HookConsumerWidget {
final state = ref.apps.watchOne(model.id!,
alsoWatch: (_) =>
{_.releases, _.releases.artifacts, _.signer, _.developer});
// hack to refresh on install changes
final _ = ref.watch(installedAppProvider);
final app = state.model ?? model;
@@ -72,7 +74,11 @@ class AppDetailScreen extends HookConsumerWidget {
for (final i in app.images)
Padding(
padding: const EdgeInsets.only(right: 12),
child: CachedNetworkImage(imageUrl: i),
child: CachedNetworkImage(
imageUrl: i,
errorWidget: (_, __, ___) =>
Container(),
),
),
],
),
@@ -321,7 +327,7 @@ class ReleaseCard extends StatelessWidget {
Gap(10),
Container(
constraints: BoxConstraints(
maxHeight: 260,
maxHeight: 200,
),
child: Markdown(data: release.content),
),
@@ -426,9 +432,10 @@ class InstallButton extends ConsumerWidget {
'Update ${compact ? '' : 'to ${app.latestMetadata!.version!}'}',
maxLines: 1)
: Text('Install'),
DownloadingInstallProgress(progress: final p, host: final h) =>
Text(
'${compact ? '' : 'Downloading from $h '}${(p * 100).floor()}%'),
DownloadingInstallProgress(progress: final p) => Text(
'${(p * 100).floor()}%',
style: TextStyle(fontWeight: FontWeight.bold),
),
DeviceInstallProgress() => compact
? SizedBox(
width: 14, height: 14, child: CircularProgressIndicator())
+5 -12
View File
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_data/flutter_data.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:gap/gap.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
@@ -7,22 +7,15 @@ import 'package:zapstore/main.data.dart';
import 'package:zapstore/models/app.dart';
import 'package:zapstore/screens/app_detail_screen.dart';
// TODO check notifiers are disposed when pop()ing
final installedAppsStateProvider = StateNotifierProvider.autoDispose<
DataStateNotifier<List<App>>, DataState<List<App>>>((ref) {
print('running watchAllNotifier for updates');
return ref.apps.watchAllNotifier(
remote: true,
params: {'installed': true}).where((app) => app.installedVersion != null);
});
class UpdatesScreen extends HookConsumerWidget {
const UpdatesScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(installedAppsStateProvider);
// TODO workaround for bug in watchAll() when remote=true
useFuture(useMemoized(
() => ref.apps.findAll(remote: true, params: {'installed': true})));
final state = ref.apps.watchAll();
if (state.isLoading) {
return Center(
+10 -8
View File
@@ -178,14 +178,16 @@ class CircularImage extends StatelessWidget {
borderRadius: BorderRadius.circular(radius.toDouble()),
child: url == null
? fallbackContainer
: CachedNetworkImage(
imageUrl: url!,
errorWidget: (_, __, ___) => fallbackContainer,
useOldImageOnUrlChange: true,
fit: BoxFit.cover,
width: size,
height: size,
),
: (url!.endsWith('svg')
? fallbackContainer
: CachedNetworkImage(
imageUrl: url!,
errorWidget: (_, __, ___) => fallbackContainer,
useOldImageOnUrlChange: true,
fit: BoxFit.cover,
width: size,
height: size,
)),
);
}
}
+5 -3
View File
@@ -345,9 +345,11 @@ packages:
flutter_data:
dependency: "direct main"
description:
path: "../flutter_data"
relative: true
source: path
path: "."
ref: e54a2e
resolved-ref: e54a2e5152ae9189e9c6f4e49cba05e6ff867ba0
url: "https://github.com/flutterdata/flutter_data"
source: git
version: "2.0.0-rc3"
flutter_hooks:
dependency: "direct main"