refactor: save current workspace state including FinlyticAnalyzer fixes, FinlyticApp trade route alignment, and DTO audit documentation

This commit is contained in:
2026-08-12 18:30:42 +02:00
parent a9553e9fbf
commit 3d8af3940b
163 changed files with 3421 additions and 1751 deletions
@@ -2,6 +2,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'asset_header_event.dart';
import 'asset_header_state.dart';
import '../../repositories/asset_repository.dart';
import '../../models/asset_model.dart';
class AssetHeaderBloc extends Bloc<AssetHeaderEvent, AssetHeaderState> {
final AssetRepository repository;
@@ -10,8 +11,28 @@ class AssetHeaderBloc extends Bloc<AssetHeaderEvent, AssetHeaderState> {
final prevData = state is AssetHeaderLoaded ? (state as AssetHeaderLoaded).data : (state is AssetHeaderLoading ? (state as AssetHeaderLoading).previousData : null);
emit(AssetHeaderLoading(previousData: prevData));
try {
final data = await repository.getAssetHeader(event.isin, exchange: event.exchange, ticker: event.ticker);
emit(AssetHeaderLoaded(data));
final fundamentals = await repository.getAssetFundamentals(event.isin, event.forceRefresh, ticker: event.ticker);
if (fundamentals != null) {
final assetModel = AssetModel(
isin: fundamentals.isin,
symbol: fundamentals.primaryTicker.isNotEmpty ? fundamentals.primaryTicker : fundamentals.isin,
name: fundamentals.companyName,
currentPrice: fundamentals.currentPrice,
currency: fundamentals.tradingCurrency ?? 'EUR',
exchange: fundamentals.exchange ?? 'XETRA',
exchanges: [], // Can be populated if needed
tickers: fundamentals.availableTickers.map((t) => AssetTickerOption(
ticker: t.ticker,
exchange: t.exchange ?? 'Unknown',
tradingCurrency: t.tradingCurrency ?? fundamentals.tradingCurrency ?? 'EUR',
currentPrice: t.currentPrice,
)).toList(),
image: '/api/v1/logo/${fundamentals.isin}',
);
emit(AssetHeaderLoaded(assetModel));
} else {
emit(AssetHeaderError('Failed to load asset header data'));
}
} catch (e) {
emit(AssetHeaderError(e.toString()));
}