add snackbar method for errors

test (ping) server before saving source
display error message when saving source
This commit is contained in:
austinried 2023-05-14 18:01:18 +09:00
parent 1c76293559
commit 1a35a69581
4 changed files with 24 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import '../../log.dart';
import '../../models/settings.dart';
import '../../services/settings_service.dart';
import '../items.dart';
import '../snackbars.dart';
class SourcePage extends HookConsumerWidget {
final int? id;
@ -164,6 +165,7 @@ class SourcePage extends HookConsumerWidget {
}
} catch (e, st) {
// TOOD: toast the error or whatever
showErrorSnackbar(context, e.toString());
log.severe('Saving source', e, st);
error = true;
} finally {

14
lib/app/snackbars.dart Normal file
View File

@ -0,0 +1,14 @@
import 'package:flutter/material.dart';
void showErrorSnackbar(BuildContext context, String message) {
final colors = Theme.of(context).colorScheme;
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(message, style: TextStyle(color: colors.onErrorContainer)),
backgroundColor: colors.errorContainer,
showCloseIcon: true,
closeIconColor: colors.onErrorContainer,
behavior: SnackBarBehavior.floating,
duration: const Duration(seconds: 10),
));
}

View File

@ -53,6 +53,8 @@ class SettingsService extends _$SettingsService {
ref.read(httpClientProvider),
);
await client.test();
final features = IList([
if (await client.testFeature(SubsonicFeature.emptyQuerySearch))
SubsonicFeature.emptyQuerySearch,
@ -66,6 +68,10 @@ class SettingsService extends _$SettingsService {
}
Future<void> updateSource(SubsonicSettings source) async {
final client = SubsonicClient(source, ref.read(httpClientProvider));
await client.test();
await _db.updateSource(source);
await init();
}

View File

@ -98,6 +98,8 @@ class SubsonicClient {
return subsonicResponse;
}
Future<void> test() => get('ping');
Future<bool> testFeature(SubsonicFeature feature) async {
switch (feature) {
case SubsonicFeature.emptyQuerySearch: