playback reporting

This commit is contained in:
Dr-Blank 2024-06-15 23:43:08 -04:00
parent fbd789f989
commit be7f5daa88
No known key found for this signature in database
GPG key ID: 7452CC63F210A266
14 changed files with 751 additions and 10 deletions

View file

@ -0,0 +1,40 @@
import 'package:package_info_plus/package_info_plus.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:whispering_pages/api/api_provider.dart';
import 'package:whispering_pages/features/playback_reporting/core/playback_reporter.dart'
as core;
import 'package:whispering_pages/features/player/providers/audiobook_player.dart';
import 'package:whispering_pages/settings/app_settings_provider.dart';
import 'package:whispering_pages/settings/metadata/metadata_provider.dart';
part 'playback_reporter_provider.g.dart';
@Riverpod(keepAlive: true)
class PlaybackReporter extends _$PlaybackReporter {
@override
Future<core.PlaybackReporter> build() async {
final appSettings = ref.watch(appSettingsProvider);
final player = ref.watch(simpleAudiobookPlayerProvider);
final packageInfo = await PackageInfo.fromPlatform();
final api = ref.watch(authenticatedApiProvider);
final deviceName = await ref.watch(deviceNameProvider.future);
final deviceModel = await ref.watch(deviceModelProvider.future);
final deviceSdkVersion = await ref.watch(deviceSdkVersionProvider.future);
final deviceManufacturer =
await ref.watch(deviceManufacturerProvider.future);
final reporter = core.PlaybackReporter(
player,
api,
reportingInterval: appSettings.playerSettings.playbackReportInterval,
deviceName: deviceName,
deviceModel: deviceModel,
deviceSdkVersion: deviceSdkVersion,
deviceClientName: packageInfo.appName,
deviceClientVersion: packageInfo.version,
deviceManufacturer: deviceManufacturer,
);
ref.onDispose(reporter.dispose);
return reporter;
}
}

View file

@ -0,0 +1,26 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'playback_reporter_provider.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$playbackReporterHash() => r'c210b7286d9c151fd59a9ead9eb4a28d1cffdc7c';
/// See also [PlaybackReporter].
@ProviderFor(PlaybackReporter)
final playbackReporterProvider =
AsyncNotifierProvider<PlaybackReporter, core.PlaybackReporter>.internal(
PlaybackReporter.new,
name: r'playbackReporterProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$playbackReporterHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$PlaybackReporter = AsyncNotifier<core.PlaybackReporter>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member