import 'package:flutter_bloc/flutter_bloc.dart'; import '../data/auth_repository.dart'; import 'auth_state.dart'; class AuthCubit extends Cubit { final AuthRepository _repo; AuthCubit(this._repo) : super(const AuthState()); Future checkAuth() async { final user = await _repo.me(); emit(state.copyWith( status: user != null ? AuthStatus.authenticated : AuthStatus.unauthenticated, user: user, )); } Future sendOtp(String phone) async { if (phone.trim().isEmpty) { emit(state.copyWith(status: AuthStatus.error, error: 'أدخل رقم الهاتف')); return; } try { emit(state.copyWith(status: AuthStatus.authenticating, phone: phone.trim())); await _repo.sendOtp(phone.trim()); emit(state.copyWith(status: AuthStatus.codeSent, phone: phone.trim())); } catch (_) { emit(state.copyWith(status: AuthStatus.error, error: 'تعذّر إرسال الرمز')); } } Future verify(String code) async { try { emit(state.copyWith(status: AuthStatus.authenticating)); final user = await _repo.verify(state.phone, code.trim()); emit(state.copyWith(status: AuthStatus.authenticated, user: user)); } catch (_) { emit(state.copyWith(status: AuthStatus.error, error: 'رمز غير صحيح')); } } Future logout() async { await _repo.logout(); emit(const AuthState(status: AuthStatus.unauthenticated)); } }