mirror of
https://github.com/Dr-Blank/Vaani.git
synced 2025-12-09 12:39:29 +00:00
fix: keyboard not showing when adding new user (#79)
* feat: add fadeSlideTransitionBuilder for smoother transitions in user login * fix: reuse onboarding components on server manager page * fix: gaining focus rebuilt the widget using memoized fixes this issue
This commit is contained in:
parent
c8767b4e1e
commit
25be7fda03
10 changed files with 447 additions and 493 deletions
|
|
@ -8,15 +8,15 @@ import 'package:vaani/settings/models/audiobookshelf_server.dart';
|
|||
import 'package:vaani/settings/models/authenticated_user.dart' as model;
|
||||
import 'package:vaani/shared/extensions/obfuscation.dart';
|
||||
|
||||
part 'authenticated_user_provider.g.dart';
|
||||
part 'authenticated_users_provider.g.dart';
|
||||
|
||||
final _box = AvailableHiveBoxes.authenticatedUserBox;
|
||||
|
||||
final _logger = Logger('authenticated_user_provider');
|
||||
final _logger = Logger('authenticated_users_provider');
|
||||
|
||||
/// provides with a set of authenticated users
|
||||
@riverpod
|
||||
class AuthenticatedUser extends _$AuthenticatedUser {
|
||||
class AuthenticatedUsers extends _$AuthenticatedUsers {
|
||||
@override
|
||||
Set<model.AuthenticatedUser> build() {
|
||||
ref.listenSelf((_, __) {
|
||||
|
|
@ -56,6 +56,7 @@ class AuthenticatedUser extends _$AuthenticatedUser {
|
|||
|
||||
void addUser(model.AuthenticatedUser user, {bool setActive = false}) {
|
||||
state = state..add(user);
|
||||
ref.invalidateSelf();
|
||||
if (setActive) {
|
||||
final apiSettings = ref.read(apiSettingsProvider);
|
||||
ref.read(apiSettingsProvider.notifier).updateState(
|
||||
|
|
@ -82,9 +83,12 @@ class AuthenticatedUser extends _$AuthenticatedUser {
|
|||
// also remove the user from the active user
|
||||
final apiSettings = ref.read(apiSettingsProvider);
|
||||
if (apiSettings.activeUser == user) {
|
||||
// replace the active user with the first user in the list
|
||||
// or null if there are no users left
|
||||
final newActiveUser = state.isNotEmpty ? state.first : null;
|
||||
ref.read(apiSettingsProvider.notifier).updateState(
|
||||
apiSettings.copyWith(
|
||||
activeUser: null,
|
||||
activeUser: newActiveUser,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
@ -1,28 +1,30 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'authenticated_user_provider.dart';
|
||||
part of 'authenticated_users_provider.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$authenticatedUserHash() => r'1983527595207c63a12bc84cf0bf1a3c1d729506';
|
||||
String _$authenticatedUsersHash() =>
|
||||
r'5fdd472f62fc3b73ff8417cdce9f02e86c33d00f';
|
||||
|
||||
/// provides with a set of authenticated users
|
||||
///
|
||||
/// Copied from [AuthenticatedUser].
|
||||
@ProviderFor(AuthenticatedUser)
|
||||
final authenticatedUserProvider = AutoDisposeNotifierProvider<AuthenticatedUser,
|
||||
Set<model.AuthenticatedUser>>.internal(
|
||||
AuthenticatedUser.new,
|
||||
name: r'authenticatedUserProvider',
|
||||
/// Copied from [AuthenticatedUsers].
|
||||
@ProviderFor(AuthenticatedUsers)
|
||||
final authenticatedUsersProvider = AutoDisposeNotifierProvider<
|
||||
AuthenticatedUsers, Set<model.AuthenticatedUser>>.internal(
|
||||
AuthenticatedUsers.new,
|
||||
name: r'authenticatedUsersProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$authenticatedUserHash,
|
||||
: _$authenticatedUsersHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$AuthenticatedUser = AutoDisposeNotifier<Set<model.AuthenticatedUser>>;
|
||||
typedef _$AuthenticatedUsers
|
||||
= 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, deprecated_member_use_from_same_package
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:vaani/api/authenticated_user_provider.dart';
|
||||
import 'package:vaani/api/authenticated_users_provider.dart';
|
||||
import 'package:vaani/db/storage.dart';
|
||||
import 'package:vaani/settings/api_settings_provider.dart';
|
||||
import 'package:vaani/settings/models/audiobookshelf_server.dart' as model;
|
||||
|
|
@ -88,7 +88,7 @@ class AudiobookShelfServer extends _$AudiobookShelfServer {
|
|||
}
|
||||
// remove the users of this server
|
||||
if (removeUsers) {
|
||||
ref.read(authenticatedUserProvider.notifier).removeUsersOfServer(server);
|
||||
ref.read(authenticatedUsersProvider.notifier).removeUsersOfServer(server);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ part of 'server_provider.dart';
|
|||
// **************************************************************************
|
||||
|
||||
String _$audiobookShelfServerHash() =>
|
||||
r'09e7e37ddc794c45eafbaab7eba82c9dd17faa93';
|
||||
r'31a96b431221965cd586aad670a32ca901539e41';
|
||||
|
||||
/// provides with a set of servers added by the user
|
||||
///
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue