Skip to content

Commit c56bd67

Browse files
author
piotr pietruszewski
committed
feat(android): added fetch help center collections method
1 parent 7dc73c2 commit c56bd67

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

android/src/main/java/com/intercom/reactnative/IntercomModule.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,28 @@
77
import androidx.annotation.NonNull;
88
import androidx.annotation.Nullable;
99

10+
import com.facebook.react.bridge.Arguments;
1011
import com.facebook.react.bridge.Promise;
1112
import com.facebook.react.bridge.ReactApplicationContext;
1213
import com.facebook.react.bridge.ReactContextBaseJavaModule;
1314
import com.facebook.react.bridge.ReactMethod;
1415
import com.facebook.react.bridge.ReadableArray;
1516
import com.facebook.react.bridge.ReadableMap;
1617
import com.facebook.react.module.annotations.ReactModule;
18+
import com.facebook.react.bridge.WritableMap;
19+
import com.facebook.react.bridge.WritableArray;
1720
import com.google.firebase.messaging.RemoteMessage;
1821

22+
import org.jetbrains.annotations.NotNull;
23+
1924
import java.util.List;
2025
import java.util.Map;
2126

2227
import io.intercom.android.sdk.Intercom;
2328
import io.intercom.android.sdk.UserAttributes;
2429
import io.intercom.android.sdk.api.ReactNativeHeaderInterceptor;
30+
import io.intercom.android.sdk.helpcenter.api.CollectionRequestCallback;
31+
import io.intercom.android.sdk.helpcenter.collections.HelpCenterCollection;
2532
import io.intercom.android.sdk.identity.Registration;
2633
import io.intercom.android.sdk.push.IntercomPushClient;
2734

@@ -289,6 +296,47 @@ public void displayHelpCenterCollections(ReadableArray collectionsId, Promise pr
289296
}
290297
}
291298

299+
@ReactMethod
300+
public void fetchHelpCenterCollections(Promise promise) {
301+
try {
302+
303+
CollectionRequestCallback collectionRequestCallback = new CollectionRequestCallback() {
304+
@Override
305+
public void onComplete(@NotNull List<HelpCenterCollection> list) {
306+
HelpCenterCollection[] returnArray = new HelpCenterCollection[list.size()];
307+
308+
returnArray = list.toArray(returnArray);
309+
WritableArray promiseArray = Arguments.createArray();
310+
for (HelpCenterCollection helpCenterCollection : returnArray) {
311+
WritableMap item = Arguments.createMap();
312+
item.putString("id", helpCenterCollection.getId());
313+
item.putString("title", helpCenterCollection.getTitle());
314+
item.putString("summary", helpCenterCollection.getSummary());
315+
promiseArray.pushMap(item);
316+
}
317+
promise.resolve(promiseArray);
318+
}
319+
320+
@Override
321+
public void onError(int i) {
322+
promise.reject(String.valueOf(i), "fetchHelpCenterCollections error");
323+
}
324+
325+
@Override
326+
public void onFailure() {
327+
promise.reject("901", "fetchHelpCenterCollections faliure");
328+
}
329+
};
330+
331+
Intercom.client().fetchHelpCenterCollections(collectionRequestCallback);
332+
333+
} catch (Exception err) {
334+
Log.e(NAME, "fetchHelpCenterCollections error:");
335+
Log.e(NAME, err.toString());
336+
promise.reject(IntercomErrorCodes.DISPLAY_HELP_CENTER_COLLECTIONS, err.toString());
337+
}
338+
}
339+
292340
@ReactMethod
293341
public void displayCarousel(String carouselId, Promise promise) {
294342
try {

example/src/App.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,20 @@ export default function App() {
193193
Intercom.displayHelpCenterCollections(COLLECTIONS);
194194
}}
195195
/>
196+
<Button
197+
accessibilityLabel="fetch-help-center-collections"
198+
disabled={!loggedUser}
199+
title="Fetch Help Center Collections"
200+
onPress={() => {
201+
Intercom.fetchHelpCenterCollections()
202+
.then((items) => {
203+
console.log(items);
204+
})
205+
.catch((e) => {
206+
console.error(e);
207+
});
208+
}}
209+
/>
196210
<Button
197211
accessibilityLabel="display-carousel"
198212
disabled={!loggedUser}

src/index.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,14 @@ export type Company = {
7777
plan?: string;
7878
};
7979

80+
export type HelpCenterCollectionItem = {
81+
id: string;
82+
title: string;
83+
summary: string;
84+
};
85+
8086
export type IntercomType = {
87+
fetchHelpCenterCollections: () => Promise<HelpCenterCollectionItem>;
8188
displayArticle(articleId: string): Promise<boolean>;
8289
displayCarousel(carouselId: string): Promise<boolean>;
8390
displayHelpCenter(): Promise<boolean>;
@@ -105,6 +112,7 @@ export type IntercomType = {
105112
};
106113

107114
const Intercom = {
115+
fetchHelpCenterCollections: () => IntercomModule.fetchHelpCenterCollections(),
108116
displayArticle: (articleId: string) =>
109117
IntercomModule.displayArticle(articleId),
110118
displayCarousel: (carouselId: string) =>

0 commit comments

Comments
 (0)