barcode_scanner/lib/pages/home_page/home_page_model.dart
mandreshope 09405b5da7 feat: Implement local product storage using ObjectBox
Configures the ObjectBox ProductEntity to allow assigning IDs. Adds a helper to convert ProductStruct to ProductEntity for easier storage.

Saves scanned products directly to the local ObjectBox store.

Updates the ProductListPage to fetch and display locally stored products from ObjectBox upon initialization.

Includes minor UI adjustments in the scanned product component and scanner page, and fixes loading state handling in HomePageModel.
2025-07-03 21:09:49 +03:00

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, loading: false);
}
}
@freezed
abstract class HomePageState with _$HomePageState {
const factory HomePageState({
UserStruct? user,
@Default(false) bool loading,
}) = _HomePageState;
}