getFacebookPages method

Future<List<BotFacebookPage>?> getFacebookPages({
  1. required String fuid,
  2. required String accessToken,
})

Get the facebook pages that are connected to this bot.

  • {fuid} is the facebook user id that you get from the facebook login page using callbackUrl.

  • {accessToken} is the access token that you get from the facebook login page using callbackUrl.

Implementation

Future<List<BotFacebookPage>?> getFacebookPages({
  required String fuid,
  required String accessToken,
}) async {
  try {
    if (_bot.id == null) {
      GetIt.I<BotnoiClient>().finishedFailed();
      GetIt.I<BotnoiClient>().error.add("[getFacebookPages] : bot '${_bot.botName}' doesn't have an id, try reloading it");
      return null;
    }
    Uri url = Uri.parse("${GetIt.I<BotnoiClient>().endpoint}/developer/platform-api/connect/facebook/page?uid=$fuid");
    http.Response response = await http.get(
      url,
      headers: {..._getHeader, "X-Fb-User-Token": accessToken},
    );
    if (response.statusCode == 200 || response.statusCode == 204 || response.statusCode == 201) {
      GetIt.I<BotnoiClient>().finishedSuccessfully();
      dynamic result = jsonDecode(utf8.decode(response.bodyBytes));
      List<Map> allPages = result["my_page"]["resource"];
      List<Map> usedPages = result["used_page"]["resource"];
      return allPages.map((e) {
        final isUsed = usedPages.any((element) => element["page_id"] == e["page_id"]);
        final Map fE = {
          ...e,
          "is_used": isUsed,
          isUsed ? "bot_id" : usedPages.firstWhere((element) => element["page_id"] == e["page_id"])["bot_id"]: null,
          isUsed ? "owner_id" : usedPages.firstWhere((element) => element["page_id"] == e["page_id"])["owner_id"]: null,
        };
        return BotFacebookPage.fromJson(fE);
      }).toList();
    }
    GetIt.I<BotnoiClient>().finishedFailed();
    GetIt.I<BotnoiClient>().error.add("[getFacebookPages] : ${response.reasonPhrase ?? "ERROR"}");
    return null;
  } catch (e) {
    GetIt.I<BotnoiClient>().finishedFailed();
    GetIt.I<BotnoiClient>().error.add("[getFacebookPages] : $e");
    return null;
  }
}