@attio/react-native-bottom-sheet-toolbox-dev-tools
Version:
43 lines (32 loc) • 1.21 kB
text/typescript
import {useDevToolsPluginClient} from "expo/devtools"
import React from "react"
import {BOTTOM_SHEET_DEV_TOOLS} from "@attio/react-native-bottom-sheet-toolbox"
export function useConnectClientToAdapter() {
const client = useDevToolsPluginClient("react-native-bottom-sheet-toolbox")
const isConnected = client?.isConnected() ?? false
React.useEffect(() => {
if (!client || !isConnected) return
const removeAdapter = BOTTOM_SHEET_DEV_TOOLS.addAdapter({
sendMessage(method, parameters) {
if (!client.isConnected()) {
removeAdapter()
return
}
client.sendMessage(method, parameters)
},
addMessageListener(method, listener) {
if (!client.isConnected()) {
removeAdapter()
return () => {}
}
const subscription = client.addMessageListener(method, listener)
return () => {
subscription.remove()
}
},
})
return () => {
removeAdapter()
}
}, [client, isConnected])
}