mirror of
https://github.com/Dr-Blank/Vaani.git
synced 2025-08-04 18:15:42 +02:00
This commit is contained in:
parent
e7946feca1
commit
2fd4650bb8
44 changed files with 433 additions and 315 deletions
3
.fvmrc
Normal file
3
.fvmrc
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"flutter": "3.27.4"
|
||||
}
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -44,3 +44,6 @@ app.*.map.json
|
|||
|
||||
# secret keys
|
||||
/secrets
|
||||
|
||||
# FVM Version Cache
|
||||
.fvm/
|
1
.vscode/launch.json
vendored
1
.vscode/launch.json
vendored
|
@ -7,6 +7,7 @@
|
|||
{
|
||||
"name": "vaani",
|
||||
"request": "launch",
|
||||
"program": "lib/main.dart",
|
||||
"type": "dart"
|
||||
},
|
||||
{
|
||||
|
|
27
.vscode/settings.json
vendored
27
.vscode/settings.json
vendored
|
@ -1,28 +1,35 @@
|
|||
{
|
||||
"workbench.colorCustomizations": {
|
||||
"activityBar.background": "#5A1021",
|
||||
"titleBar.activeBackground": "#7E162E",
|
||||
"titleBar.activeForeground": "#FEFBFC"
|
||||
},
|
||||
"files.exclude": {
|
||||
"**/*.freezed.dart": true,
|
||||
"**/*.g.dart": true
|
||||
},
|
||||
"cmake.configureOnOpen": false,
|
||||
"cSpell.words": [
|
||||
"audioplayers",
|
||||
"autolabeler",
|
||||
"Autovalidate",
|
||||
"Checkmark",
|
||||
"Debounceable",
|
||||
"deeplinking",
|
||||
"fullscreen",
|
||||
"Lerp",
|
||||
"miniplayer",
|
||||
"mocktail",
|
||||
"nodename",
|
||||
"numberpicker",
|
||||
"riverpod",
|
||||
"Schyler",
|
||||
"shelfsdk",
|
||||
"sysname",
|
||||
"tapable",
|
||||
"unfocus",
|
||||
"utsname",
|
||||
"Vaani"
|
||||
],
|
||||
"cmake.configureOnOpen": false
|
||||
"dart.flutterSdkPath": ".fvm/versions/3.27.4",
|
||||
"files.exclude": {
|
||||
"**/*.freezed.dart": true,
|
||||
"**/*.g.dart": true
|
||||
},
|
||||
"workbench.colorCustomizations": {
|
||||
"activityBar.background": "#5A1021",
|
||||
"titleBar.activeBackground": "#7E162E",
|
||||
"titleBar.activeForeground": "#FEFBFC"
|
||||
}
|
||||
}
|
2
.vscode/tasks.json
vendored
2
.vscode/tasks.json
vendored
|
@ -5,7 +5,7 @@
|
|||
"icon": { "id": "eye-watch", "color": "terminal.ansiYellow" },
|
||||
"label": "build_runner watch",
|
||||
"type": "shell",
|
||||
"command": "dart run build_runner watch --delete-conflicting-outputs",
|
||||
"command": "fvm dart run build_runner watch --delete-conflicting-outputs",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
|
|
|
@ -25,6 +25,10 @@ linter:
|
|||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||
require_trailing_commas: true
|
||||
analyzer:
|
||||
exclude:
|
||||
- '**.freezed.dart'
|
||||
- '**.g.dart'
|
||||
- '**.gr.dart'
|
||||
errors:
|
||||
invalid_annotation_target: ignore
|
||||
plugins:
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
|
||||
|
|
|
@ -19,7 +19,7 @@ pluginManagement {
|
|||
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id "com.android.application" version "7.3.0" apply false
|
||||
id "com.android.application" version '8.2.1' apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.0.20" apply false
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
@ -34,7 +35,7 @@ Uri makeBaseUrl(String address) {
|
|||
|
||||
/// get the api instance for the given base url
|
||||
@riverpod
|
||||
AudiobookshelfApi audiobookshelfApi(AudiobookshelfApiRef ref, Uri? baseUrl) {
|
||||
AudiobookshelfApi audiobookshelfApi(Ref ref, Uri? baseUrl) {
|
||||
// try to get the base url from app settings
|
||||
final apiSettings = ref.watch(apiSettingsProvider);
|
||||
baseUrl ??= apiSettings.activeServer?.serverUrl;
|
||||
|
@ -47,7 +48,7 @@ AudiobookshelfApi audiobookshelfApi(AudiobookshelfApiRef ref, Uri? baseUrl) {
|
|||
///
|
||||
/// if the user is not authenticated throw an error
|
||||
@Riverpod(keepAlive: true)
|
||||
AudiobookshelfApi authenticatedApi(AuthenticatedApiRef ref) {
|
||||
AudiobookshelfApi authenticatedApi(Ref ref) {
|
||||
final apiSettings = ref.watch(apiSettingsProvider);
|
||||
final user = apiSettings.activeUser;
|
||||
if (user == null) {
|
||||
|
@ -62,7 +63,7 @@ AudiobookshelfApi authenticatedApi(AuthenticatedApiRef ref) {
|
|||
|
||||
/// ping the server to check if it is reachable
|
||||
@riverpod
|
||||
FutureOr<bool> isServerAlive(IsServerAliveRef ref, String address) async {
|
||||
FutureOr<bool> isServerAlive(Ref ref, String address) async {
|
||||
if (address.isEmpty) {
|
||||
return false;
|
||||
}
|
||||
|
@ -80,7 +81,7 @@ FutureOr<bool> isServerAlive(IsServerAliveRef ref, String address) async {
|
|||
/// fetch status of server
|
||||
@riverpod
|
||||
FutureOr<ServerStatusResponse?> serverStatus(
|
||||
ServerStatusRef ref,
|
||||
Ref ref,
|
||||
Uri baseUrl, [
|
||||
ResponseErrorHandler? responseErrorHandler,
|
||||
]) async {
|
||||
|
@ -173,7 +174,7 @@ class PersonalizedView extends _$PersonalizedView {
|
|||
/// fetch continue listening audiobooks
|
||||
@riverpod
|
||||
FutureOr<GetUserSessionsResponse> fetchContinueListening(
|
||||
FetchContinueListeningRef ref,
|
||||
Ref ref,
|
||||
) async {
|
||||
final api = ref.watch(authenticatedApiProvider);
|
||||
final res = await api.me.getSessions();
|
||||
|
@ -185,7 +186,7 @@ FutureOr<GetUserSessionsResponse> fetchContinueListening(
|
|||
|
||||
@riverpod
|
||||
FutureOr<User> me(
|
||||
MeRef ref,
|
||||
Ref ref,
|
||||
) async {
|
||||
final api = ref.watch(authenticatedApiProvider);
|
||||
final errorResponseHandler = ErrorResponseHandler();
|
||||
|
@ -203,7 +204,7 @@ FutureOr<User> me(
|
|||
|
||||
@riverpod
|
||||
FutureOr<LoginResponse?> login(
|
||||
LoginRef ref, {
|
||||
Ref ref, {
|
||||
AuthenticatedUser? user,
|
||||
}) async {
|
||||
if (user == null) {
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'api_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$audiobookshelfApiHash() => r'2c310ea77fea9918ccf96180a92075acd037bd95';
|
||||
String _$audiobookshelfApiHash() => r'f23a06c404e11867a7f796877eaca99b8ff25458';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
@ -154,6 +154,8 @@ class AudiobookshelfApiProvider extends AutoDisposeProvider<AudiobookshelfApi> {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin AudiobookshelfApiRef on AutoDisposeProviderRef<AudiobookshelfApi> {
|
||||
/// The parameter `baseUrl` of this provider.
|
||||
Uri? get baseUrl;
|
||||
|
@ -168,7 +170,7 @@ class _AudiobookshelfApiProviderElement
|
|||
Uri? get baseUrl => (origin as AudiobookshelfApiProvider).baseUrl;
|
||||
}
|
||||
|
||||
String _$authenticatedApiHash() => r'e662465f01ab1a6384db4738a3ae49b5fab48a4f';
|
||||
String _$authenticatedApiHash() => r'5cf3329fe3074e3a09e266b4bae78b53e9c01220';
|
||||
|
||||
/// get the api instance for the authenticated user
|
||||
///
|
||||
|
@ -186,8 +188,10 @@ final authenticatedApiProvider = Provider<AudiobookshelfApi>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef AuthenticatedApiRef = ProviderRef<AudiobookshelfApi>;
|
||||
String _$isServerAliveHash() => r'6ff90b6e0febd2cd4a4d3a5209a59afc778cd3b6';
|
||||
String _$isServerAliveHash() => r'bb3a53cae1eb64b8760a56864feed47b7a3f1c29';
|
||||
|
||||
/// ping the server to check if it is reachable
|
||||
///
|
||||
|
@ -314,6 +318,8 @@ class IsServerAliveProvider extends AutoDisposeFutureProvider<bool> {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin IsServerAliveRef on AutoDisposeFutureProviderRef<bool> {
|
||||
/// The parameter `address` of this provider.
|
||||
String get address;
|
||||
|
@ -327,7 +333,7 @@ class _IsServerAliveProviderElement
|
|||
String get address => (origin as IsServerAliveProvider).address;
|
||||
}
|
||||
|
||||
String _$serverStatusHash() => r'd7079e19e68f5f61b0afa0f73a2af8807c4b3cf6';
|
||||
String _$serverStatusHash() => r'2d9c5d6f970caec555e5322d43a388ea8572619f';
|
||||
|
||||
/// fetch status of server
|
||||
///
|
||||
|
@ -467,6 +473,8 @@ class ServerStatusProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ServerStatusRef on AutoDisposeFutureProviderRef<ServerStatusResponse?> {
|
||||
/// The parameter `baseUrl` of this provider.
|
||||
Uri get baseUrl;
|
||||
|
@ -488,7 +496,7 @@ class _ServerStatusProviderElement
|
|||
}
|
||||
|
||||
String _$fetchContinueListeningHash() =>
|
||||
r'f65fe3ac3a31b8ac074330525c5d2cc4b526802d';
|
||||
r'50aeb77369eda38d496b2f56f3df2aea135dab45';
|
||||
|
||||
/// fetch continue listening audiobooks
|
||||
///
|
||||
|
@ -505,9 +513,11 @@ final fetchContinueListeningProvider =
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef FetchContinueListeningRef
|
||||
= AutoDisposeFutureProviderRef<GetUserSessionsResponse>;
|
||||
String _$meHash() => r'da5f40b8063b0c0a6651fdcc4ac2d192d0dc7df6';
|
||||
String _$meHash() => r'b3b6d6d940b465c60d0c29cd6e81ba2fcccab186';
|
||||
|
||||
/// See also [me].
|
||||
@ProviderFor(me)
|
||||
|
@ -520,8 +530,10 @@ final meProvider = AutoDisposeFutureProvider<User>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef MeRef = AutoDisposeFutureProviderRef<User>;
|
||||
String _$loginHash() => r'eb1c4fcef1818dce994846c1adb8eca8f6ec9259';
|
||||
String _$loginHash() => r'99410c2bed9c8f412c7b47c4e655db64e0054be2';
|
||||
|
||||
/// See also [login].
|
||||
@ProviderFor(login)
|
||||
|
@ -635,6 +647,8 @@ class LoginProvider extends AutoDisposeFutureProvider<LoginResponse?> {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin LoginRef on AutoDisposeFutureProviderRef<LoginResponse?> {
|
||||
/// The parameter `user` of this provider.
|
||||
AuthenticatedUser? get user;
|
||||
|
@ -667,4 +681,4 @@ final personalizedViewProvider =
|
|||
|
||||
typedef _$PersonalizedView = AutoDisposeStreamNotifier<List<Shelf>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -25,4 +25,4 @@ final authenticatedUserProvider = AutoDisposeNotifierProvider<AuthenticatedUser,
|
|||
|
||||
typedef _$AuthenticatedUser = AutoDisposeNotifier<Set<model.AuthenticatedUser>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -155,6 +155,8 @@ class CoverImageProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin CoverImageRef on StreamNotifierProviderRef<Uint8List> {
|
||||
/// The parameter `itemId` of this provider.
|
||||
String get itemId;
|
||||
|
@ -169,4 +171,4 @@ class _CoverImageProviderElement
|
|||
String get itemId => (origin as CoverImageProvider).itemId;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -170,6 +170,8 @@ class LibraryItemProvider extends StreamNotifierProviderImpl<LibraryItem,
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin LibraryItemRef
|
||||
on StreamNotifierProviderRef<shelfsdk.LibraryItemExpanded> {
|
||||
/// The parameter `id` of this provider.
|
||||
|
@ -184,4 +186,4 @@ class _LibraryItemProviderElement extends StreamNotifierProviderElement<
|
|||
String get id => (origin as LibraryItemProvider).id;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:collection/collection.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:vaani/api/authenticated_user_provider.dart';
|
||||
|
@ -50,7 +49,7 @@ class AudiobookShelfServer extends _$AudiobookShelfServer {
|
|||
if (_box.isNotEmpty) {
|
||||
final foundServers = _box.getRange(0, _box.length);
|
||||
_logger.info('found servers in box: ${foundServers.obfuscate()}');
|
||||
return foundServers.whereNotNull().toSet();
|
||||
return foundServers.nonNulls.toSet();
|
||||
} else {
|
||||
_logger.info('no settings found in box');
|
||||
return {};
|
||||
|
|
|
@ -7,7 +7,7 @@ part of 'server_provider.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$audiobookShelfServerHash() =>
|
||||
r'0084fb72c4c54323207928b95716cfd9ca496c11';
|
||||
r'09e7e37ddc794c45eafbaab7eba82c9dd17faa93';
|
||||
|
||||
/// provides with a set of servers added by the user
|
||||
///
|
||||
|
@ -27,4 +27,4 @@ final audiobookShelfServerProvider = AutoDisposeNotifierProvider<
|
|||
typedef _$AudiobookShelfServer
|
||||
= AutoDisposeNotifier<Set<model.AudiobookShelfServer>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:background_downloader/background_downloader.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:shelfsdk/audiobookshelf_api.dart';
|
||||
|
@ -122,7 +123,7 @@ class ItemDownloadProgress extends _$ItemDownloadProgress {
|
|||
|
||||
@riverpod
|
||||
FutureOr<List<TaskRecord>> downloadHistory(
|
||||
DownloadHistoryRef ref, {
|
||||
Ref ref, {
|
||||
String? group,
|
||||
}) async {
|
||||
return await FileDownloader().database.allRecords(group: group);
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'download_manager.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$downloadHistoryHash() => r'76c449e8abfa61d57566991686f534a06dc7fef7';
|
||||
String _$downloadHistoryHash() => r'4d8b84e30f7ff5ae69d23c8e03ff24af1234a1ad';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
@ -143,6 +143,8 @@ class DownloadHistoryProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin DownloadHistoryRef on AutoDisposeFutureProviderRef<List<TaskRecord>> {
|
||||
/// The parameter `group` of this provider.
|
||||
String? get group;
|
||||
|
@ -318,6 +320,8 @@ class IsItemDownloadingProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin IsItemDownloadingRef on AutoDisposeNotifierProviderRef<bool> {
|
||||
/// The parameter `id` of this provider.
|
||||
String get id;
|
||||
|
@ -463,6 +467,8 @@ class ItemDownloadProgressProvider extends AutoDisposeAsyncNotifierProviderImpl<
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ItemDownloadProgressRef on AutoDisposeAsyncNotifierProviderRef<double?> {
|
||||
/// The parameter `id` of this provider.
|
||||
String get id;
|
||||
|
@ -607,6 +613,8 @@ class IsItemDownloadedProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin IsItemDownloadedRef on AutoDisposeAsyncNotifierProviderRef<bool> {
|
||||
/// The parameter `item` of this provider.
|
||||
LibraryItemExpanded get item;
|
||||
|
@ -621,4 +629,4 @@ class _IsItemDownloadedProviderElement
|
|||
LibraryItemExpanded get item => (origin as IsItemDownloadedProvider).item;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -26,4 +26,4 @@ final globalSearchControllerProvider =
|
|||
|
||||
typedef _$GlobalSearchController = Notifier<Raw<SearchController>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:shelfsdk/audiobookshelf_api.dart';
|
||||
import 'package:vaani/api/api_provider.dart';
|
||||
|
@ -8,7 +9,7 @@ part 'search_result_provider.g.dart';
|
|||
/// The provider for the search result.
|
||||
@riverpod
|
||||
FutureOr<LibrarySearchResponse?> searchResult(
|
||||
SearchResultRef ref,
|
||||
Ref ref,
|
||||
String query, {
|
||||
int limit = 25,
|
||||
}) async {
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'search_result_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$searchResultHash() => r'9baa643cce24f3a5e022f42202e423373939ef95';
|
||||
String _$searchResultHash() => r'33785de298ad0d53c9d21e8fec88ba2f22f1363f';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
@ -167,6 +167,8 @@ class SearchResultProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin SearchResultRef on AutoDisposeFutureProviderRef<LibrarySearchResponse?> {
|
||||
/// The parameter `query` of this provider.
|
||||
String get query;
|
||||
|
@ -186,4 +188,4 @@ class _SearchResultProviderElement
|
|||
int get limit => (origin as SearchResultProvider).limit;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -22,4 +22,4 @@ final logsProvider =
|
|||
|
||||
typedef _$Logs = AutoDisposeAsyncNotifier<List<LogRecord>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -169,7 +169,7 @@ class LogsPage extends HookConsumerWidget {
|
|||
),
|
||||
],
|
||||
),
|
||||
// a column with listview.builder and a scrollable list of logs
|
||||
// a column with ListView.builder and a scrollable list of logs
|
||||
body: Column(
|
||||
children: [
|
||||
// a filter for log levels, loggers, and search
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:vaani/api/api_provider.dart';
|
||||
import 'package:vaani/models/error_response.dart';
|
||||
|
@ -61,7 +62,7 @@ class OauthFlows extends _$OauthFlows {
|
|||
/// the code returned by the server in exchange for the verifier
|
||||
@riverpod
|
||||
Future<String?> loginInExchangeForCode(
|
||||
LoginInExchangeForCodeRef ref, {
|
||||
Ref ref, {
|
||||
required State oauthState,
|
||||
required Code code,
|
||||
ErrorResponseHandler? responseHandler,
|
||||
|
|
|
@ -7,7 +7,7 @@ part of 'oauth_provider.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$loginInExchangeForCodeHash() =>
|
||||
r'e931254959d9eb8196439c6b0c884c26cbe17c2f';
|
||||
r'bfc3945529048a0f536052fd5579b76457560fcd';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
@ -179,6 +179,8 @@ class LoginInExchangeForCodeProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin LoginInExchangeForCodeRef on AutoDisposeFutureProviderRef<String?> {
|
||||
/// The parameter `oauthState` of this provider.
|
||||
String get oauthState;
|
||||
|
@ -221,4 +223,4 @@ final oauthFlowsProvider =
|
|||
|
||||
typedef _$OauthFlows = Notifier<Map<State, Flow>>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -157,6 +157,8 @@ class BookSettingsProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin BookSettingsRef on AutoDisposeNotifierProviderRef<model.BookSettings> {
|
||||
/// The parameter `bookId` of this provider.
|
||||
String get bookId;
|
||||
|
@ -171,4 +173,4 @@ class _BookSettingsProviderElement
|
|||
String get bookId => (origin as BookSettingsProvider).bookId;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -23,4 +23,4 @@ final playbackReporterProvider =
|
|||
|
||||
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
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -22,4 +22,4 @@ final playlistProvider =
|
|||
|
||||
typedef _$Playlist = AutoDisposeNotifier<AudiobookPlaylist>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -43,4 +43,4 @@ final audiobookPlayerProvider =
|
|||
|
||||
typedef _$AudiobookPlayer = Notifier<core.AudiobookPlayer>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:shelfsdk/audiobookshelf_api.dart';
|
||||
|
@ -9,7 +10,7 @@ part 'currently_playing_provider.g.dart';
|
|||
final _logger = Logger('CurrentlyPlayingProvider');
|
||||
|
||||
@riverpod
|
||||
BookExpanded? currentlyPlayingBook(CurrentlyPlayingBookRef ref) {
|
||||
BookExpanded? currentlyPlayingBook(Ref ref) {
|
||||
try {
|
||||
final player = ref.watch(audiobookPlayerProvider);
|
||||
return player.book;
|
||||
|
@ -21,7 +22,7 @@ BookExpanded? currentlyPlayingBook(CurrentlyPlayingBookRef ref) {
|
|||
|
||||
/// provided the current chapter of the book being played
|
||||
@riverpod
|
||||
BookChapter? currentPlayingChapter(CurrentPlayingChapterRef ref) {
|
||||
BookChapter? currentPlayingChapter(Ref ref) {
|
||||
final player = ref.watch(audiobookPlayerProvider);
|
||||
player.slowPositionStream.listen((_) {
|
||||
ref.invalidateSelf();
|
||||
|
@ -32,7 +33,7 @@ BookChapter? currentPlayingChapter(CurrentPlayingChapterRef ref) {
|
|||
|
||||
/// provides the book metadata of the currently playing book
|
||||
@riverpod
|
||||
BookMetadataExpanded? currentBookMetadata(CurrentBookMetadataRef ref) {
|
||||
BookMetadataExpanded? currentBookMetadata(Ref ref) {
|
||||
final player = ref.watch(audiobookPlayerProvider);
|
||||
if (player.book == null) return null;
|
||||
return player.book!.metadata.asBookMetadataExpanded;
|
||||
|
|
|
@ -7,7 +7,7 @@ part of 'currently_playing_provider.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$currentlyPlayingBookHash() =>
|
||||
r'7440b0d54cb364f66e704783652e8f1490ae90e0';
|
||||
r'e4258694c8f0d1e89651b330fae0f672ca13a484';
|
||||
|
||||
/// See also [currentlyPlayingBook].
|
||||
@ProviderFor(currentlyPlayingBook)
|
||||
|
@ -22,9 +22,11 @@ final currentlyPlayingBookProvider =
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef CurrentlyPlayingBookRef = AutoDisposeProviderRef<BookExpanded?>;
|
||||
String _$currentPlayingChapterHash() =>
|
||||
r'a084da724e3d8bb1b1475e867ab3200d7d61d827';
|
||||
r'73db8b8a9058573bb0c68ec5d5f8aba9306f3d24';
|
||||
|
||||
/// provided the current chapter of the book being played
|
||||
///
|
||||
|
@ -41,9 +43,11 @@ final currentPlayingChapterProvider =
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef CurrentPlayingChapterRef = AutoDisposeProviderRef<BookChapter?>;
|
||||
String _$currentBookMetadataHash() =>
|
||||
r'9088debba151894b61f2dcba1bba12a89244b9b1';
|
||||
r'f537ef4ef19280bc952de658ecf6520c535ae344';
|
||||
|
||||
/// provides the book metadata of the currently playing book
|
||||
///
|
||||
|
@ -60,6 +64,8 @@ final currentBookMetadataProvider =
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef CurrentBookMetadataRef = AutoDisposeProviderRef<BookMetadataExpanded?>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -27,7 +27,7 @@ extension on Ref {
|
|||
|
||||
@Riverpod(keepAlive: true)
|
||||
Raw<ValueNotifier<double>> playerExpandProgressNotifier(
|
||||
PlayerExpandProgressNotifierRef ref,
|
||||
Ref ref,
|
||||
) {
|
||||
final ValueNotifier<double> playerExpandProgress =
|
||||
ValueNotifier(playerMinHeight);
|
||||
|
@ -47,7 +47,7 @@ Raw<ValueNotifier<double>> playerExpandProgressNotifier(
|
|||
// a provider that will listen to the playerExpandProgressNotifier and return the percentage of the player expanded
|
||||
@Riverpod(keepAlive: true)
|
||||
double playerHeight(
|
||||
PlayerHeightRef ref,
|
||||
Ref ref,
|
||||
) {
|
||||
final playerExpandProgress = ref.watch(playerExpandProgressNotifierProvider);
|
||||
|
||||
|
@ -64,7 +64,7 @@ final audioBookMiniplayerController = MiniplayerController();
|
|||
|
||||
@Riverpod(keepAlive: true)
|
||||
bool isPlayerActive(
|
||||
IsPlayerActiveRef ref,
|
||||
Ref ref,
|
||||
) {
|
||||
try {
|
||||
final player = ref.watch(audiobookPlayerProvider);
|
||||
|
|
|
@ -7,7 +7,7 @@ part of 'player_form.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$playerExpandProgressNotifierHash() =>
|
||||
r'e4817361b9a311b61ca23e51082ed11b0a1120ab';
|
||||
r'1ac7172d90a070f96222286edd1a176be197f378';
|
||||
|
||||
/// See also [playerExpandProgressNotifier].
|
||||
@ProviderFor(playerExpandProgressNotifier)
|
||||
|
@ -22,9 +22,11 @@ final playerExpandProgressNotifierProvider =
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef PlayerExpandProgressNotifierRef
|
||||
= ProviderRef<Raw<ValueNotifier<double>>>;
|
||||
String _$playerHeightHash() => r'26dbcb180d494575488d700bd5bdb58c02c224a9';
|
||||
String _$playerHeightHash() => r'3f031eaffdffbb2c6ddf7eb1aba31bf1619260fc';
|
||||
|
||||
/// See also [playerHeight].
|
||||
@ProviderFor(playerHeight)
|
||||
|
@ -37,8 +39,10 @@ final playerHeightProvider = Provider<double>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef PlayerHeightRef = ProviderRef<double>;
|
||||
String _$isPlayerActiveHash() => r'147e13cd7fd6fd3823623557ce4f300dc15b6fe6';
|
||||
String _$isPlayerActiveHash() => r'2c7ca125423126fb5f0ef218d37bc8fe0ca9ec98';
|
||||
|
||||
/// See also [isPlayerActive].
|
||||
@ProviderFor(isPlayerActive)
|
||||
|
@ -52,6 +56,8 @@ final isPlayerActiveProvider = Provider<bool>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef IsPlayerActiveRef = ProviderRef<bool>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -23,4 +23,4 @@ final shakeDetectorProvider =
|
|||
|
||||
typedef _$ShakeDetector = AutoDisposeNotifier<core.ShakeDetector?>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -22,4 +22,4 @@ final sleepTimerProvider =
|
|||
|
||||
typedef _$SleepTimer = Notifier<core.SleepTimer?>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -22,4 +22,4 @@ final apiSettingsProvider =
|
|||
|
||||
typedef _$ApiSettings = Notifier<model.ApiSettings>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -39,4 +39,4 @@ final sleepTimerSettingsProvider =
|
|||
|
||||
typedef _$SleepTimerSettings = Notifier<model.SleepTimerSettings>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
part 'metadata_provider.g.dart';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Future<String> deviceName(DeviceNameRef ref) async {
|
||||
Future<String> deviceName(Ref ref) async {
|
||||
final data = await _getDeviceData(DeviceInfoPlugin());
|
||||
|
||||
// try different keys to get the device name
|
||||
|
@ -27,7 +28,7 @@ Future<String> deviceName(DeviceNameRef ref) async {
|
|||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Future<String> deviceModel(DeviceModelRef ref) async {
|
||||
Future<String> deviceModel(Ref ref) async {
|
||||
final data = await _getDeviceData(DeviceInfoPlugin());
|
||||
|
||||
// try different keys to get the device model
|
||||
|
@ -48,7 +49,7 @@ Future<String> deviceModel(DeviceModelRef ref) async {
|
|||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Future<String> deviceSdkVersion(DeviceSdkVersionRef ref) async {
|
||||
Future<String> deviceSdkVersion(Ref ref) async {
|
||||
final data = await _getDeviceData(DeviceInfoPlugin());
|
||||
|
||||
// try different keys to get the device sdk version
|
||||
|
@ -69,7 +70,7 @@ Future<String> deviceSdkVersion(DeviceSdkVersionRef ref) async {
|
|||
}
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Future<String> deviceManufacturer(DeviceManufacturerRef ref) async {
|
||||
Future<String> deviceManufacturer(Ref ref) async {
|
||||
final data = await _getDeviceData(DeviceInfoPlugin());
|
||||
|
||||
// try different keys to get the device manufacturer
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'metadata_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$deviceNameHash() => r'bc206a3a8c14f3da6e257e92e1ccdc79364f4e28';
|
||||
String _$deviceNameHash() => r'9e38adda74e70a91851a682f05228bd759356dcc';
|
||||
|
||||
/// See also [deviceName].
|
||||
@ProviderFor(deviceName)
|
||||
|
@ -19,8 +19,10 @@ final deviceNameProvider = FutureProvider<String>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef DeviceNameRef = FutureProviderRef<String>;
|
||||
String _$deviceModelHash() => r'3d7e8ef4a37b90f98e38dc8d5f16ca30f71e15b2';
|
||||
String _$deviceModelHash() => r'922b13d9e35b5b5c5b8e96f2f2c2ae594f4f41f2';
|
||||
|
||||
/// See also [deviceModel].
|
||||
@ProviderFor(deviceModel)
|
||||
|
@ -33,8 +35,10 @@ final deviceModelProvider = FutureProvider<String>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef DeviceModelRef = FutureProviderRef<String>;
|
||||
String _$deviceSdkVersionHash() => r'501b01ae679e02fc5082feabea81cea0fa74afd7';
|
||||
String _$deviceSdkVersionHash() => r'33178d80590808d1f4cca2be8a3b52c6f6724cac';
|
||||
|
||||
/// See also [deviceSdkVersion].
|
||||
@ProviderFor(deviceSdkVersion)
|
||||
|
@ -48,9 +52,11 @@ final deviceSdkVersionProvider = FutureProvider<String>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef DeviceSdkVersionRef = FutureProviderRef<String>;
|
||||
String _$deviceManufacturerHash() =>
|
||||
r'f0a57e6a92b551fbe266d0a6a29d35dc497882a9';
|
||||
r'39250767deb8635fa7c7e18bae23576b9b863e04';
|
||||
|
||||
/// See also [deviceManufacturer].
|
||||
@ProviderFor(deviceManufacturer)
|
||||
|
@ -64,6 +70,8 @@ final deviceManufacturerProvider = FutureProvider<String>.internal(
|
|||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
typedef DeviceManufacturerRef = FutureProviderRef<String>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:material_color_utilities/material_color_utilities.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
@ -12,7 +13,7 @@ final _logger = Logger('SystemThemeProvider');
|
|||
/// copied from [DynamicColorBuilder]
|
||||
@Riverpod(keepAlive: true)
|
||||
FutureOr<(ColorScheme light, ColorScheme dark)?> systemTheme(
|
||||
SystemThemeRef ref, {
|
||||
Ref ref, {
|
||||
bool highContrast = false,
|
||||
}) async {
|
||||
_logger.fine('Generating system theme');
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'system_theme_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$systemThemeHash() => r'0af4a012a2a2b2fa91642a1313515cba02cd3535';
|
||||
String _$systemThemeHash() => r'c78d3d94683624a80b296594268c5fd4295e77a3';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
@ -159,6 +159,8 @@ class SystemThemeProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin SystemThemeRef
|
||||
on FutureProviderRef<(ColorScheme light, ColorScheme dark)?> {
|
||||
/// The parameter `highContrast` of this provider.
|
||||
|
@ -174,4 +176,4 @@ class _SystemThemeProviderElement
|
|||
bool get highContrast => (origin as SystemThemeProvider).highContrast;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:dynamic_color/dynamic_color.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_animate/flutter_animate.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:vaani/api/image_provider.dart';
|
||||
|
@ -11,7 +12,7 @@ final _logger = Logger('ThemeFromCoverProvider');
|
|||
|
||||
@Riverpod(keepAlive: true)
|
||||
Future<FutureOr<ColorScheme?>> themeFromCover(
|
||||
ThemeFromCoverRef ref,
|
||||
Ref ref,
|
||||
ImageProvider<Object> img, {
|
||||
Brightness brightness = Brightness.dark,
|
||||
bool highContrast = false,
|
||||
|
@ -58,7 +59,7 @@ Future<FutureOr<ColorScheme?>> themeFromCover(
|
|||
|
||||
@Riverpod(keepAlive: true)
|
||||
FutureOr<ColorScheme?> themeOfLibraryItem(
|
||||
ThemeOfLibraryItemRef ref,
|
||||
Ref ref,
|
||||
String? itemId, {
|
||||
Brightness brightness = Brightness.dark,
|
||||
bool highContrast = false,
|
||||
|
|
|
@ -6,7 +6,7 @@ part of 'theme_from_cover_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$themeFromCoverHash() => r'f656614e2d4851acdfa16d249b3198ae0e1d6d6f';
|
||||
String _$themeFromCoverHash() => r'afdeddc4bfe2fe46a4185143d3a88a23565e33f4';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
@ -166,6 +166,8 @@ class ThemeFromCoverProvider extends FutureProvider<FutureOr<ColorScheme?>> {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ThemeFromCoverRef on FutureProviderRef<FutureOr<ColorScheme?>> {
|
||||
/// The parameter `img` of this provider.
|
||||
ImageProvider<Object> get img;
|
||||
|
@ -191,7 +193,7 @@ class _ThemeFromCoverProviderElement
|
|||
}
|
||||
|
||||
String _$themeOfLibraryItemHash() =>
|
||||
r'b2677daf31a6a53f3f237e5204c62dff5ec43171';
|
||||
r'0b2df397b2938003a9de6beb6d4204401a05370c';
|
||||
|
||||
/// See also [themeOfLibraryItem].
|
||||
@ProviderFor(themeOfLibraryItem)
|
||||
|
@ -329,6 +331,8 @@ class ThemeOfLibraryItemProvider extends FutureProvider<ColorScheme?> {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated('Will be removed in 3.0. Use Ref instead')
|
||||
// ignore: unused_element
|
||||
mixin ThemeOfLibraryItemRef on FutureProviderRef<ColorScheme?> {
|
||||
/// The parameter `itemId` of this provider.
|
||||
String? get itemId;
|
||||
|
@ -353,4 +357,4 @@ class _ThemeOfLibraryItemProviderElement
|
|||
bool get highContrast => (origin as ThemeOfLibraryItemProvider).highContrast;
|
||||
}
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
488
pubspec.lock
488
pubspec.lock
File diff suppressed because it is too large
Load diff
|
@ -20,7 +20,7 @@ version: 0.0.15+6
|
|||
|
||||
environment:
|
||||
sdk: ">=3.3.4 <4.0.0"
|
||||
flutter: 3.24.5
|
||||
flutter: 3.27.4
|
||||
|
||||
isar_version: &isar_version ^4.0.0-dev.13 # define the version to be used
|
||||
|
||||
|
@ -75,6 +75,7 @@ dependencies:
|
|||
logging: ^1.2.0
|
||||
logging_appenders: ^1.3.1
|
||||
lottie: ^3.1.0
|
||||
material_color_utilities: ^0.11.1
|
||||
material_symbols_icons: ^4.2785.1
|
||||
media_kit_libs_linux: any
|
||||
media_kit_libs_windows_audio: any
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue