processLink method

Future<void> processLink(
  1. String? link
)

Processes the parameters gotten from deep links

Implementation

Future<void> processLink(String? link) async {
  _pageIdResponse.clear();

  // parse link and decide what to do:
  if (link != null && link.isNotEmpty) {
    final parsedUri = Uri.parse(link);
    final fdf = Uri.decodeFull(link);
    //log('returned Uri params: $fdf');
    final splittedString = fdf.split('=');

    if (splittedString.isNotEmpty) {
      _pageIdResponse = List<PageIdResponse>.from(
          jsonDecode(splittedString[2].replaceAll('&platform', ''))
              .map((x) => PageIdResponse.fromJson(x)));
    }
    //log('pageIdResponse length: ${_pageIdResponse.length}');
    if (_pageIdResponse.isNotEmpty) {
      for (int i = 0; i < _pageIdResponse.length; i++) {
        if (_pageIdResponse[i].name == previousPageName) {
          //log('duplicate page name');
          continue;
        } else {
          //log(_pageIdResponse[i].toString());
          final FaceBookOrInstagramData facebookOrInstagramData =
              FaceBookOrInstagramData(
                  page_id: _pageIdResponse[i].id,
                  access_token: parsedUri.queryParameters['access_token'],
                  page_name: _pageIdResponse[i].name,
                  platform: parsedUri.queryParameters['platform']);

          //log('facebookOrInstagramData: $facebookOrInstagramData');

          final AddFacebookOrInstagramRequest addFaceBookOrInstagramRequest =
              AddFacebookOrInstagramRequest(
                  pageName: facebookOrInstagramData.page_name ?? '',
                  pageId: facebookOrInstagramData.page_id ?? '',
                  accessToken: facebookOrInstagramData.access_token ?? '');

          facebookOrInstagramData.platform?.toLowerCase() == 'facebook'
              ? await addFacebookAccount(addFaceBookOrInstagramRequest,
                  isLast: _pageIdResponse.last == _pageIdResponse[i])
              : facebookOrInstagramData.platform?.toLowerCase() == 'instagram'
                  ? await addInstagramAccount(addFaceBookOrInstagramRequest,
                      isLast: _pageIdResponse.last == _pageIdResponse[i])
                  : _loadingService.showError('unknown platform');
          previousPageName = _pageIdResponse[i].name;
        }
      }
      disposeSubUniLinks();
    } else {
      _loadingService.showError(
          'No page selected - Select at least one page to continue');
      _pageIdResponse.clear();
    }
    disposeSubUniLinks();
    _pageIdResponse.clear();
  } else {
    disposeSubUniLinks();
    _pageIdResponse.clear();
  }
  disposeSubUniLinks();
}