Error notifier

This commit is contained in:
2024-09-02 21:20:30 +08:00
parent ddeda2ce23
commit ee2633db52
18 changed files with 183 additions and 73 deletions

View File

@ -3,6 +3,7 @@ import 'dart:developer';
import 'package:get/get.dart';
import 'package:palette_generator/palette_generator.dart';
import 'package:rhythm_box/providers/audio_player.dart';
import 'package:rhythm_box/providers/error_notifier.dart';
import 'package:rhythm_box/providers/history.dart';
import 'package:rhythm_box/providers/palette.dart';
import 'package:rhythm_box/providers/scrobbler.dart';
@ -126,7 +127,8 @@ class AudioPlayerStreamProvider extends GetxController {
.addTrack(playback.state.value.activeTrack!);
lastScrobbled = uid;
} catch (e, stack) {
log('[Scrobbler] Error: $e; Trace:\n$stack');
Get.find<ErrorNotifier>()
.logError('[Scrobbler] Error: $e', trace: stack);
}
});
}

View File

@ -1,5 +1,4 @@
import 'dart:async';
import 'dart:developer';
import 'package:get/get.dart';
import 'package:rhythm_box/providers/audio_player.dart';
@ -9,6 +8,8 @@ import 'package:rhythm_box/providers/user_preferences.dart';
import 'package:rhythm_box/services/audio_player/audio_player.dart';
import 'package:spotify/spotify.dart';
import 'error_notifier.dart';
class EndlessPlaybackProvider extends GetxController {
late final _auth = Get.find<AuthenticationProvider>();
late final _playback = Get.find<AudioPlayerProvider>();
@ -88,7 +89,8 @@ class EndlessPlaybackProvider extends GetxController {
}),
);
} catch (e, stack) {
log('[EndlessPlayback] Error: $e; Trace:\n$stack');
Get.find<ErrorNotifier>()
.logError('[EndlessPlayback] Error: $e', trace: stack);
}
}

View File

@ -0,0 +1,37 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class ErrorNotifier extends GetxController {
Rx<MaterialBanner?> showing = Rx(null);
void logError(String msg, {StackTrace? trace}) {
log('$msg${trace != null ? '\nTrace:\ntrace' : ''}');
showError(msg);
}
void showError(String msg) {
showing.value = MaterialBanner(
leading: const Icon(Icons.error),
content: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
'Something went wrong...',
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(msg),
],
),
actions: [
TextButton(
onPressed: () {
showing.value = null;
},
child: const Text('Dismiss'),
),
],
);
}
}

View File

@ -1,8 +1,8 @@
import 'dart:async';
import 'dart:developer';
import 'package:drift/drift.dart';
import 'package:get/get.dart' hide Value;
import 'package:rhythm_box/providers/database.dart';
import 'package:rhythm_box/providers/error_notifier.dart';
import 'package:rhythm_box/services/artist.dart';
import 'package:rhythm_box/services/database/database.dart';
import 'package:scrobblenaut/scrobblenaut.dart';
@ -44,7 +44,8 @@ class ScrobblerProvider extends GetxController {
),
);
} catch (e, stack) {
log('[Scrobble] Error: $e; Trace:\n$stack');
Get.find<ErrorNotifier>()
.logError('[Scrobbler] Error: $e', trace: stack);
scrobbler.value = null;
}
} else {
@ -63,8 +64,9 @@ class ScrobblerProvider extends GetxController {
timestamp: DateTime.now().toUtc(),
trackNumber: track.trackNumber,
);
} catch (e, stackTrace) {
log('[Scrobble] Error: $e; Trace:\n$stackTrace');
} catch (e, stack) {
Get.find<ErrorNotifier>()
.logError('[Scrobbler] Error: $e', trace: stack);
}
});

View File

@ -1,8 +1,7 @@
import 'dart:developer';
import 'package:dio/dio.dart';
import 'package:get/get.dart';
import 'package:rhythm_box/providers/database.dart';
import 'package:rhythm_box/providers/error_notifier.dart';
import 'package:rhythm_box/providers/user_preferences.dart';
import 'package:rhythm_box/services/database/database.dart';
import 'package:rhythm_box/services/server/active_sourced_track.dart';
@ -72,7 +71,7 @@ Future<List<SkipSegmentTableData>> getAndCacheSkipSegments(String id) async {
..where((s) => s.trackId.equals(id)))
.get();
} catch (e, stack) {
log('[SkipSegment] Error: $e; Trace:\n$stack');
Get.find<ErrorNotifier>().logError('[SkipSegment] Error: $e', trace: stack);
return List.castFrom<dynamic, SkipSegmentTableData>([]);
}
}