feat(app): responsive asset detail layout, full width chart, reactive hero header, shimmer loaders and enriched fundamentals

This commit is contained in:
2026-08-14 23:57:03 +02:00
parent f94e3b8164
commit 1d244b338a
22 changed files with 1950 additions and 1074 deletions
@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../trades/models/trade_model.dart';
import 'asset_trades_event.dart';
import 'asset_trades_state.dart';
import '../../repositories/asset_repository.dart';
@@ -17,9 +18,20 @@ class AssetTradesBloc extends Bloc<AssetTradesEvent, AssetTradesState> {
}
});
on<TriggerManualAnalysis>((event, emit) async {
emit(AssetTradesLoading());
try {
await repository.triggerManualAnalysis(event.isin, payload: event.payload);
add(LoadAssetTrades(event.isin));
final analysisRes = await repository.triggerManualAnalysis(event.isin, payload: event.payload);
final existingTrades = await repository.getAssetTrades(event.isin, null);
final list = List<TradeModel>.from(existingTrades);
final newProposal = analysisRes?.proposal;
if (newProposal != null) {
final isDuplicate = list.any((t) => t.id == newProposal.id || (t.analysisId.isNotEmpty && t.analysisId == newProposal.analysisId));
if (!isDuplicate) {
list.insert(0, newProposal);
}
}
emit(AssetTradesLoaded(list));
} catch (e) {
emit(AssetTradesError("Failed to trigger manual analysis: $e"));
}