Skip to content

Commit bf3a0a8

Browse files
committed
feat(ios): conversation fields and tags api
- add setConversationFields - add clearConversationFields - add setConversationTags - add clearConversationTags refs #25
1 parent 425f584 commit bf3a0a8

File tree

4 files changed

+102
-0
lines changed

4 files changed

+102
-0
lines changed

ios/ZendeskMessaging.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ @interface RCT_EXTERN_MODULE(ZendeskMessaging, NSObject)
2424
resolver:(RCTPromiseResolveBlock)resolve
2525
rejecter:(RCTPromiseRejectBlock)reject)
2626

27+
RCT_EXTERN_METHOD(setConversationFields:(NSDictionary*)fields)
28+
RCT_EXTERN_METHOD(clearConversationFields)
29+
30+
RCT_EXTERN_METHOD(setConversationTags:(NSArray*)tags)
31+
RCT_EXTERN_METHOD(clearConversationTags)
32+
2733
RCT_EXTERN_METHOD(getUnreadMessageCount:(RCTPromiseResolveBlock)resolve
2834
rejecter:(RCTPromiseRejectBlock)reject)
2935

ios/ZendeskMessaging.swift

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,42 @@ class ZendeskMessaging: RCTEventEmitter {
170170
}
171171
}
172172

173+
@objc(setConversationFields:)
174+
func setConversationFields(fields: [String: AnyHashable]) -> Void {
175+
if !initialized {
176+
return
177+
}
178+
179+
ZendeskNativeModule.shared.setConversationFields(fields)
180+
}
181+
182+
@objc(clearConversationFields)
183+
func clearConversationFields() -> Void {
184+
if !initialized {
185+
return
186+
}
187+
188+
ZendeskNativeModule.shared.clearConversationFields()
189+
}
190+
191+
@objc(setConversationTags:)
192+
func setConversationTags(tags: [String]) -> Void {
193+
if !initialized {
194+
return
195+
}
196+
197+
ZendeskNativeModule.shared.setConversationTags(tags)
198+
}
199+
200+
@objc(clearConversationTags)
201+
func clearConversationTags() -> Void {
202+
if !initialized {
203+
return
204+
}
205+
206+
ZendeskNativeModule.shared.clearConversationTags()
207+
}
208+
173209
@objc(getUnreadMessageCount:rejecter:)
174210
func getUnreadMessageCount(
175211
resolver resolve: @escaping RCTPromiseResolveBlock,

ios/ZendeskNativeModule.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,26 @@ class ZendeskNativeModule: NSObject {
5757
Zendesk.instance?.sendPageViewEvent(pageView, completionHandler: completionHandler)
5858
}
5959

60+
func setConversationFields(
61+
_ fields: [String: AnyHashable]
62+
) {
63+
Zendesk.instance?.messaging?.setConversationFields(fields)
64+
}
65+
66+
func clearConversationFields() {
67+
Zendesk.instance?.messaging?.clearConversationFields()
68+
}
69+
70+
func setConversationTags(
71+
_ tags: [String]
72+
) {
73+
Zendesk.instance?.messaging?.setConversationTags(tags)
74+
}
75+
76+
func clearConversationTags() {
77+
Zendesk.instance?.messaging?.clearConversationTags()
78+
}
79+
6080
func getUnreadMessageCount() -> Int? {
6181
return Zendesk.instance?.messaging?.getUnreadMessageCount()
6282
}

src/index.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,46 @@ export function sendPageViewEvent(event: ZendeskPageViewEvent): Promise<void> {
6666
return ZendeskMessaging.sendPageViewEvent(event);
6767
}
6868

69+
/**
70+
* Required SDK version: `>= 2.13.0`
71+
*/
72+
export function setConversationFields(fields: Record<string, string | number | boolean>): void {
73+
if (Object.values(fields).some((value) =>
74+
!(
75+
typeof value === 'string' ||
76+
typeof value === 'number' ||
77+
typeof value === 'boolean')
78+
)
79+
) {
80+
throw new ZendeskMessagingError('invalid fields');
81+
}
82+
ZendeskMessaging.setConversationFields(fields);
83+
}
84+
85+
/**
86+
* Required SDK version: `>= 2.13.0`
87+
*/
88+
export function clearConversationFields(): void {
89+
ZendeskMessaging.clearConversationFields();
90+
}
91+
92+
/**
93+
* Required SDK version: `>= 2.13.0`
94+
*/
95+
export function setConversationTags(tags: string[]): void {
96+
if (tags.some((value) => typeof value !== 'string')) {
97+
throw new ZendeskMessagingError('invalid tags');
98+
}
99+
ZendeskMessaging.setConversationTags(tags);
100+
}
101+
102+
/**
103+
* Required SDK version: `>= 2.13.0`
104+
*/
105+
export function clearConversationTags(): void {
106+
ZendeskMessaging.clearConversationTags();
107+
}
108+
69109
export function updatePushNotificationToken(token: string): void {
70110
if (Platform.OS !== 'android') return;
71111
return ZendeskMessaging.updatePushNotificationToken(token);

0 commit comments

Comments
 (0)