major update
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user