
Introduces a side navigation drawer on the home page to improve navigation and centralize user actions. Displays the logged-in user's information (name, email) in the drawer header. Adds a link to the Product List page ("Inventaire") within the drawer. Moves the logout functionality to the drawer, ensuring user data is also cleared from local storage upon logout. Ensures user data is saved to local storage during the login process and fetched when the home page loads. Includes minor text updates on the Product Form page.
43 lines
1.5 KiB
Dart
43 lines
1.5 KiB
Dart
import 'package:barcode_scanner/backend/schema/user/user_struct.dart';
|
|
import 'package:barcode_scanner/services/secure_storage.dart';
|
|
import 'package:barcode_scanner/services/token_provider.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
part 'home_page_model.freezed.dart';
|
|
|
|
/// The provider for the AuthViewModel, using Riverpod's StateNotifierProvider
|
|
/// with autoDispose to manage the lifecycle of the view model.
|
|
final homePageModelProvider =
|
|
StateNotifierProvider<HomePageModel, HomePageState>((ref) {
|
|
return HomePageModel(
|
|
secureStorage: ref.read(sharedPrefsProvider),
|
|
tokenProvider: ref.read(tokenProvider),
|
|
);
|
|
});
|
|
|
|
class HomePageModel extends StateNotifier<HomePageState> {
|
|
/// Constructor initializes the TaskRepository using the provider reference.
|
|
HomePageModel({required this.secureStorage, required this.tokenProvider})
|
|
: super(const HomePageState());
|
|
|
|
late FlutterSecureStorage secureStorage;
|
|
late TokenProvider tokenProvider;
|
|
|
|
Future getUserConnected() async {
|
|
state = state.copyWith(loading: true);
|
|
final user = await UserStruct(id: '1').getFromLocalStorage();
|
|
state = state.copyWith(user: user);
|
|
}
|
|
}
|
|
|
|
@freezed
|
|
abstract class HomePageState with _$HomePageState {
|
|
const factory HomePageState({
|
|
UserStruct? user,
|
|
@Default(false) bool loading,
|
|
}) = _HomePageState;
|
|
}
|