import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:firebase_auth/firebase_auth.dart'; import '../services/auth_service.dart'; import '../models/user_model.dart'; // Auth service provider final authServiceProvider = Provider((ref) => AuthService()); // Auth state provider - lytter til Firebase Auth state changes final authStateProvider = StreamProvider((ref) { final authService = ref.watch(authServiceProvider); return authService.authStateChanges; }); // Current user provider final currentUserProvider = Provider((ref) { final authState = ref.watch(authStateProvider); return authState.when( data: (user) => user, loading: () => null, error: (_, __) => null, ); }); // User data provider - henter brukerdata fra Firestore final userDataProvider = StreamProvider((ref) { final user = ref.watch(currentUserProvider); if (user == null) { return Stream.value(null); } final authService = ref.watch(authServiceProvider); return authService.userDataStream(user.uid); }); // Login provider final loginProvider = Provider Function({ required String email, required String password, })>((ref) { final authService = ref.watch(authServiceProvider); return ({required String email, required String password}) { return authService.signInWithEmail(email: email, password: password); }; }); // Sign up provider final signUpProvider = Provider Function({ required String email, required String password, required String displayName, required String organizationId, String? departmentId, })>((ref) { final authService = ref.watch(authServiceProvider); return ({ required String email, required String password, required String displayName, required String organizationId, String? departmentId, }) { return authService.signUpWithEmail( email: email, password: password, displayName: displayName, organizationId: organizationId, departmentId: departmentId, ); }; }); // Sign out provider final signOutProvider = Provider Function()>((ref) { final authService = ref.watch(authServiceProvider); return () => authService.signOut(); }); // Reset password provider final resetPasswordProvider = Provider Function(String)>((ref) { final authService = ref.watch(authServiceProvider); return (String email) => authService.resetPassword(email); });