runable
This commit is contained in:
23
lib/core/providers/core_providers.dart
Normal file
23
lib/core/providers/core_providers.dart
Normal file
@@ -0,0 +1,23 @@
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import '../network/dio_client.dart';
|
||||
import '../storage/secure_storage.dart';
|
||||
|
||||
part 'core_providers.g.dart';
|
||||
|
||||
/// Provider for DioClient (singleton)
|
||||
///
|
||||
/// This is the global HTTP client used across the entire app.
|
||||
/// It's configured with interceptors, timeout settings, and auth token injection.
|
||||
@Riverpod(keepAlive: true)
|
||||
DioClient dioClient(Ref ref) {
|
||||
return DioClient();
|
||||
}
|
||||
|
||||
/// Provider for SecureStorage (singleton)
|
||||
///
|
||||
/// This is the global secure storage used for storing sensitive data like tokens.
|
||||
/// Uses platform-specific secure storage (Keychain on iOS, EncryptedSharedPreferences on Android).
|
||||
@Riverpod(keepAlive: true)
|
||||
SecureStorage secureStorage(Ref ref) {
|
||||
return SecureStorage();
|
||||
}
|
||||
119
lib/core/providers/core_providers.g.dart
Normal file
119
lib/core/providers/core_providers.g.dart
Normal file
@@ -0,0 +1,119 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'core_providers.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
/// Provider for DioClient (singleton)
|
||||
///
|
||||
/// This is the global HTTP client used across the entire app.
|
||||
/// It's configured with interceptors, timeout settings, and auth token injection.
|
||||
|
||||
@ProviderFor(dioClient)
|
||||
const dioClientProvider = DioClientProvider._();
|
||||
|
||||
/// Provider for DioClient (singleton)
|
||||
///
|
||||
/// This is the global HTTP client used across the entire app.
|
||||
/// It's configured with interceptors, timeout settings, and auth token injection.
|
||||
|
||||
final class DioClientProvider
|
||||
extends $FunctionalProvider<DioClient, DioClient, DioClient>
|
||||
with $Provider<DioClient> {
|
||||
/// Provider for DioClient (singleton)
|
||||
///
|
||||
/// This is the global HTTP client used across the entire app.
|
||||
/// It's configured with interceptors, timeout settings, and auth token injection.
|
||||
const DioClientProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'dioClientProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$dioClientHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$ProviderElement<DioClient> $createElement($ProviderPointer pointer) =>
|
||||
$ProviderElement(pointer);
|
||||
|
||||
@override
|
||||
DioClient create(Ref ref) {
|
||||
return dioClient(ref);
|
||||
}
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(DioClient value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<DioClient>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$dioClientHash() => r'895f0dc2f8d5eab562ad65390e5c6d4a1f722b0d';
|
||||
|
||||
/// Provider for SecureStorage (singleton)
|
||||
///
|
||||
/// This is the global secure storage used for storing sensitive data like tokens.
|
||||
/// Uses platform-specific secure storage (Keychain on iOS, EncryptedSharedPreferences on Android).
|
||||
|
||||
@ProviderFor(secureStorage)
|
||||
const secureStorageProvider = SecureStorageProvider._();
|
||||
|
||||
/// Provider for SecureStorage (singleton)
|
||||
///
|
||||
/// This is the global secure storage used for storing sensitive data like tokens.
|
||||
/// Uses platform-specific secure storage (Keychain on iOS, EncryptedSharedPreferences on Android).
|
||||
|
||||
final class SecureStorageProvider
|
||||
extends $FunctionalProvider<SecureStorage, SecureStorage, SecureStorage>
|
||||
with $Provider<SecureStorage> {
|
||||
/// Provider for SecureStorage (singleton)
|
||||
///
|
||||
/// This is the global secure storage used for storing sensitive data like tokens.
|
||||
/// Uses platform-specific secure storage (Keychain on iOS, EncryptedSharedPreferences on Android).
|
||||
const SecureStorageProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'secureStorageProvider',
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
@override
|
||||
String debugGetCreateSourceHash() => _$secureStorageHash();
|
||||
|
||||
@$internal
|
||||
@override
|
||||
$ProviderElement<SecureStorage> $createElement($ProviderPointer pointer) =>
|
||||
$ProviderElement(pointer);
|
||||
|
||||
@override
|
||||
SecureStorage create(Ref ref) {
|
||||
return secureStorage(ref);
|
||||
}
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(SecureStorage value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<SecureStorage>(value),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
String _$secureStorageHash() => r'5c9908c0046ad0e39469ee7acbb5540397b36693';
|
||||
@@ -1,3 +1,4 @@
|
||||
/// Export all core providers
|
||||
export 'core_providers.dart';
|
||||
export 'network_info_provider.dart';
|
||||
export 'sync_status_provider.dart';
|
||||
|
||||
@@ -45,10 +45,10 @@ class SyncStatus extends _$SyncStatus {
|
||||
|
||||
try {
|
||||
// Sync categories first (products depend on categories)
|
||||
await ref.read(categoriesProvider.notifier).syncCategories();
|
||||
await ref.read(categoriesProvider.notifier).refresh();
|
||||
|
||||
// Then sync products
|
||||
await ref.read(productsProvider.notifier).syncProducts();
|
||||
await ref.read(productsProvider.notifier).refresh();
|
||||
|
||||
// Update last sync time in settings
|
||||
await ref.read(settingsProvider.notifier).updateLastSyncTime();
|
||||
@@ -100,7 +100,7 @@ class SyncStatus extends _$SyncStatus {
|
||||
);
|
||||
|
||||
try {
|
||||
await ref.read(productsProvider.notifier).syncProducts();
|
||||
await ref.read(productsProvider.notifier).refresh();
|
||||
await ref.read(settingsProvider.notifier).updateLastSyncTime();
|
||||
|
||||
state = AsyncValue.data(
|
||||
@@ -146,7 +146,7 @@ class SyncStatus extends _$SyncStatus {
|
||||
);
|
||||
|
||||
try {
|
||||
await ref.read(categoriesProvider.notifier).syncCategories();
|
||||
await ref.read(categoriesProvider.notifier).refresh();
|
||||
await ref.read(settingsProvider.notifier).updateLastSyncTime();
|
||||
|
||||
state = AsyncValue.data(
|
||||
|
||||
@@ -36,7 +36,7 @@ final class SyncStatusProvider
|
||||
SyncStatus create() => SyncStatus();
|
||||
}
|
||||
|
||||
String _$syncStatusHash() => r'dc92a1b83c89af94dfe94b646aa81d9501f371d7';
|
||||
String _$syncStatusHash() => r'bf09683a3a67b6c7104274c7a4b92ee410de8e45';
|
||||
|
||||
/// Sync status provider - manages data synchronization state
|
||||
|
||||
|
||||
Reference in New Issue
Block a user