docs: documentation changes for release (#4300)
* docs: added manage reservations user guide (#4290) * docs: added manage reservations user guide * removed feature flag details * docs: added how-to for custom reservations (#4292) * docs: added how-to for custom reservations * eslint fixes * docs: added product module documentation (#4287) * docs: added product module documentation * added details about optional environment variables * small fixes * Remove reference link * added example usages * added link to sample project * address PR feedback * docs: moved product module guide + added product module tabs (#4307) * added product module tab * adjust design of badge * docs: added onboarding features (#4168) * added marketplace page * added subscription roadmap * added rating for onboarding * added learning path components * small fixes * fix build error * fix eslint errors * change roadmaps to recipes * small change in text * optimize learning path and notifications * fix tracking usage * fix eslint errors * added enter/exit animation * allow starting a path using a query parameter * fix gap between notifications * address vercel comments * fixed links issue * changed create-medusa-app docs steps * move troubleshooting section * improved tracking across docs * fix build errors * remove console * added a note about `boilerplate` option * added troubleshooting section for eagain * added invite option in cli reference * added track event for finished onboarding * update boilerplate option name * redesigned learning path component * docs: added how to create widget docs (#4318) * docs: added how to create widget docs * remove development guide * added types * docs: added details about createCustomAdminHooks (#4288) * docs: added details about createCustomAdminHooks * small improvement * added missing import * small changes * docs: added onboarding guide (#4320) * docs: added how to create widget docs * remove development guide * docs: added onboarding guide * added types * added recipes link * small adjustments * fixed eslint errors * styling fixes * change to singular product module * updated the what's new section * shorten down medusa react card * updated tailwind configurations * fix build error * fix newspaper icon * style fixes * change modal shadow * fix color of line numbers * fix code fade color * docs: updated admin documentations * eslint fixes * text changes * added a note about beta version * remove empty object argument * remove demo repo url * fix selection color for code headers * general fixes * fix eslint error * changed code theme * added preparation step * changes regarding beta version * Update docs/content/modules/products/serverless-module.md Co-authored-by: Riqwan Thamir <rmthamir@gmail.com> * Update docs/content/modules/products/serverless-module.md Co-authored-by: Riqwan Thamir <rmthamir@gmail.com> --------- Co-authored-by: Riqwan Thamir <rmthamir@gmail.com> Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
90
www/docs/src/providers/User/index.tsx
Normal file
90
www/docs/src/providers/User/index.tsx
Normal file
@@ -0,0 +1,90 @@
|
||||
import useIsBrowser from "@docusaurus/useIsBrowser"
|
||||
import React, { createContext, useContext, useEffect, useState } from "react"
|
||||
import uuid from "react-uuid"
|
||||
|
||||
type UserContextType = {
|
||||
id: string
|
||||
track: (
|
||||
event: string,
|
||||
options?: Record<string, any>,
|
||||
callback?: () => void
|
||||
) => void
|
||||
}
|
||||
|
||||
const UserContext = createContext<UserContextType | null>(null)
|
||||
|
||||
type UserProviderProps = {
|
||||
children?: React.ReactNode
|
||||
}
|
||||
|
||||
const UserProvider: React.FC<UserProviderProps> = ({ children }) => {
|
||||
const [id, setId] = useState<string>("")
|
||||
const isBrowser = useIsBrowser()
|
||||
|
||||
const initId = () => {
|
||||
if (!id.length) {
|
||||
if (isBrowser) {
|
||||
const storedId = localStorage.getItem("ajs_anonymous_id")
|
||||
if (storedId) {
|
||||
setId(storedId)
|
||||
} else {
|
||||
const generatedId = uuid()
|
||||
localStorage.setItem("ajs_anonymous_id", generatedId)
|
||||
setId(generatedId)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const track = (
|
||||
event: string,
|
||||
options?: Record<string, any>,
|
||||
callback?: () => void
|
||||
) => {
|
||||
if (isBrowser) {
|
||||
if (window.analytics) {
|
||||
window.analytics.track(
|
||||
event,
|
||||
{
|
||||
...options,
|
||||
uuid: id,
|
||||
anonymousId: id,
|
||||
},
|
||||
callback
|
||||
)
|
||||
} else if (callback) {
|
||||
console.warn(
|
||||
"Segment is either not installed or not configured. Simulating success..."
|
||||
)
|
||||
callback()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
initId()
|
||||
}, [isBrowser])
|
||||
|
||||
return (
|
||||
<UserContext.Provider
|
||||
value={{
|
||||
id,
|
||||
track,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</UserContext.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
export default UserProvider
|
||||
|
||||
export const useUser = () => {
|
||||
const context = useContext(UserContext)
|
||||
|
||||
if (!context) {
|
||||
throw new Error("useUser must be used within a UserProvider")
|
||||
}
|
||||
|
||||
return context
|
||||
}
|
||||
Reference in New Issue
Block a user