create promocode page

This commit is contained in:
2026-06-01 14:35:46 +03:00
parent 134ffdde60
commit 0b6757e26f
13 changed files with 343 additions and 112 deletions

View File

@@ -0,0 +1,37 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/usecase/apply_promo_code_usecase.dart';
import '../event/promo_code_event.dart';
import '../state/promo_code_state.dart';
class PromoCodeBloc extends Bloc<PromoCodeEvent, PromoCodeState> {
final ApplyPromoCodeUsecase _applyPromoCodeUsecase;
PromoCodeBloc(this._applyPromoCodeUsecase) : super(const PromoCodeState()) {
on<PromoCodeApplyRequested>(_onApplyRequested);
on<PromoCodeReset>(_onReset);
}
Future<void> _onApplyRequested(
PromoCodeApplyRequested event,
Emitter<PromoCodeState> emit,
) async {
emit(state.copyWith(status: PromoCodeStatus.loading));
try {
final result = await _applyPromoCodeUsecase(event.code);
emit(state.copyWith(
status: PromoCodeStatus.success,
newBalance: result.balance,
));
} catch (e) {
emit(state.copyWith(
status: PromoCodeStatus.failure,
errorMessage: e.toString(),
));
}
}
void _onReset(PromoCodeReset event, Emitter<PromoCodeState> emit) {
emit(const PromoCodeState());
}
}