Skip to content

Commit c8b7dde

Browse files
committed
feat: add baseUrl prop and pass locale to chatwoot
1 parent b1b210b commit c8b7dde

4 files changed

Lines changed: 32 additions & 12 deletions

File tree

src/components/LiveChatLoaderProvider.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,23 @@ export const LiveChatLoaderProvider = ({
77
provider,
88
children,
99
idlePeriod = 5000,
10+
baseUrl,
1011
...props
1112
}: {
1213
provider: Provider
1314
children: JSX.Element
1415
idlePeriod?: number
1516
providerKey: string
1617
appID?: string
18+
baseUrl?: string
1719
}): JSX.Element | null => {
1820
const [state, setState] = useState<State>('initial')
1921
const value = {
2022
provider,
2123
idlePeriod,
2224
state,
2325
setState,
26+
baseUrl,
2427
...props
2528
}
2629

@@ -36,7 +39,11 @@ export const LiveChatLoaderProvider = ({
3639

3740
return (
3841
<LiveChatLoaderContext.Provider value={value}>
39-
<link href={chatProvider.domain} rel="preconnect" crossOrigin="" />
42+
<link
43+
href={baseUrl || chatProvider.domain}
44+
rel="preconnect"
45+
crossOrigin=""
46+
/>
4047
{children}
4148
</LiveChatLoaderContext.Provider>
4249
)

src/context.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ interface Context {
99
appID?: string
1010
locale?: string
1111
idlePeriod?: number
12+
baseUrl?: string
1213
}
1314

1415
export const LiveChatLoaderContext = createContext<Context>({} as Context)

src/hooks/useChat.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ const useChat = (
2727
state,
2828
setState,
2929
appID,
30-
locale
30+
locale,
31+
baseUrl
3132
} = useContext(LiveChatLoaderContext)
3233

3334
useEffect(() => {
@@ -90,7 +91,7 @@ const useChat = (
9091

9192
if (!scriptLoaded) {
9293
scriptLoaded = true
93-
chatProvider.load({ providerKey, setState, appID, locale })
94+
chatProvider.load({ providerKey, setState, appID, locale, baseUrl })
9495
}
9596

9697
if (open) {

src/providers/chatwoot.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,24 @@ declare global {
99
//eslint-disable-next-line @typescript-eslint/no-explicit-any
1010
$chatwoot: any
1111
chatwootSDK: {
12-
run: (options: { websiteToken: string; baseUrl: string }) => void
12+
run: (options: {
13+
websiteToken: string
14+
baseUrl: string
15+
locale?: string
16+
type?: 'standard' | 'expanded_bubble'
17+
position?: 'left' | 'right'
18+
}) => void
1319
}
1420
}
1521
}
1622

1723
/* eslint-disable */
18-
const loadScript = (onload: () => void) => {
24+
const loadScript = (onload: () => void, baseUrl: string): void => {
1925
if (window.$chatwoot) return
2026
;(function(d, t) {
2127
var script: HTMLScriptElement = d.createElement('script')
2228
var fisrtScript = d.getElementsByTagName('script')[0]
23-
script.src = domain + '/packs/js/sdk.js'
29+
script.src = baseUrl + '/packs/js/sdk.js'
2430
fisrtScript.parentNode?.insertBefore(script, fisrtScript)
2531
script.onload = onload
2632
})(document)
@@ -29,23 +35,28 @@ const loadScript = (onload: () => void) => {
2935

3036
const load = ({
3137
providerKey,
32-
setState
38+
locale = 'en',
39+
setState,
40+
baseUrl = domain
3341
}: {
3442
providerKey: string
43+
locale?: string
3544
setState: (state: State) => void
36-
}) => {
45+
baseUrl?: string
46+
}): void => {
3747
loadScript(function() {
3848
setTimeout(() => setState('complete'), 1000)
3949
window.chatwootSDK.run({
4050
websiteToken: providerKey,
41-
baseUrl: domain
51+
baseUrl,
52+
locale
4253
})
43-
})
54+
}, baseUrl)
4455
}
4556

46-
const open = () => window.$chatwoot && window.$chatwoot.toggle()
57+
const open = (): void => window.$chatwoot && window.$chatwoot.toggle()
4758

48-
const close = () => window.$chatwoot && window.$chatwoot.toggle()
59+
const close = (): void => window.$chatwoot && window.$chatwoot.toggle()
4960

5061
export default {
5162
domain,

0 commit comments

Comments
 (0)