Skip to content

Commit

Permalink
fix(frontend): fix widget display conditions (#533)
Browse files Browse the repository at this point in the history
  • Loading branch information
634750802 authored Dec 23, 2024
1 parent 882f975 commit 6a50657
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 13 deletions.
21 changes: 10 additions & 11 deletions frontend/packages/widget-react/src/Widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ export interface WidgetInstance {
initialized: true;
}

export const Widget = forwardRef<WidgetInstance, WidgetProps>(({ container, trigger, experimentalFeatures, disableAutoThemeDetect = false, bootstrapStatus, exampleQuestions, icon, buttonIcon, buttonLabel, chatEngine, src, apiBase }, ref) => {
export const Widget = forwardRef<WidgetInstance, WidgetProps>(({ container, trigger, experimentalFeatures, disableAutoThemeDetect = false, bootstrapStatus, exampleQuestions, icon, buttonIcon, buttonLabel, chatEngine, src }, ref) => {
const [open, setOpen] = useState(false);
const [dark, setDark] = useState(() => matchMedia('(prefers-color-scheme: dark)').matches);
const openRef = useRef(open);
const darkRef = useRef(dark);
const [scrollTarget, setScrollTarget] = useState<HTMLDivElement | null>(null);
const gtagFn = useGtagFn();
const shouldDisplayTrigger = useShouldDisplayTrigger(src, apiBase);
const shouldDisplayTrigger = useShouldDisplayTrigger(src);

useEffect(() => {
openRef.current = open;
Expand Down Expand Up @@ -231,7 +231,7 @@ window.addEventListener('popstate', (e) => {
window.dispatchEvent(new CustomEvent('tidbaihistorychange', { detail: { type: 'popstate', params: [e.state] } }));
});

function useShouldDisplayTrigger (src: string, apiBase?: string) {
function useShouldDisplayTrigger (src: string) {
const pathname = useSyncExternalStore(fire => {
const callback = () => {
setTimeout(() => {
Expand All @@ -246,17 +246,16 @@ function useShouldDisplayTrigger (src: string, apiBase?: string) {
}, () => window.location.pathname);

return useMemo(() => {
// if src is relative, assume is on main site.
if (src.startsWith('/')) {
return pathname === '/';
}
const srcUrl = new URL(src);

if (!apiBase) {
// if page's origin is same with script src, assume is on main site.
if (location.origin === srcUrl.origin) {
return pathname === '/';
} else {
const apiBaseUri = new URL(apiBase);
if (apiBaseUri.origin === srcUrl.origin) {
return pathname;
}
}
return true;
}, [pathname, src, apiBase]);

}, [pathname, src]);
}
2 changes: 0 additions & 2 deletions frontend/packages/widget-react/src/library.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ const controlled = script.dataset.controlled === 'true';
const trigger = controlled ? true : document.getElementById('tidb-ai-trigger');
const chatEngine = script.dataset.chatEngine;
const scriptDataMeasurementId = script.dataset.measurementId;
const apiBase = script.dataset.apiBase;

loadConfig().then(async ({ settings, bootstrapStatus, experimentalFeatures }) => {
const measurementId = scriptDataMeasurementId ?? settings.ga_id;
Expand All @@ -39,7 +38,6 @@ loadConfig().then(async ({ settings, bootstrapStatus, experimentalFeatures }) =>
<Widget
ref={refFn}
src={src}
apiBase={apiBase}
container={div}
trigger={trigger}
exampleQuestions={settings.custom_js_example_questions}
Expand Down

0 comments on commit 6a50657

Please sign in to comment.