getFacebookPages method
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;
}
}