feat: error reporting with logs (#45)

* feat: add ability to get logs file from ui

* test: add unit test for log line parsing in logs_provider

* refactor: update all logs to obfuscate sensitive information

* feat: generate dynamic zip file name for logs export

* feat: enhance logging in audiobook player and provider for better debugging

* refactor: extract user display logic into UserBar widget for offline access of settings and logs

* feat: add About section with app metadata and source code link in YouPage
This commit is contained in:
Dr.Blank 2024-10-03 05:54:29 -04:00 committed by GitHub
parent 7b0c2c4b88
commit 35a2d7cfce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 861 additions and 176 deletions

View file

@ -8,6 +8,7 @@ import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shelfsdk/audiobookshelf_api.dart';
import 'package:vaani/shared/extensions/model_conversions.dart';
import 'package:vaani/shared/extensions/obfuscation.dart';
final _logger = Logger('AudiobookDownloadManager');
final tq = MemoryTaskQueue();
@ -35,7 +36,9 @@ class AudiobookDownloadManager {
FileDownloader().addTaskQueue(tq);
_logger.fine('initialized with baseUrl: $baseUrl, token: $token');
_logger.fine(
'initialized with baseUrl: ${Uri.parse(baseUrl).obfuscate()} and token: ${token.obfuscate()}',
);
_logger.fine(
'requiresWiFi: $requiresWiFi, retries: $retries, allowPause: $allowPause',
);

View file

@ -31,9 +31,11 @@ class SimpleDownloadManager extends _$SimpleDownloadManager {
core.tq.maxConcurrentByGroup = downloadSettings.maxConcurrentByGroup;
ref.onDispose(() {
_logger.info('disposing download manager');
manager.dispose();
});
_logger.config('initialized download manager');
return manager;
}
}
@ -52,12 +54,14 @@ class DownloadManager extends _$DownloadManager {
Future<void> queueAudioBookDownload(
LibraryItemExpanded item,
) async {
_logger.fine('queueing download for ${item.id}');
await state.queueAudioBookDownload(
item,
);
}
Future<void> deleteDownloadedItem(LibraryItemExpanded item) async {
_logger.fine('deleting downloaded item ${item.id}');
await state.deleteDownloadedItem(item);
ref.notifyListeners();
}

View file

@ -158,7 +158,7 @@ class _DownloadHistoryProviderElement
}
String _$simpleDownloadManagerHash() =>
r'cec95717c86e422f88f78aa014d29e800e5a2089';
r'8ab13f06ec5f2f73b73064bd285813dc890b7f36';
/// See also [SimpleDownloadManager].
@ProviderFor(SimpleDownloadManager)
@ -174,7 +174,7 @@ final simpleDownloadManagerProvider = NotifierProvider<SimpleDownloadManager,
);
typedef _$SimpleDownloadManager = Notifier<core.AudiobookDownloadManager>;
String _$downloadManagerHash() => r'7296a39439230f77abbe7d3231dae748f09c7ecf';
String _$downloadManagerHash() => r'852012e32e613f86445afc7f7e4e85bec808e982';
/// See also [DownloadManager].
@ProviderFor(DownloadManager)