major update

This commit is contained in:
Fabian Freund
2025-03-03 15:15:05 +01:00
parent 200c82a442
commit 20bdc4df3e
103 changed files with 2664 additions and 783 deletions
@@ -64,7 +64,6 @@ class SelectableChips<T extends S, S, K> extends StatelessWidget {
return ListView.builder(
controller: controller,
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: items.length,
itemBuilder: (context, index) {
final item = items[index];
+4 -4
View File
@@ -7,17 +7,17 @@ import 'package:skeletonizer/skeletonizer.dart';
class UrlIcon extends HookConsumerWidget {
final double iconSize;
final Uri url;
final List<Uri> urlList;
const UrlIcon(this.url, {required this.iconSize, super.key});
const UrlIcon(this.urlList, {required this.iconSize, super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final icon = useCachedFuture(
() =>
// ignore: discarded_futures
ref.read(genericWebsiteServiceProvider.notifier).getUrlIcon(url),
[url],
ref.read(genericWebsiteServiceProvider.notifier).getUrlIcon(urlList),
[urlList],
);
return Skeletonizer(
@@ -1,5 +1,8 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:lensai/core/routing/routes.dart';
import 'package:lensai/data/models/web_page_info.dart';
import 'package:lensai/extensions/nullable.dart';
import 'package:lensai/presentation/controllers/website_title.dart';
@@ -17,11 +20,12 @@ class WebsiteFeedTile extends HookConsumerWidget {
final pageInfoAsync =
(precachedInfo?.feeds != null)
? AsyncValue.data(precachedInfo!)
: ref.watch(pageInfoProvider(url));
: ref.watch(pageInfoProvider(url, isImageRequest: false));
return Skeletonizer(
enabled: pageInfoAsync.isLoading && precachedInfo?.feeds == null,
child: pageInfoAsync.when(
skipLoadingOnReload: true,
data: (info) {
if (info.feeds.isEmpty) {
return const SizedBox.shrink();
@@ -39,6 +43,13 @@ class WebsiteFeedTile extends HookConsumerWidget {
),
),
),
onTap: () async {
await SelectFeedDialogRoute(
feedsJson: jsonEncode(
info.feeds!.map((feed) => feed.toString()).toList(),
),
).push(context);
},
);
},
error: (error, stackTrace) {
@@ -16,11 +16,12 @@ class WebsiteTitleTile extends HookConsumerWidget {
final pageInfoAsync =
(precachedInfo?.isPageInfoComplete ?? false)
? AsyncValue.data(precachedInfo!)
: ref.watch(pageInfoProvider(url));
: ref.watch(pageInfoProvider(url, isImageRequest: false));
return Skeletonizer(
enabled: pageInfoAsync.isLoading && precachedInfo == null,
child: pageInfoAsync.when(
skipLoadingOnReload: true,
data: (info) {
return ListTile(
leading: RawImage(
@@ -36,7 +37,8 @@ class WebsiteTitleTile extends HookConsumerWidget {
error: (error, stackTrace) {
return FailureWidget(
title: error.toString(),
onRetry: () => ref.refresh(pageInfoProvider(url)),
onRetry:
() => ref.refresh(pageInfoProvider(url, isImageRequest: false)),
);
},
loading: