feat(app): clean architecture with typed repositories, DTO models and calendar event logos

This commit is contained in:
2026-08-15 01:03:22 +02:00
parent f08fecde23
commit 15f8f7896e
34 changed files with 1435 additions and 1420 deletions
@@ -8,6 +8,8 @@ class CorporateEventModel extends Equatable {
final String eventType;
final DateTime eventDate;
final String description;
final String? image;
final String? ticker;
const CorporateEventModel({
required this.id,
@@ -17,6 +19,8 @@ class CorporateEventModel extends Equatable {
required this.eventDate,
required this.description,
required this.isin,
this.image,
this.ticker,
});
factory CorporateEventModel.fromJson(Map<String, dynamic> json) {
@@ -37,9 +41,12 @@ class CorporateEventModel extends Equatable {
}
}
final isinVal = json['isin']?.toString() ?? json['Isin']?.toString() ?? '';
final imageVal = json['image']?.toString() ?? json['Image']?.toString() ?? (isinVal.isNotEmpty ? '/api/v1/logo/$isinVal' : null);
return CorporateEventModel(
id: json['id']?.toString() ?? json['Id']?.toString() ?? '',
isin: json['isin']?.toString() ?? json['Isin']?.toString() ?? '',
isin: isinVal,
symbol: json['symbol']?.toString() ?? json['Symbol']?.toString() ?? '',
companyName: json['companyName']?.toString() ??
json['CompanyName']?.toString() ??
@@ -50,6 +57,8 @@ class CorporateEventModel extends Equatable {
description: json['description']?.toString() ??
json['Description']?.toString() ??
'',
image: imageVal,
ticker: json['ticker']?.toString() ?? json['Ticker']?.toString(),
);
}
@@ -62,10 +71,12 @@ class CorporateEventModel extends Equatable {
'eventType': eventType,
'eventDate': eventDate.toIso8601String(),
'description': description,
if (image != null) 'image': image,
if (ticker != null) 'ticker': ticker,
};
}
@override
List<Object?> get props =>
[id, symbol, companyName, eventType, eventDate, description];
[id, symbol, companyName, eventType, eventDate, description, isin, image, ticker];
}