KnotEvent.fromJson constructor
KnotEvent.fromJson(
- dynamic json
Factory method to create a KnotEvent from a json
map.
Implementation
factory KnotEvent.fromJson(dynamic json) {
// Ensure json is a Map and safely cast it
if (json is! Map) {
throw ArgumentError('Expected a Map<String, dynamic>, got ${json.runtimeType}');
}
final Map<String, Object?> jsonMap = json.cast<String, Object?>();
String? merchant = jsonMap["merchant"] as String?;
String event = jsonMap["event"] as String;
String? taskId = jsonMap["taskId"] as String?;
dynamic rawMetaData = jsonMap["metaData"];
String? productName = jsonMap["product"] as String?;
Map<String, Object?> metaData;
if (rawMetaData is Map) {
metaData = rawMetaData.cast<String, Object?>();
} else {
metaData = {};
}
// Map to a product
Product? product;
switch (productName) {
case "transaction_link":
product = Product.transactionLink;
break;
case "card_switcher":
product = Product.cardSwitcher;
break;
}
// Map to environment
Environment environment = Environment.development;
switch (jsonMap["environment"]) {
case "development":
environment = Environment.development;
break;
case "production":
environment = Environment.production;
break;
}
return KnotEvent(
merchant: merchant,
environment: environment,
event: event,
product: product ?? Product.transactionLink,
taskId: taskId,
metaData: metaData
);
}