WIP #266 Card parsing proper error handling and toString for some fields
This commit is contained in:
@ -428,66 +428,77 @@ class HomeAssistant {
|
|||||||
List<HACard> _createLovelaceCards(List rawCards) {
|
List<HACard> _createLovelaceCards(List rawCards) {
|
||||||
List<HACard> result = [];
|
List<HACard> result = [];
|
||||||
rawCards.forEach((rawCard){
|
rawCards.forEach((rawCard){
|
||||||
bool isThereCardOptionsInside = rawCard["card"] != null;
|
try {
|
||||||
HACard card = HACard(
|
bool isThereCardOptionsInside = rawCard["card"] != null;
|
||||||
id: "card",
|
HACard card = HACard(
|
||||||
name: isThereCardOptionsInside ? rawCard["card"]["title"] ?? rawCard["card"]["name"] : rawCard["title"] ?? rawCard["name"],
|
id: "card",
|
||||||
type: isThereCardOptionsInside ? rawCard["card"]['type'] : rawCard['type'],
|
name: isThereCardOptionsInside ? rawCard["card"]["title"] ??
|
||||||
columnsCount: isThereCardOptionsInside ? rawCard["card"]['columns'] ?? 4 : rawCard['columns'] ?? 4,
|
rawCard["card"]["name"] : rawCard["title"] ?? rawCard["name"],
|
||||||
showName: isThereCardOptionsInside ? rawCard["card"]['show_name'] ?? true : rawCard['show_name'] ?? true,
|
type: isThereCardOptionsInside
|
||||||
showState: isThereCardOptionsInside ? rawCard["card"]['show_state'] ?? true : rawCard['show_state'] ?? true,
|
? rawCard["card"]['type']
|
||||||
showEmpty: rawCard['show_empty'] ?? true,
|
: rawCard['type'],
|
||||||
stateFilter: rawCard['state_filter'] ?? [],
|
columnsCount: isThereCardOptionsInside
|
||||||
content: rawCard['content']
|
? rawCard["card"]['columns'] ?? 4
|
||||||
);
|
: rawCard['columns'] ?? 4,
|
||||||
if (rawCard["cards"] != null) {
|
showName: isThereCardOptionsInside ? rawCard["card"]['show_name'] ??
|
||||||
card.childCards = _createLovelaceCards(rawCard["cards"]);
|
true : rawCard['show_name'] ?? true,
|
||||||
}
|
showState: isThereCardOptionsInside
|
||||||
rawCard["entities"]?.forEach((rawEntity) {
|
? rawCard["card"]['show_state'] ?? true
|
||||||
if (rawEntity is String) {
|
: rawCard['show_state'] ?? true,
|
||||||
if (entities.isExist(rawEntity)) {
|
showEmpty: rawCard['show_empty'] ?? true,
|
||||||
card.entities.add(EntityWrapper(entity: entities.get(rawEntity)));
|
stateFilter: rawCard['state_filter'] ?? [],
|
||||||
|
content: rawCard['content']
|
||||||
|
);
|
||||||
|
if (rawCard["cards"] != null) {
|
||||||
|
card.childCards = _createLovelaceCards(rawCard["cards"]);
|
||||||
|
}
|
||||||
|
rawCard["entities"]?.forEach((rawEntity) {
|
||||||
|
if (rawEntity is String) {
|
||||||
|
if (entities.isExist(rawEntity)) {
|
||||||
|
card.entities.add(EntityWrapper(entity: entities.get(rawEntity)));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (entities.isExist(rawEntity["entity"])) {
|
||||||
|
Entity e = entities.get(rawEntity["entity"]);
|
||||||
|
card.entities.add(
|
||||||
|
EntityWrapper(
|
||||||
|
entity: e,
|
||||||
|
displayName: rawEntity["name"].toString(),
|
||||||
|
icon: rawEntity["icon"].toString(),
|
||||||
|
uiAction: EntityUIAction(rawEntityData: rawEntity)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
});
|
||||||
if (entities.isExist(rawEntity["entity"])) {
|
if (rawCard["entity"] != null) {
|
||||||
Entity e = entities.get(rawEntity["entity"]);
|
var en = rawCard["entity"];
|
||||||
card.entities.add(
|
if (en is String) {
|
||||||
EntityWrapper(
|
if (entities.isExist(en)) {
|
||||||
entity: e,
|
Entity e = entities.get(en);
|
||||||
displayName: rawEntity["name"],
|
card.linkedEntityWrapper = EntityWrapper(
|
||||||
icon: rawEntity["icon"],
|
entity: e,
|
||||||
uiAction: EntityUIAction(rawEntityData: rawEntity)
|
icon: rawCard["icon"].toString(),
|
||||||
)
|
displayName: rawCard["name"].toString(),
|
||||||
);
|
uiAction: EntityUIAction(rawEntityData: rawCard)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (entities.isExist(en["entity"])) {
|
||||||
|
Entity e = entities.get(en["entity"]);
|
||||||
|
card.linkedEntityWrapper = EntityWrapper(
|
||||||
|
entity: e,
|
||||||
|
icon: en["icon"].toString(),
|
||||||
|
displayName: en["name"].toString(),
|
||||||
|
uiAction: EntityUIAction(rawEntityData: rawCard)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
result.add(card);
|
||||||
if (rawCard["entity"] != null) {
|
} catch (e) {
|
||||||
var en = rawCard["entity"];
|
Logger.e("There was an error parsing card: ${e.toString()}");
|
||||||
if (en is String) {
|
|
||||||
if (entities.isExist(en)) {
|
|
||||||
Entity e = entities.get(en);
|
|
||||||
card.linkedEntityWrapper = EntityWrapper(
|
|
||||||
entity: e,
|
|
||||||
icon: rawCard["icon"],
|
|
||||||
displayName: rawCard["name"],
|
|
||||||
uiAction: EntityUIAction(rawEntityData: rawCard)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (entities.isExist(en["entity"])) {
|
|
||||||
Entity e = entities.get(en["entity"]);
|
|
||||||
card.linkedEntityWrapper = EntityWrapper(
|
|
||||||
entity: e,
|
|
||||||
icon: en["icon"],
|
|
||||||
displayName: en["name"],
|
|
||||||
uiAction: EntityUIAction(rawEntityData: rawCard)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
result.add(card);
|
|
||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user