feat(App): update Finlytic Flutter app UI and blocs
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:finlytic_app/features/trades/repositories/trade_repository.dart';
|
||||
import 'trade_event.dart';
|
||||
import 'trade_state.dart';
|
||||
|
||||
class TradeBloc extends Bloc<TradeEvent, TradeState> {
|
||||
final TradeRepository repository;
|
||||
|
||||
TradeBloc({required this.repository}) : super(TradeInitial()) {
|
||||
on<FetchTrades>(_onFetchTrades);
|
||||
on<CloseTrade>(_onCloseTrade);
|
||||
on<AcceptTradeProposalEvent>(_onAcceptTradeProposal);
|
||||
}
|
||||
|
||||
Future<void> _onFetchTrades(FetchTrades event, Emitter<TradeState> emit) async {
|
||||
emit(TradeLoading());
|
||||
try {
|
||||
final trades = await repository.fetchTrades(isin: event.isin, status: event.status);
|
||||
emit(TradeLoaded(trades));
|
||||
} catch (e) {
|
||||
emit(const TradeError("Trades konnten nicht geladen werden"));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCloseTrade(CloseTrade event, Emitter<TradeState> emit) async {
|
||||
emit(TradeLoading());
|
||||
try {
|
||||
await repository.closeTrade(event.tradeId);
|
||||
final trades = await repository.fetchTrades();
|
||||
emit(TradeLoaded(trades));
|
||||
} catch (e) {
|
||||
emit(const TradeError("Position konnte nicht geschlossen werden"));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onAcceptTradeProposal(AcceptTradeProposalEvent event, Emitter<TradeState> emit) async {
|
||||
emit(TradeLoading());
|
||||
try {
|
||||
await repository.acceptTrade(event.dto);
|
||||
final trades = await repository.fetchTrades();
|
||||
emit(TradeLoaded(trades));
|
||||
} catch (e) {
|
||||
emit(const TradeError("Trade konnte nicht akzeptiert werden"));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user