getHome method
Implementation
Future<void> getHome(GetHome getHome) async {
getHome.onLoading();
final url = Uri.parse(
'https://api.plentrasphere.com/v2/client/?class=default&action=getHome&appKey=$appKey&page=1');
try {
final response = await http.get(url);
if (response.statusCode == 200) {
final jsonData = json.decode(response.body);
final code = jsonData['response']['code'];
final status = jsonData['response']['status'];
if (code == 401) {
getHome.onError(status);
getHome.onLoadfinished();
return;
} else if (code == 404) {
getHome.onNotFound();
getHome.onLoadfinished();
return;
} else if (code == 400) {
if (status == "app-expired") {
getHome.onAppNotActive(jsonData['info']['appName']);
getHome.onLoadfinished();
return;
}
getHome.onError(status);
getHome.onLoadfinished();
return;
} else if (code == 406) {
getHome.onError(status);
return;
}
if (status == "under-construction") {
getHome.onUnderConstruction();
getHome.onLoadfinished();
return;
}
final info = jsonData['info'];
if (info['appLocation']['status']) {
final location = info['appLocation'];
getHome.onAppLocation(
location['location'],
(location['lat']),
(location['lon']),
);
}
if (info['footer']['status']) {
getHome.onFooter(info['footer']['text'], info['footer']['pageLinks']);
}
final itemsInThisPage = (info['itemsInThisPage']);
final totalItemCount = (info['totalItemCount']);
if (jsonData['popup']['status']) {
final popup = jsonData['popup'];
getHome.onPopup(popup['popupTitle'], popup['popupMessage']);
}
if (jsonData['message']['status']) {
final message = jsonData['message'];
getHome.onMessage(message['messageTitle'], message['messageBody']);
}
if (jsonData['announcement']['status']) {
final announcement = jsonData['announcement'];
getHome.onAnnouncement(announcement['announcementBody']);
}
if (info['homeCover']['status']) {
getHome.onHomeCover(info['homeCover']['image']);
}
if (info['homeScreen']['itemRail']['status']) {
getHome.onItemRail(info['homeScreen']['itemRail']['categories']);
}
if (info['nextPage']['status']) {
getHome.onNextPage(info['nextPage']['page']);
} else {
getHome.onNoNextPage();
}
if (itemsInThisPage != 0) {
final List<dynamic> _items = jsonData['items'];
final List<dynamic> items = [];
_items.forEach((element) {
items.add({
'itemName': element['itemName'],
'actionType': element['actionType'],
'action': element['action'],
'itemImage': element['thumbnail'],
});
});
getHome.onResult(
info['appName'],
info['appIcon'],
totalItemCount,
itemsInThisPage,
info['itemsPerPage'],
items,
);
} else {
getHome.onEmpty(info['appName'], info['appIcon']);
}
getHome.onLoadfinished();
} else {
getHome.onError('HTTP ${response.statusCode}');
getHome.onLoadfinished();
}
} catch (e) {
getHome.onError(e.toString());
getHome.onLoadfinished();
}
}