diff --git a/www/apps/api-reference/.env.sample b/www/apps/api-reference/.env.sample index c8b8371632..91bf73b126 100644 --- a/www/apps/api-reference/.env.sample +++ b/www/apps/api-reference/.env.sample @@ -16,4 +16,5 @@ NEXT_PUBLIC_API_V1_URL= ALGOLIA_WRITE_API_KEY= ANALYZE_BUNDLE= NEXT_PUBLIC_INTEGRATION_ID= -NEXT_PUBLIC_GA_ID= \ No newline at end of file +NEXT_PUBLIC_GA_ID= +NEXT_PUBLIC_REO_DEV_CLIENT_ID= \ No newline at end of file diff --git a/www/apps/api-reference/providers/index.tsx b/www/apps/api-reference/providers/index.tsx index 1b9d7a4265..f7e979a458 100644 --- a/www/apps/api-reference/providers/index.tsx +++ b/www/apps/api-reference/providers/index.tsx @@ -16,7 +16,10 @@ type ProvidersProps = { const Providers = ({ children }: ProvidersProps) => { return ( - + diff --git a/www/apps/book/.env.sample b/www/apps/book/.env.sample index 59aaeddf1a..81c896a146 100644 --- a/www/apps/book/.env.sample +++ b/www/apps/book/.env.sample @@ -18,4 +18,5 @@ NEXT_PUBLIC_BASE_PATH= NEXT_PUBLIC_GA_ID= NEXT_PUBLIC_PROD_BASE_URL= NEXT_PUBLIC_INTEGRATION_ID= -NEXT_MCP_SERVER_URL= \ No newline at end of file +NEXT_MCP_SERVER_URL= +NEXT_PUBLIC_REO_DEV_CLIENT_ID= \ No newline at end of file diff --git a/www/apps/book/providers/index.tsx b/www/apps/book/providers/index.tsx index b4d2d5b843..d115ddea6b 100644 --- a/www/apps/book/providers/index.tsx +++ b/www/apps/book/providers/index.tsx @@ -23,7 +23,10 @@ type ProvidersProps = { const Providers = ({ children, aiAssistantProps = {} }: ProvidersProps) => { return ( - + diff --git a/www/apps/cloud/.env.example b/www/apps/cloud/.env.example index 3d7a1e6f28..d51fa7e024 100644 --- a/www/apps/cloud/.env.example +++ b/www/apps/cloud/.env.example @@ -15,4 +15,5 @@ ALGOLIA_WRITE_API_KEY= ANALYZE_BUNDLE= CLOUDINARY_CLOUD_NAME= NEXT_PUBLIC_GA_ID= -NEXT_PUBLIC_INTEGRATION_ID= \ No newline at end of file +NEXT_PUBLIC_INTEGRATION_ID= +NEXT_PUBLIC_REO_DEV_CLIENT_ID= \ No newline at end of file diff --git a/www/apps/cloud/providers/index.tsx b/www/apps/cloud/providers/index.tsx index 5304a839f8..e9c344b269 100644 --- a/www/apps/cloud/providers/index.tsx +++ b/www/apps/cloud/providers/index.tsx @@ -24,7 +24,10 @@ type ProvidersProps = { const Providers = ({ children }: ProvidersProps) => { return ( - + diff --git a/www/apps/resources/.env.sample b/www/apps/resources/.env.sample index 4ec03ee038..d00fcd8918 100644 --- a/www/apps/resources/.env.sample +++ b/www/apps/resources/.env.sample @@ -19,4 +19,5 @@ NEXT_PUBLIC_AI_WEBSITE_ID= NEXT_PUBLIC_AI_API_ASSISTANT_RECAPTCHA_SITE_KEY= CLOUDINARY_CLOUD_NAME= NEXT_PUBLIC_GA_ID= -NEXT_PUBLIC_INTEGRATION_ID= \ No newline at end of file +NEXT_PUBLIC_INTEGRATION_ID= +NEXT_PUBLIC_REO_DEV_CLIENT_ID= \ No newline at end of file diff --git a/www/apps/resources/providers/index.tsx b/www/apps/resources/providers/index.tsx index 48de827efa..a92d2ef7b0 100644 --- a/www/apps/resources/providers/index.tsx +++ b/www/apps/resources/providers/index.tsx @@ -21,7 +21,10 @@ type ProvidersProps = { const Providers = ({ children }: ProvidersProps) => { return ( - + { return ( - + diff --git a/www/apps/user-guide/.env.example b/www/apps/user-guide/.env.example index 712ae20c81..6ed3a003a5 100644 --- a/www/apps/user-guide/.env.example +++ b/www/apps/user-guide/.env.example @@ -15,4 +15,5 @@ ALGOLIA_WRITE_API_KEY= ANALYZE_BUNDLE= CLOUDINARY_CLOUD_NAME= NEXT_PUBLIC_GA_ID= -NEXT_PUBLIC_INTEGRATION_ID= \ No newline at end of file +NEXT_PUBLIC_INTEGRATION_ID= +NEXT_PUBLIC_REO_DEV_CLIENT_ID= \ No newline at end of file diff --git a/www/apps/user-guide/providers/index.tsx b/www/apps/user-guide/providers/index.tsx index 5304a839f8..e9c344b269 100644 --- a/www/apps/user-guide/providers/index.tsx +++ b/www/apps/user-guide/providers/index.tsx @@ -24,7 +24,10 @@ type ProvidersProps = { const Providers = ({ children }: ProvidersProps) => { return ( - + diff --git a/www/packages/docs-ui/package.json b/www/packages/docs-ui/package.json index 293b512e3d..3f4ebf364f 100644 --- a/www/packages/docs-ui/package.json +++ b/www/packages/docs-ui/package.json @@ -79,6 +79,7 @@ "react-tooltip": "^5.28.0", "react-transition-group": "^4.4.5", "react-uuid": "^2.0.0", + "reodotdev": "^1.0.0", "slugify": "^1.6.6" }, "overrides": { diff --git a/www/packages/docs-ui/src/providers/Analytics/index.tsx b/www/packages/docs-ui/src/providers/Analytics/index.tsx index 16e9203a1a..b7c0d564cc 100644 --- a/www/packages/docs-ui/src/providers/Analytics/index.tsx +++ b/www/packages/docs-ui/src/providers/Analytics/index.tsx @@ -8,6 +8,8 @@ import React, { useState, } from "react" import { Analytics, AnalyticsBrowser } from "@segment/analytics-next" +// @ts-expect-error Doesn't have a types package +import { loadReoScript } from "reodotdev" export type ExtraData = { section?: string @@ -32,14 +34,16 @@ export type TrackedEvent = { const AnalyticsContext = createContext(null) export type AnalyticsProviderProps = { - writeKey?: string + segmentWriteKey?: string + reoDevKey?: string children?: React.ReactNode } const LOCAL_STORAGE_KEY = "ajs_anonymous_id" export const AnalyticsProvider = ({ - writeKey = "temp", + segmentWriteKey = "temp", + reoDevKey, children, }: AnalyticsProviderProps) => { // loaded is used to ensure that a connection has been made to segment @@ -50,11 +54,11 @@ export const AnalyticsProvider = ({ const analyticsBrowser = new AnalyticsBrowser() const [queue, setQueue] = useState([]) - const init = useCallback(() => { + const initSegment = useCallback(() => { if (!loaded) { analyticsBrowser .load( - { writeKey }, + { writeKey: segmentWriteKey }, { initialPageview: true, user: { @@ -72,7 +76,7 @@ export const AnalyticsProvider = ({ ) .finally(() => setLoaded(true)) } - }, [loaded, writeKey]) + }, [loaded, segmentWriteKey]) const track = useCallback( async ( @@ -110,8 +114,8 @@ export const AnalyticsProvider = ({ ) useEffect(() => { - init() - }, [init]) + initSegment() + }, [initSegment]) useEffect(() => { if (analytics && queue.length) { @@ -123,6 +127,24 @@ export const AnalyticsProvider = ({ } }, [analytics, queue]) + useEffect(() => { + if (!reoDevKey) { + return + } + + loadReoScript({ + clientID: reoDevKey, + }) + .then((Reo: any) => { + Reo.init({ + clientID: reoDevKey, + }) + }) + .catch((e: any) => { + console.error(`Could not connect to Reodotdev. Error: ${e}`) + }) + }, [reoDevKey]) + return (