getHome method

Future<void> getHome(
  1. GetHome getHome
)

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();
  }
}