From a23770d753f32a78019febc2cc72fe32a1550df7 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 30 Mar 2021 18:12:10 +0200 Subject: [PATCH 1/2] added method to check if there are agents online --- RNZendeskChat.d.ts | 6 +++++ .../zendesk/RNZendeskChatModule.java | 26 +++++++++++++++++++ ios/RNZendeskChatModule.m | 21 +++++++++++++++ 3 files changed, 53 insertions(+) diff --git a/RNZendeskChat.d.ts b/RNZendeskChat.d.ts index 02e1da8..9d545ba 100644 --- a/RNZendeskChat.d.ts +++ b/RNZendeskChat.d.ts @@ -97,6 +97,12 @@ declare module "react-native-zendesk-chat" { * Configure the token to start receiving Push Notifications */ registerPushToken: (token: string) => void; + + + /** + * Check if there are available agents + */ + areAgentsOnline: () => Promise; } const RNZendeskChatModule: RNZendeskChatModuleImpl; diff --git a/android/src/main/java/com/taskrabbit/zendesk/RNZendeskChatModule.java b/android/src/main/java/com/taskrabbit/zendesk/RNZendeskChatModule.java index 25a344e..d297634 100644 --- a/android/src/main/java/com/taskrabbit/zendesk/RNZendeskChatModule.java +++ b/android/src/main/java/com/taskrabbit/zendesk/RNZendeskChatModule.java @@ -23,6 +23,7 @@ import zendesk.chat.PushNotificationsProvider; import zendesk.chat.ChatEngine; import zendesk.chat.VisitorInfo; +import zendesk.chat.AccountStatus; import zendesk.messaging.MessagingActivity; import zendesk.messaging.MessagingConfiguration; @@ -377,4 +378,29 @@ public void update(ChatState chatState) { } }); } + + @ReactMethod + public void areAgentsOnline(Promise promise) { + Chat.INSTANCE.providers().accountProvider().getAccount(new ZendeskCallback() { + @Override + public void onSuccess(Account account) { + AccountStatus status = account.getStatus(); + + switch (status) { + case AccountStatus.ONLINE: + promise.resolve(true); + break; + + default: + promise.resolve(false); + break; + } + } + + @Override + public void onError(ErrorResponse errorResponse) { + reject(); + } + }); + } } diff --git a/ios/RNZendeskChatModule.m b/ios/RNZendeskChatModule.m index 8722b4b..fa3583c 100644 --- a/ios/RNZendeskChatModule.m +++ b/ios/RNZendeskChatModule.m @@ -201,4 +201,25 @@ - (void) dismissChatUI { }); } +RCT_EXPORT_METHOD(areAgentsOnline: + (RCTPromiseResolveBlock) resolve + rejecter: (RCTPromiseRejectBlock) reject) { + + [ZDKChat.accountProvider getAccout:^(ZDKChatAccount *account, NSError *error) { + if (account) { + switch (account.accountstatus) { + case ZDKChatAccountStatusOnline: + resolve(true); + break; + + default: + resolve(false); + break; + } + } else { + reject(false); + } + }]; +} + @end From 1409b17d5d4fb31e49fba33b193f5d7d5e4865c2 Mon Sep 17 00:00:00 2001 From: Gabriel Date: Wed, 31 Mar 2021 11:15:19 +0200 Subject: [PATCH 2/2] fixed typo on getAccount --- ios/RNZendeskChatModule.m | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/ios/RNZendeskChatModule.m b/ios/RNZendeskChatModule.m index fa3583c..2706c72 100644 --- a/ios/RNZendeskChatModule.m +++ b/ios/RNZendeskChatModule.m @@ -205,19 +205,17 @@ - (void) dismissChatUI { (RCTPromiseResolveBlock) resolve rejecter: (RCTPromiseRejectBlock) reject) { - [ZDKChat.accountProvider getAccout:^(ZDKChatAccount *account, NSError *error) { + [ZDKChat.accountProvider getAccount:^(ZDKChatAccount *account, NSError *error) { if (account) { - switch (account.accountstatus) { + switch (account.accountStatus) { case ZDKChatAccountStatusOnline: - resolve(true); + resolve(@YES); break; default: - resolve(false); + resolve(@NO); break; } - } else { - reject(false); } }]; }