Add missing routing asset warning

This commit is contained in:
problematicconsumer
2023-12-12 17:35:44 +03:30
parent 339aabda3f
commit 4c2a412820
6 changed files with 59 additions and 5 deletions

View File

@@ -233,7 +233,8 @@
"download": "Download", "download": "Download",
"failureMsg": "Failed to update asset", "failureMsg": "Failed to update asset",
"successMsg": "Successfully updated asset", "successMsg": "Successfully updated asset",
"addRecommended": "Add Recommended Assets" "addRecommended": "Add Recommended Assets",
"missingGeoAssetsMsg": "Selected routing assets' files are missing. Either download them or choose existing ones."
} }
}, },
"about": { "about": {

View File

@@ -233,7 +233,8 @@
"download": "دانلود", "download": "دانلود",
"failureMsg": "دارایی به روز نشد", "failureMsg": "دارایی به روز نشد",
"successMsg": "دارایی با موفقیت به روز شد", "successMsg": "دارایی با موفقیت به روز شد",
"addRecommended": "اضافه کردن دارایی های توصیه شده" "addRecommended": "اضافه کردن دارایی های توصیه شده",
"missingGeoAssetsMsg": "فایل‌های دارایی‌های مسیریابی انتخابی وجود ندارد. یا آنها را دانلود کنید یا موارد موجود را انتخاب کنید."
} }
}, },
"about": { "about": {

View File

@@ -233,7 +233,8 @@
"download": "Скачать", "download": "Скачать",
"failureMsg": "Не удалось обновить объект", "failureMsg": "Не удалось обновить объект",
"successMsg": "Объект успешно обновлен", "successMsg": "Объект успешно обновлен",
"addRecommended": "Добавить рекомендуемые активы" "addRecommended": "Добавить рекомендуемые активы",
"missingGeoAssetsMsg": "Файлы выбранных ресурсов маршрутизации отсутствуют. Либо скачайте их, либо выберите существующие."
} }
}, },
"about": { "about": {

View File

@@ -233,7 +233,8 @@
"download": "İndirmek", "download": "İndirmek",
"failureMsg": "Öğe güncellenemedi", "failureMsg": "Öğe güncellenemedi",
"successMsg": "Öğe başarıyla güncellendi", "successMsg": "Öğe başarıyla güncellendi",
"addRecommended": "Önerilen Varlıkları Ekle" "addRecommended": "Önerilen Varlıkları Ekle",
"missingGeoAssetsMsg": "Seçilen yönlendirme varlıklarının dosyaları eksik. Bunları indirin veya mevcut olanları seçin."
} }
}, },
"about": { "about": {

View File

@@ -233,7 +233,8 @@
"download": "下载", "download": "下载",
"failureMsg": "更新资源文件失败", "failureMsg": "更新资源文件失败",
"successMsg": "已成功更新资源文件", "successMsg": "已成功更新资源文件",
"addRecommended": "添加建议的资源文件" "addRecommended": "添加建议的资源文件",
"missingGeoAssetsMsg": "所选路由资源的文件丢失。下载它们或选择现有的。"
} }
}, },
"about": { "about": {

View File

@@ -3,6 +3,7 @@ import 'package:hiddify/core/localization/translations.dart';
import 'package:hiddify/features/geo_asset/overview/geo_assets_overview_notifier.dart'; import 'package:hiddify/features/geo_asset/overview/geo_assets_overview_notifier.dart';
import 'package:hiddify/features/geo_asset/widget/geo_asset_tile.dart'; import 'package:hiddify/features/geo_asset/widget/geo_asset_tile.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:sliver_tools/sliver_tools.dart';
class GeoAssetsOverviewPage extends HookConsumerWidget { class GeoAssetsOverviewPage extends HookConsumerWidget {
const GeoAssetsOverviewPage({super.key}); const GeoAssetsOverviewPage({super.key});
@@ -17,6 +18,7 @@ class GeoAssetsOverviewPage extends HookConsumerWidget {
slivers: [ slivers: [
SliverAppBar( SliverAppBar(
title: Text(t.settings.geoAssets.pageTitle), title: Text(t.settings.geoAssets.pageTitle),
pinned: true,
actions: [ actions: [
PopupMenuButton( PopupMenuButton(
itemBuilder: (context) { itemBuilder: (context) {
@@ -34,6 +36,17 @@ class GeoAssetsOverviewPage extends HookConsumerWidget {
), ),
], ],
), ),
if (state case AsyncData(value: final geoAssets))
SliverPinnedHeader(
child: AnimatedSwitcher(
duration: const Duration(milliseconds: 200),
child: geoAssets
.where((e) => e.$1.active && e.$2 == null)
.isNotEmpty
? const MissingRoutingAssetsCard()
: const SizedBox(),
),
),
switch (state) { switch (state) {
AsyncData(value: final geoAssets) => SliverList.builder( AsyncData(value: final geoAssets) => SliverList.builder(
itemBuilder: (context, index) { itemBuilder: (context, index) {
@@ -54,3 +67,39 @@ class GeoAssetsOverviewPage extends HookConsumerWidget {
); );
} }
} }
class MissingRoutingAssetsCard extends HookConsumerWidget {
const MissingRoutingAssetsCard({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final t = ref.watch(translationsProvider);
return Card(
margin: const EdgeInsets.symmetric(
horizontal: 12,
vertical: 4,
),
child: Row(
children: [
const Padding(
padding: EdgeInsets.all(8.0),
child: Icon(Icons.lightbulb),
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Padding(
padding:
const EdgeInsets.symmetric(horizontal: 8, vertical: 8),
child: Text(t.settings.geoAssets.missingGeoAssetsMsg),
),
],
),
),
],
),
);
}
}