Skip to content

Commit d99ae46

Browse files
authored
Merge pull request #33 from verloop/dismiss-chat
add dismiss chat
2 parents c9d9e8d + 46174b3 commit d99ae46

File tree

10 files changed

+51
-6
lines changed

10 files changed

+51
-6
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ For React Native versions below 0.70, please use our older package versions and
7878
'veloop_button_clicked',
7979
event => {
8080
console.log('Button clicked event:', event);
81+
// To dismiss the chat (if required) [dismissChat- hides the widget and removes it from the view]
82+
// VerloopSdk.dismissChat();
8183
},
8284
);
8385
const urlClickListener = eventEmitter.addListener(

android/src/main/java/com/verloopsdk/VerloopSdkModule.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.reactlibrary.VerloopSdkPackage
22

33
import android.app.Activity
4+
import android.content.Intent
45
import com.facebook.react.bridge.ReactApplicationContext
56
import com.facebook.react.bridge.ReactContextBaseJavaModule
67
import com.facebook.react.bridge.ReactMethod
@@ -13,6 +14,7 @@ import io.verloop.sdk.Verloop
1314
import io.verloop.sdk.VerloopConfig
1415
import io.verloop.sdk.LiveChatButtonClickListener
1516
import io.verloop.sdk.LiveChatUrlClickListener
17+
import io.verloop.sdk.ui.Constants
1618

1719
@ReactModule(name = VerloopModule.NAME)
1820
class VerloopModule(private val reactContext: ReactApplicationContext) :
@@ -191,4 +193,13 @@ class VerloopModule(private val reactContext: ReactApplicationContext) :
191193
fun removeListeners(type: Int?) {
192194
// Required for RN event emitter
193195
}
196+
197+
@ReactMethod
198+
fun dismissChat() {
199+
val activity: Activity? = currentActivity
200+
if (activity != null) {
201+
val intent = Intent(Constants.ACTION_CLOSE_VERLOOP_WIDGET)
202+
activity.sendBroadcast(intent)
203+
}
204+
}
194205
}

example/VerloopLivechat.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ const VerloopLiveChat: React.FC = () => {
3535
const buttonClickListener = eventEmitter.addListener(
3636
'veloop_button_clicked',
3737
event => {
38-
console.log('Button clicked event:', event);
38+
console.log('Button clicked event:', event, VerloopSdk);
39+
VerloopSdk.dismissChat();
3940
},
4041
);
4142
const urlClickListener = eventEmitter.addListener(

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"dependencies": {
1414
"react": "19.0.0",
1515
"react-native": "0.78.0",
16-
"react-native-verloop-sdk": "^1.1.0-rc.6"
16+
"react-native-verloop-sdk": "^1.1.1"
1717
},
1818
"devDependencies": {
1919
"@babel/core": "^7.25.2",

ios/VerloopSdk.mm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ @interface RCT_EXTERN_MODULE(RNVerloopSdk, NSObject)
2424
RCT_EXTERN_METHOD(login)
2525
RCT_EXTERN_METHOD(logingWithUserId:(NSString *)userId)
2626
RCT_EXTERN_METHOD(setUrlRedirectionFlag:(NSString *)canRedirect)
27+
RCT_EXTERN_METHOD(dismissChat)
2728
@end

ios/VerloopSdk.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ import VerloopSDKiOS
1010
@objc(RNVerloopSdk)
1111
public class RNVerloopSdk : RCTEventEmitter {
1212

13-
private var config:VLConfig?
14-
private var verloop:VerloopSDK?
13+
private var config: VLConfig?
14+
private var verloop: VerloopSDK?
15+
private var viewController: UIViewController?
1516

1617

1718
var hasObservers:Bool?
@@ -146,15 +147,28 @@ public class RNVerloopSdk : RCTEventEmitter {
146147
DispatchQueue.main.async {
147148
self.config?.setUrlRedirectionFlag(canRedirect :false)
148149
self.verloop = VerloopSDK(config: self.config!)
149-
// self.verloop?.observeLiveChatEventsOn(vlEventDelegate : self)
150150
let cntrl = self.verloop!.getNavController()
151+
self.viewController = cntrl
151152
self.topViewController()?.present(cntrl, animated: false)
152153
}
153154
}else{
154155
debugPrint("error -> config not initialised before showChat method is called")
155156
}
156157
}
157158

159+
@objc
160+
func dismissChat() {
161+
if self.viewController != nil {
162+
DispatchQueue.main.async {
163+
self.viewController?.dismiss(animated: true, completion: {
164+
self.viewController = nil // Clear the reference after dismissing
165+
})
166+
}
167+
} else {
168+
debugPrint("error -> viewController is nil, no chat to dismiss")
169+
}
170+
}
171+
158172
@objc
159173
func clearChat() {
160174
if self.config != nil {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-verloop-sdk",
3-
"version": "1.1.0-rc.6",
3+
"version": "1.1.1",
44
"description": "VerloopSDK is to display client side livechat widget on the mobile app.",
55
"main": "src/index.js",
66
"types": "src/index.d.ts",

src/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ declare module "react-native-verloop-sdk" {
2222
login?(): void; // IOS-specific method
2323
logingWithUserId?(userId: string): void; // IOS-specific method
2424
setUrlRedirectionFlag?(canRedirect: string): void; // IOS-specific method
25+
dismissChat(): void;
2526
}
2627

2728
const Verloop: VerloopInterface;

src/index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,5 +178,12 @@ const Verloop = {
178178
VerloopNative.setUrlRedirectionFlag(canRedirect);
179179
}
180180
},
181+
dismissChat: () => {
182+
if (!VerloopNative.dismissChat) {
183+
console.error("dismissChat not available on", react_native_1.Platform.OS);
184+
return;
185+
}
186+
VerloopNative.dismissChat();
187+
},
181188
};
182189
exports.default = Verloop;

src/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ interface VerloopInterface {
2525
login?(): void; // IOS-specific method
2626
logingWithUserId?(userId: string): void; // IOS-specific method
2727
setUrlRedirectionFlag?(canRedirect: string): void; // IOS-specific method
28+
dismissChat(): void;
2829
}
2930

3031
const VerloopModule = NativeModules.RNVerloopSdk
@@ -213,6 +214,13 @@ const Verloop: VerloopInterface = {
213214
VerloopNative.setUrlRedirectionFlag(canRedirect);
214215
}
215216
},
217+
dismissChat: (): void => {
218+
if (!VerloopNative.dismissChat) {
219+
console.error("dismissChat not available on", Platform.OS);
220+
return;
221+
}
222+
VerloopNative.dismissChat();
223+
},
216224
};
217225

218226
export default Verloop;

0 commit comments

Comments
 (0)