{"version":3,"file":"static/js/app-d6b56d54_0d86ce40bf52efa5b37e.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/SettingsReviewsPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/TeamsAuthPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/RegistrationPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/SettingsAccountPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/SettingsCommunicationPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/SettingsIntegrationsPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/SettingsProfilePage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/SettingsPage/SettingsAvailabilityPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/RegisterAccountPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/RelationshipsPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/VideoPage/index.tsx"],"sourcesContent":["import { useProfiles } from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport {\n buildSanityImageUrl,\n useBaseLanguage,\n useSettings,\n} from '@guider-global/sanity-hooks';\nimport { Stack, theme, TextStack, SkeletonStack } from '@guider-global/ui';\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport { Tab, ThemeProvider, useTheme } from '@mui/material';\nimport { ReviewsContainer } from 'containers/Settings/ReviewsContainer';\nimport { useLocalization, useReviews } from 'hooks';\nimport { useState } from 'react';\nimport { deepMerge } from 'utils';\n\nexport function SettingsReviewsPage() {\n // State\n\n const [value, setValue] = useState('1');\n // Hooks\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const organizationTheme = useTheme();\n const palette = deepMerge(theme.appTheme.palette, organizationTheme.palette);\n\n // Settings\n const { settings, isLoadingSettings } = useSettings({\n localeCode,\n });\n\n const emptyStateAvatar = buildSanityImageUrl({\n source: settings?.static_media?.relationships?.no_relationships ?? '',\n width: 180,\n });\n\n // Base Language\n\n const { baseLanguage, isLoadingBaseLanguage } = useBaseLanguage({\n localeCode,\n });\n const reviewsText = baseLanguage?.settings?.reviews;\n\n // Profile\n\n const { profiles, isLoadingProfiles } = useProfiles({});\n const profile = profiles?.at(0);\n\n // Reviews\n const { reviews, isLoadingReviews } = useReviews({});\n\n const reviewsReceived = reviews?.filter(\n (review) => review.reviewedProfile.id === profile?.id,\n );\n const reviewsAuthored = reviews?.filter(\n (review) => review.authorProfile.id === profile?.id,\n );\n\n // Loading\n\n const isLoading = isLoadingReviews || isLoadingProfiles || isLoadingSettings;\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n };\n\n if (isLoadingBaseLanguage) return <>;\n\n return (\n \n \n \n {isLoading && (\n \n )}\n {!isLoading && (\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n );\n}\n","import { Box } from '@mui/material';\nimport { PageWrapper } from 'components';\nimport { app as teamsApp, authentication } from '@microsoft/teams-js';\nimport { Loading } from '@guider-global/ui';\n\nexport const TeamsAuthPage = () => {\n const isTeamsInitialized = teamsApp.isInitialized();\n const urlParams = new URLSearchParams(window.location.search);\n const code = urlParams.get('code');\n\n if (code) {\n isTeamsInitialized && authentication.notifySuccess(code);\n } else {\n isTeamsInitialized &&\n authentication.notifyFailure(\n 'Authorization code not found in redirect URI.',\n );\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { getSubDomain, getIsTeams } from '@guider-global/front-end-utils';\nimport {\n buildSanityImageUrl,\n useOrganization,\n} from '@guider-global/sanity-hooks';\nimport { Avatar, Header, theme } from '@guider-global/ui';\nimport { Typography } from '@mui/material';\nimport { Box, ThemeProvider, useTheme } from '@mui/system';\nimport { LanguageMenu, PageWrapper } from 'components';\nimport { RegistrationContainer } from 'containers';\nimport { useLocalization } from 'hooks';\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useAppDispatch } from 'store/hooks';\nimport { hideNavbar, showNavbar } from 'store/slices/appSlice';\nimport { deepMerge } from 'utils';\n\nexport function RegistrationPage() {\n const organizationSlug = getSubDomain();\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n useEffect(() => {\n dispatch(hideNavbar(true));\n return () => {\n dispatch(showNavbar(true));\n };\n }, [dispatch]);\n\n const { organization } = useOrganization({\n organizationSlug,\n });\n\n const { localeCode, handleLanguageChange } =\n useLocalization(organizationSlug);\n\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n const isTeams = getIsTeams();\n\n if (isTeams) {\n return (\n \n \n \n \n Don’t have a mentoring program set up at your company yet?\n
\n Don’t worry, we can help, just email{' '}\n \n hello@guider-ai.com\n
{' '}\n with “get mentoring”.\n \n \n
\n );\n }\n\n return (\n \n \n }\n onBackButtonClick={() => navigate(-1)}\n endAdornment={\n \n }\n />\n \n \n \n \n );\n}\n","// external\nimport { Alert, Box, CircularProgress, Divider, Grow } from '@mui/material';\nimport { FC, useCallback, useEffect, useState } from 'react';\nimport { useIntercom } from 'react-use-intercom';\n\n// Internal Hooks\nimport { useLocalization, useMobileMediaQuery } from 'hooks';\nimport { useBaseLanguage, useOrganization } from '@guider-global/sanity-hooks';\nimport { useAxios } from '@guider-global/redux-axios-hooks';\n\n// Utils\nimport { getSubDomain } from '@guider-global/front-end-utils';\n\n// Local components\nimport { SettingsDescription, SettingsSubheader } from 'components';\nimport { BaseOutlinedTextField, BaseLoadingButton } from '@guider-global/ui';\nimport { AccountPreferencesForm } from 'forms';\nimport { useUsers } from '@guider-global/front-end-hooks';\n\nconst { REACT_APP_AUTH0_CLIENT_ID, REACT_APP_AUTH0_DOMAIN } = process.env;\n\nexport const SettingsAccountPage: FC = () => {\n // Styles\n const isMobile = useMobileMediaQuery();\n // Utils\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n // Internal Hooks\n\n // - Intercom\n const { showNewMessage: showNewMessageIntercom } = useIntercom();\n\n // - Axios\n const { requestCallback } = useAxios({});\n // - User\n const { users, isLoadingUsers } = useUsers({});\n\n const user = users?.at(0);\n\n const usersEmail = user?.email;\n const auth0UserId = user?.auth0UserId;\n const isSSO = Boolean(auth0UserId) && !auth0UserId?.includes('auth0');\n\n // - Base language\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const account = baseLanguage?.settings?.account ?? {};\n const {\n change_email: changeEmail,\n change_password: changePassword,\n preferences,\n } = account;\n const {\n change_email_button_label: changeEmailButtonLabel,\n section_title: changeEmailSectionTitle,\n sso_user_alert_message: ssoUserAlertMessageEmail,\n change_email_input_label: changeEmailInputLabel,\n change_email_description: changeEmailDescription,\n } = changeEmail ?? {};\n const {\n change_password_button_label: changePasswordButtonLabel,\n section_title: changePasswordSectionTitle,\n server_error_alert_text: serverErrorAlertTextPassword,\n sso_user_alert_message: ssoUserAlertMessagePassword,\n success_alert_text: successAlertTextPassword,\n change_password_description: changePasswordDescription,\n } = changePassword ?? {};\n const { section_title: preferencesSectionTitle } = preferences ?? {};\n\n // - Sanity organization\n const { organization } = useOrganization({\n organizationSlug,\n localeCode,\n });\n const organizationId = organization?.basic_info?.auth0_organization_id;\n\n // Local state\n const [loadingButton, setLoadingButton] = useState(false);\n const [alertEmail, setAlertEmail] =\n useState>();\n const [alertPassword, setAlertPassword] =\n useState>();\n\n // Effects\n useEffect(() => {\n if (!isSSO) return;\n setAlertEmail({\n severity: 'warning',\n message: ssoUserAlertMessageEmail,\n show: true,\n });\n setAlertPassword({\n severity: 'warning',\n message: ssoUserAlertMessagePassword,\n show: true,\n });\n }, [isSSO, ssoUserAlertMessageEmail, ssoUserAlertMessagePassword]);\n\n // Events\n const handlePasswordReset = useCallback(async () => {\n setLoadingButton(true);\n try {\n if (!REACT_APP_AUTH0_DOMAIN || !REACT_APP_AUTH0_CLIENT_ID) {\n throw new Error('Missing Env value');\n }\n const request = await requestCallback({\n method: 'POST',\n url: `https://${REACT_APP_AUTH0_DOMAIN}/dbconnections/change_password`,\n headers: { 'content-type': 'application/json' },\n data: {\n // eslint-disable-next-line camelcase\n client_id: REACT_APP_AUTH0_CLIENT_ID,\n email: usersEmail,\n connection: 'Username-Password-Authentication',\n organization: organizationId,\n },\n });\n if (request.status === 200) {\n setAlertPassword({\n severity: 'info',\n message: successAlertTextPassword,\n show: true,\n });\n }\n if (request.status >= 400) {\n console.log(request);\n setAlertPassword({\n severity: 'error',\n message: serverErrorAlertTextPassword,\n show: true,\n });\n }\n } catch (err: unknown) {\n console.log(err);\n setAlertPassword({\n severity: 'error',\n message: serverErrorAlertTextPassword,\n show: true,\n });\n } finally {\n setLoadingButton(false);\n }\n }, [\n organizationId,\n requestCallback,\n serverErrorAlertTextPassword,\n successAlertTextPassword,\n usersEmail,\n ]);\n\n const handleEmailChangeRequest = useCallback(() => {\n showNewMessageIntercom('I would like to change my account email address.');\n }, [showNewMessageIntercom]);\n\n if (isLoadingUsers) {\n return (\n \n ;\n \n );\n }\n\n return (\n \n {/* Preferences */}\n \n\n \n\n \n\n {/* Email */}\n \n \n\n \n \n \n\n \n\n \n {changeEmailButtonLabel}\n \n\n \n\n {/* Password */}\n \n\n \n\n \n\n \n {changePasswordButtonLabel}\n \n \n );\n};\n\nexport default SettingsAccountPage;\n\ninterface SettingsAccountAlertProps {\n severity?: 'error' | 'info' | 'success' | 'warning';\n message?: string;\n show?: boolean;\n}\n\nconst SettingsAccountAlert: FC = ({\n severity = 'warning',\n message,\n show,\n}) => {\n return (\n \n \n {message}\n \n \n );\n};\n","// external\nimport { Typography } from '@mui/material';\n\nexport const SettingsCommunicationPage = () => (\n <>\n \n This a placeholder for the Communication Settings page.\n \n \n);\n\nexport default SettingsCommunicationPage;\n","// external\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks/lib/hooks';\nimport { Box, Typography } from '@mui/material';\n//components\nimport { IntegrationsList } from 'components';\nimport { useLocalization } from 'hooks';\n\nexport const SettingsIntegrationsPage = () => {\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n return (\n <>\n \n \n {baseLanguage?.settings?.integrations?.section_description}\n \n \n \n \n );\n};\n","import React, { useEffect } from 'react';\n// external\nimport { Box } from '@mui/material';\nimport { BsCalendar } from 'react-icons/bs';\nimport { MdCode, MdPerson, MdReviews, MdShield } from 'react-icons/md';\nimport { Outlet, useLocation, useNavigate } from 'react-router-dom';\n\n// store\n\n// components\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useOrganization, useBaseLanguage } from '@guider-global/sanity-hooks';\nimport {\n PageHeader,\n PageSidebar,\n PageWrapper,\n SettingsContainer,\n} from 'components';\nimport { useLocalization } from 'hooks';\n\nexport const SettingsPage: React.FC = () => {\n // Router\n const location = useLocation();\n const navigate = useNavigate();\n\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { organization } = useOrganization({ organizationSlug, localeCode });\n // Base language\n const { baseLanguage } = useBaseLanguage({\n localeCode,\n });\n\n const settings = baseLanguage?.settings;\n const navigation = baseLanguage?.navigation;\n const userActionMenu = navigation?.user_action_menu;\n const {\n communication,\n profile,\n integrations: integrationsBaseLanguage,\n title,\n description,\n } = settings ?? {};\n\n // Organization\n const whiteLabel = organization?.white_label;\n const enabledIntegrations = whiteLabel?.integrations;\n const { video_conferencing: videoConferencing, calendar } =\n enabledIntegrations ?? {};\n const isIntegrationEnabled =\n videoConferencing?.active_directory_teams ||\n calendar?.active_directory_outlook_calendar;\n\n useEffect(() => {\n const isPathIntegration = location.pathname.includes('/integrations');\n if (!isIntegrationEnabled && isPathIntegration) {\n navigate('/settings/profile');\n }\n }, [isIntegrationEnabled, location.pathname, navigate]);\n\n const integrationSidebardItem = isIntegrationEnabled\n ? [\n {\n primaryText: userActionMenu?.integrations_label,\n icon: MdCode,\n path: '/settings/integrations',\n selected: location.pathname.includes('/integrations'),\n dataCyLabel: 'pages_settingsPage_integrations',\n },\n ]\n : [];\n\n const pageSidebarItems = [\n {\n primaryText: userActionMenu?.profile_link_label,\n icon: MdPerson,\n path: '/settings/profile',\n selected: location.pathname.includes('/profile'),\n dataCyLabel: 'pages_settingsPage_profile',\n },\n {\n primaryText: userActionMenu?.account_link_label,\n icon: MdShield,\n path: '/settings/account',\n selected: location.pathname.includes('/account'),\n dataCyLabel: 'pages_settingsPage_account',\n },\n ...integrationSidebardItem,\n {\n primaryText: userActionMenu?.availability_link_label,\n icon: BsCalendar,\n path: '/settings/availability',\n selected: location.pathname.includes('/availability'),\n dataCyLabel: 'pages_settingsPage_availability',\n },\n {\n primaryText: userActionMenu?.reviews_link_label,\n icon: MdReviews,\n path: '/settings/reviews',\n selected: location.pathname.includes('/reviews'),\n dataCyLabel: 'pages_settingsPage_reviews',\n },\n ];\n\n const selectHeader = (location: string): string | undefined => {\n const locationIncludesPathname = (pathname: string) =>\n location.includes(pathname);\n\n if (locationIncludesPathname('/profile'))\n return profile?.profile_details?.section_title;\n if (locationIncludesPathname('/account')) return '';\n if (locationIncludesPathname('/communication'))\n return communication?.section_title;\n if (locationIncludesPathname('/integrations'))\n return integrationsBaseLanguage?.section_title;\n return '';\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useProfiles } from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { theme } from '@guider-global/ui';\nimport { ThemeProvider, useTheme } from '@mui/material';\nimport { ProfilePictureForm } from 'forms';\nimport { EditProfileForm } from 'forms/EditProfileForm';\nimport { useLocalization } from 'hooks';\nimport { deepMerge } from 'utils';\n\nexport function SettingsProfilePage() {\n // Theme\n const organizationTheme = useTheme();\n const palette = deepMerge(theme.appTheme.palette, organizationTheme.palette);\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n // Profiles\n const { profiles } = useProfiles({});\n\n const profile = profiles?.at(0);\n\n return (\n \n \n \n \n );\n}\n","import { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { Box } from '@mui/material';\nimport { SettingsDescription, SettingsSubheader } from 'components';\nimport { AvailabilityForm } from 'forms';\nimport { useLocalization } from 'hooks';\n\nexport function SettingsAvailabilityPage() {\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const availability = baseLanguage?.settings?.availability;\n const {\n section_title: sectionTitle,\n section_description: sectionDescription,\n } = availability ?? {};\n\n return (\n .MuiTypography-h6': {\n mb: 0.5,\n },\n }}\n >\n \n \n\n \n \n );\n}\n","// external\nimport { ChangeEvent, FC, useCallback, useEffect, useState } from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { Box, Button, Divider } from '@mui/material';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\n\n// hooks\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\nimport { useRegisterInvite } from 'hooks/useRegisterInvite';\nimport {\n SessionStorageKeys,\n useLocalization,\n useMixpanelEvents,\n useSessionStorageTyped,\n} from 'hooks';\nimport { useBaseLanguage, useOrganization } from '@guider-global/sanity-hooks';\n\n// Store\nimport {\n selectRegistrationType,\n showAppAlert,\n showAppError,\n toggleModal,\n} from 'store/slices/appSlice';\n\n// Internal\nimport {\n RegisterLocalAccount,\n RegisterSSO,\n RenderDividerMessage,\n TypographyAction,\n} from 'components';\n\nimport { validateEmail } from 'utils/validateEmail';\nimport { BaseHeader, OrganizationContentContainer } from '@guider-global/ui';\n\n// Types\nimport { URLQueryParams } from '@guider-global/shared-types';\n\n// Utils\nimport { getOrigin, getSubDomain } from '@guider-global/front-end-utils';\n\nconst { REACT_APP_BASE_API_URL, REACT_APP_AUTH0_CLIENT_ID } = process.env;\nconst DATA_CY_PAGE = 'register_account';\n\nexport const RegisterAccountPage: FC = () => {\n // Auth0\n const { loginWithRedirect } = useAuth0();\n // Redux\n const registrationPageType = useAppSelector(selectRegistrationType);\n const dispatch = useAppDispatch();\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n // Router\n const navigate = useNavigate();\n const [urlSearchParams] = useSearchParams();\n\n // Util\n const origin = getOrigin();\n\n // Hooks\n const { trackScreenTime } = useMixpanelEvents();\n // Session storage\n const [, setRedirect] = useSessionStorageTyped(\n SessionStorageKeys.REGISTER_REDIRECT,\n );\n // - Sanity base language\n const {\n isLoadingBaseLanguage,\n baseLanguage,\n isErrorBaseLanguage,\n errorBaseLanguage,\n } = useBaseLanguage({ localeCode });\n\n const baseLanguageLegalNotices = baseLanguage?.legal_notices;\n const privacyPolicyLabel =\n baseLanguageLegalNotices?.privacy_policy?.privacy_policy_label;\n const termsOfServiceLabel =\n baseLanguageLegalNotices?.terms_of_service?.terms_of_service_label;\n const baseLanguageRegistration = baseLanguage?.registration;\n const baseLanguageCommon = baseLanguageRegistration?.common;\n const registrationPageTitle = baseLanguageRegistration?.common?.title;\n\n const baseLanguageMultitenantSSO = baseLanguageRegistration?.multitenant_SSO;\n const baseLanguageRegistrationLocalAccounts =\n baseLanguageRegistration?.local_accounts;\n const baseLanguageRegistrationSSOAndLocalAccounts =\n baseLanguageRegistration?.sso_and_local_accounts;\n\n // - Sanity Organization\n const { organization } = useOrganization({\n organizationSlug,\n });\n\n const organizationAccess = organization?.access;\n const organizationEmailVerification = organizationAccess?.email_verification;\n const organizationConfigurations =\n organizationAccess?.configuration_array ?? [];\n const basicInfo = organization?.basic_info;\n const organizationId = basicInfo?.auth0_organization_id;\n const organizationName = basicInfo?.name;\n const landingPage = organization?.landing_page;\n const isLandingPageEnabled = landingPage?.enable_landing_page;\n\n const {\n error: inviteError,\n inviteUrl,\n loading: inviteLoading,\n handleGetInvite,\n } = useRegisterInvite();\n\n // Local State\n const [eventLoading, setEventLoading] = useState(true);\n\n const [formErrors, setFormErrors] = useState(false);\n const [email, setEmail] = useState();\n const [disableButton, setDisableButton] = useState(true);\n\n const loading = eventLoading || inviteLoading || isLoadingBaseLanguage;\n\n // Effects\n useEffect(() => {\n const redirectAddress = urlSearchParams.get(URLQueryParams.REDIRECT);\n if (!redirectAddress) return;\n setRedirect(redirectAddress);\n }, [setRedirect, urlSearchParams]);\n\n useEffect(() => {\n if (!email) return;\n const isEmail = validateEmail(email);\n if (!isEmail || !email) {\n setFormErrors(true);\n return;\n }\n setFormErrors(false);\n setDisableButton(false);\n }, [email]);\n useEffect(() => {\n if (REACT_APP_BASE_API_URL && REACT_APP_AUTH0_CLIENT_ID) {\n setEventLoading(false);\n return;\n }\n dispatch(\n showAppError({\n code: '418',\n message: 'Missing Env values',\n visible: true,\n overlay: true,\n }),\n );\n }, [dispatch]);\n\n useEffect(() => {\n if (!inviteUrl) {\n return;\n }\n const invite = new URL(inviteUrl);\n const invitation = invite.searchParams.get('invitation');\n const organizationId = invite.searchParams.get('organization');\n const organizationName = invite.searchParams.get('organization_name');\n if (!invitation || !organizationId || !organizationName) {\n return;\n }\n loginWithRedirect({\n authorizationParams: {\n organization: organizationId,\n invitation,\n redirect_uri: `${origin}/login`,\n },\n });\n }, [inviteUrl, loginWithRedirect, origin]);\n\n useEffect(() => {\n if (inviteError) {\n dispatch(\n showAppAlert({\n severity: 'error',\n message: inviteError,\n }),\n );\n }\n }, [dispatch, inviteError]);\n\n useEffect(() => {\n if (!isErrorBaseLanguage) return;\n const errors = errorBaseLanguage;\n console.warn(errors);\n dispatch(\n showAppError({\n code: '418',\n message: 'Error occurred getting base languages',\n visible: true,\n overlay: true,\n }),\n );\n }, [dispatch, errorBaseLanguage, isErrorBaseLanguage]);\n\n useEffect(() => {\n if (loading) return;\n if (registrationPageType === 'none') {\n navigate('/error?error=404');\n }\n }, [loading, navigate, registrationPageType]);\n\n // Events\n const trackAuthSelect = useCallback(() => {\n trackScreenTime('Registration - Auth / Select Email or SSO');\n }, [trackScreenTime]);\n\n const handleEmailRegister = useCallback(() => {\n const isEmail = validateEmail(email);\n if (!isEmail || !email) {\n setFormErrors(true);\n return;\n }\n\n trackAuthSelect();\n setFormErrors(false);\n\n handleGetInvite({\n organizationId: organizationId ?? '',\n organizationName: organizationName ?? '',\n email,\n });\n }, [\n email,\n trackAuthSelect,\n handleGetInvite,\n organizationId,\n organizationName,\n ]);\n\n const handleSSORegister = useCallback(\n async (connection: string, organizationId: string) => {\n trackAuthSelect();\n setEventLoading(true);\n await loginWithRedirect({\n authorizationParams: {\n connection,\n organization: organizationId,\n },\n async openUrl(url) {\n window.location.href = url;\n },\n });\n setEventLoading(false);\n },\n [trackAuthSelect, loginWithRedirect],\n );\n\n const handleEmailChange = useCallback(\n (event: ChangeEvent) => {\n setEmail(event.target.value);\n },\n [],\n );\n\n const handlePrivacyModal = useCallback(() => {\n dispatch(toggleModal('privacyPolicy'));\n }, [dispatch]);\n\n const handleTermsOfServiceModal = useCallback(() => {\n dispatch(toggleModal('termsOfService'));\n }, [dispatch]);\n\n const handleLogin = useCallback(() => {\n loginWithRedirect({\n authorizationParams: {\n organization: organizationId,\n redirect_uri: `${origin}/login`,\n },\n });\n }, [loginWithRedirect, organizationId, origin]);\n\n const handleBack = useCallback(() => {\n trackScreenTime(\n 'Registration - Auth / Select Email or SSO - Go Back Button',\n );\n window.history.back();\n }, [trackScreenTime]);\n\n // Derivations\n\n const getSubheader = useCallback(() => {\n switch (registrationPageType) {\n case 'localAccountsAndSSO':\n return baseLanguageRegistrationSSOAndLocalAccounts?.description;\n case 'localAccounts':\n return baseLanguageRegistrationLocalAccounts?.description;\n case 'multitenantsSSO':\n return baseLanguageMultitenantSSO?.description;\n default:\n return '';\n }\n }, [\n baseLanguageMultitenantSSO?.description,\n baseLanguageRegistrationLocalAccounts?.description,\n baseLanguageRegistrationSSOAndLocalAccounts?.description,\n registrationPageType,\n ]);\n const subheader = getSubheader();\n\n if (registrationPageType === 'none') {\n return <>;\n }\n\n return (\n <>\n \n \n \n\n \n\n \n\n \n \n \n {baseLanguageCommon?.legal_notice_label}\n \n \n \n \n \n {baseLanguageCommon?.have_account_label}\n \n \n \n {isLandingPageEnabled && (\n \n {baseLanguage?.globals?.common?.go_back_button_label}\n \n )}\n \n );\n};\n","// external\nimport { Box, Button, Typography, useTheme } from '@mui/material';\nimport { useCallback, useEffect, useMemo } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\n\n// components\nimport {\n RelationshipDetails,\n RelationshipsArchivedList,\n RelationshipsList,\n} from 'components';\n\n// store\n\n// hooks\nimport { useLocalization, useMixpanelEvents, useMobileMediaQuery } from 'hooks';\n\nimport {\n useMemberships,\n useRelationships,\n} from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport {\n buildSanityImageUrl,\n useBaseLanguage,\n useSettings,\n} from '@guider-global/sanity-hooks';\n\nexport const RelationshipsPage: React.FC = () => {\n const navigate = useNavigate();\n const { relationshipId } = useParams();\n const theme = useTheme();\n const isMobile = useMobileMediaQuery();\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { settings } = useSettings({\n localeCode,\n });\n useMixpanelEvents({ navigationEventName: 'Relationships' });\n\n const { baseLanguage } = useBaseLanguage({ localeCode });\n const {\n relationships,\n isLoadingRelationships,\n isValidatingRelationships,\n isMutatingRelationships,\n } = useRelationships({\n options: {\n keepPreviousData: false,\n },\n });\n\n const activeRelationships = useMemo(\n () => relationships?.filter((relationship) => !relationship.isConcluded),\n [relationships],\n );\n const archivedRelationships = useMemo(\n () =>\n relationships?.filter((relationship) => relationship.isConcluded) ?? [],\n [relationships],\n );\n\n useMemberships({});\n\n const currentRelationship = relationships?.find(\n (relationship) => relationship.id === relationshipId,\n );\n const currentRelationshipArchived = currentRelationship?.isConcluded;\n\n const firstActiveRelationshipId = activeRelationships?.at(0)?.id;\n\n useEffect(() => {\n if (\n isLoadingRelationships ||\n isValidatingRelationships ||\n !relationships ||\n isMutatingRelationships\n ) {\n return;\n }\n if (\n (isLoadingRelationships || isValidatingRelationships) &&\n !currentRelationship\n ) {\n return;\n }\n // '/relationships/:id' id and relationship exists - do nothing\n if (relationshipId && currentRelationship) {\n return;\n }\n // '/relationships/' nav to first in list\n // '/relationships/:id' id doesn't exists - nav to first in list or /relationships\n if (!firstActiveRelationshipId) {\n navigate('/relationships');\n return;\n }\n if (isMobile) return;\n navigate(`./${firstActiveRelationshipId}`);\n }, [\n currentRelationship,\n firstActiveRelationshipId,\n isLoadingRelationships,\n isMobile,\n isMutatingRelationships,\n isValidatingRelationships,\n navigate,\n relationshipId,\n relationships,\n ]);\n\n const renderSidebar = useCallback(() => {\n if (!isMobile || (!relationshipId && relationships?.length !== 0)) {\n return (\n \n \n {baseLanguage?.relationships?.relationships_list?.title}\n \n \n \n \n );\n }\n }, [\n activeRelationships,\n archivedRelationships,\n baseLanguage?.relationships?.relationships_list?.title,\n isLoadingRelationships,\n isMobile,\n relationshipId,\n relationships?.length,\n theme.palette.divider,\n ]);\n\n const renderNoRelationships = useCallback(() => {\n if (isLoadingRelationships) return;\n if (currentRelationshipArchived) return;\n\n if (\n (!isMobile && activeRelationships?.length === 0) ||\n (isMobile && relationships?.length === 0)\n ) {\n return (\n \n {isMobile && (\n \n {baseLanguage?.relationships?.relationships_list?.title}\n \n )}\n \n \n \n {baseLanguage?.relationships?.no_relationships_state?.title}\n \n \n {baseLanguage?.relationships?.no_relationships_state?.description}\n \n \n navigate('/programs')}\n color=\"info\"\n fullWidth={isMobile}\n sx={{ mr: isMobile ? 0 : 3, mb: isMobile ? 1.5 : 0 }}\n data-cy=\"no-relationships-container-view-programs-button\"\n >\n {baseLanguage?.globals?.programs?.view_programs_button_label}\n \n navigate('/learn')}\n color=\"info\"\n fullWidth={isMobile}\n data-cy=\"no-relationships-container-explore-learining-hub-button\"\n >\n {baseLanguage?.globals?.common?.explore_learning_hub}\n \n \n \n \n );\n }\n }, [\n isLoadingRelationships,\n currentRelationshipArchived,\n isMobile,\n activeRelationships?.length,\n relationships?.length,\n baseLanguage?.relationships?.relationships_list?.title,\n baseLanguage?.relationships?.no_relationships_state?.title,\n baseLanguage?.relationships?.no_relationships_state?.description,\n baseLanguage?.globals?.programs?.view_programs_button_label,\n baseLanguage?.globals?.common?.explore_learning_hub,\n settings?.static_media.relationships.empty_state_illustration,\n navigate,\n ]);\n\n return (\n \n {renderSidebar()}\n\n {currentRelationship && (\n \n )}\n\n {renderNoRelationships()}\n \n );\n};\n\nexport default RelationshipsPage;\n","import {\n AzureCommunicationTokenCredential,\n CommunicationUserIdentifier,\n} from '@azure/communication-common';\nimport {\n AvatarPersonaData,\n AzureCommunicationCallAdapterArgs,\n AzureCommunicationOutboundCallAdapterArgs,\n CallAdapter,\n CallAdapterState,\n fromFlatCommunicationIdentifier,\n useAzureCommunicationCallAdapter,\n} from '@azure/communication-react';\nimport { usePicture } from '@guider-global/azure-storage-hooks';\nimport { useProfiles, useRelationships } from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport VideoRoom from 'components/VideoRoom';\nimport { useLocalization, useSessions, useVideoParticipants } from 'hooks';\nimport { useVideoTokens } from 'hooks/useVideoTokens';\nimport { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\nimport {\n getVideoRoomState,\n setCallCompositePage,\n} from 'store/slices/videoRoomSlice';\n\nconst VideoPage: FC = () => {\n const noSessionsTimerRef = useRef(null);\n const navigate = useNavigate();\n // Organization and Base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({\n localeCode,\n options: {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n });\n\n // Local State\n const [joinedAt, setJoinedAt] = useState();\n const [submittedTimeInCall, setSubmittedTimeInCall] =\n useState(false);\n\n // React Router\n const { id: sessionId } = useParams();\n\n // REDUX\n const dispatch = useAppDispatch();\n const videoRoomState = useAppSelector(getVideoRoomState);\n const { transitionSidebar, callCompositePage } = videoRoomState;\n\n // Hooks\n const { getImage, loading: loadingPicture } = usePicture({\n containerName: 'pictures',\n });\n\n useEffect(() => {\n return () => {\n if (noSessionsTimerRef.current) {\n clearTimeout(noSessionsTimerRef.current);\n }\n };\n }, []);\n\n const { sessions } = useSessions({\n url: sessionId ? `sessions/${sessionId}` : undefined,\n options: {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n onSuccess: (response, ...rest) => {\n if (response.code === 204 && sessionId) {\n if (noSessionsTimerRef.current) {\n clearTimeout(noSessionsTimerRef.current);\n }\n console.error('Error Finding Session, no data returned', {\n response,\n });\n dispatch(\n showAppAlert({\n severity: 'error',\n message: 'Session not found',\n timeout: 10000,\n }),\n );\n noSessionsTimerRef.current = setTimeout(() => {\n navigate(`/relationships`);\n }, 2000);\n }\n },\n },\n });\n const session = sessions?.at(0);\n\n const { profile } = useProfiles({\n options: {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n });\n const displayName = profile?.displayName;\n const communicationUserId = profile?.communicationUserId;\n const roomId = session?.roomId;\n const relationshipId = session?.relationshipId;\n const sessionName = session?.name;\n\n const {\n videoParticipants,\n reqVideoParticipants,\n isLoadingVideoParticipants,\n } = useVideoParticipants({\n params: {\n session: sessionId,\n },\n options: {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n mutateOptions: {\n onError: (err) => {\n console.error('Error Updating participants', err);\n dispatch(\n showAppAlert({\n severity: 'error',\n message: 'Error Updating participants',\n timeout: 10000,\n }),\n );\n },\n },\n });\n const videoParticipant = videoParticipants?.find(\n (videoParticipant) => videoParticipant.session === sessionId,\n );\n\n // Relationship\n const { relationships, isLoadingRelationships } = useRelationships({\n url: relationshipId ? `/relationships/${relationshipId}` : undefined,\n options: {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n });\n\n const relationship = relationships?.find(\n (relationship) => relationship.id === relationshipId,\n );\n const relationshipProfiles = [\n ...(relationship?.traineeProfiles ?? []),\n ...(relationship?.guideProfiles ?? []),\n ];\n\n const handleFetchUserImages = async (\n communicationUserId: string,\n ): Promise => {\n const profile = relationshipProfiles.find(\n (profile) => profile?.communicationUserId === communicationUserId,\n );\n const user = relationship?.users?.find(\n (user) => user?.id === profile?.userId,\n );\n\n if (!user) return {};\n const imageUrl = profile?.picture\n ? getImage(profile?.picture)\n : user.picture;\n return { imageUrl };\n };\n\n // Users Video Token\n const { videoTokens } = useVideoTokens({\n options: {\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n onError: (err) => {\n console.error('Error getting video tokens', err);\n dispatch(\n showAppAlert({\n severity: 'error',\n message: 'Error authenticating session',\n timeout: 10000,\n }),\n );\n },\n },\n });\n\n const token = videoTokens?.[0].token;\n\n // CMS\n\n const sanityBaseLanguageVideo =\n baseLanguage?.relationships?.sessions?.sessions_video;\n const {\n end_session_button_label: exitSessionLabel,\n toggle_chat_button_label: chatLabel,\n toggle_goals_button_label: goalsLabel,\n toggle_schedule_session_button_label: scheduleSessionLabel,\n } = sanityBaseLanguageVideo ?? {};\n\n // ACS Call Adapter\n const credential = useMemo(() => {\n try {\n if (!token) return undefined;\n return new AzureCommunicationTokenCredential(token);\n } catch (error) {\n console.error('Error constructing token credential', error);\n\n dispatch(\n showAppAlert({\n severity: 'error',\n message: 'Error getting session credentials',\n timeout: 10000,\n }),\n );\n return undefined;\n }\n }, [dispatch, token]);\n\n const callAdapterArgs: Partial =\n useMemo(() => {\n if (!roomId || !communicationUserId) return {};\n const args: Partial<\n | AzureCommunicationCallAdapterArgs\n | AzureCommunicationOutboundCallAdapterArgs\n > = {\n userId: fromFlatCommunicationIdentifier(\n communicationUserId,\n ) as CommunicationUserIdentifier,\n displayName,\n credential,\n locator: { groupId: roomId },\n };\n return args;\n }, [communicationUserId, credential, displayName, roomId]);\n\n const afterCreate = async (adapter: CallAdapter): Promise => {\n adapter.on('error', (err) => {\n console.warn('Error after call adapter create', err);\n dispatch(\n showAppAlert({\n severity: 'error',\n message: err.message ?? 'Error Loading Guider Video',\n timeout: 10000,\n }),\n );\n });\n const handlePageChange = (state: CallAdapterState) => {\n dispatch(setCallCompositePage(state.page));\n };\n adapter.onStateChange(async (state) => {\n handlePageChange(state);\n });\n return adapter;\n };\n\n const callAdapter = useAzureCommunicationCallAdapter(\n callAdapterArgs,\n afterCreate,\n );\n\n useEffect(() => {\n if (!callAdapter) return;\n const disposeAdapter = async (): Promise => {\n if (videoParticipant && joinedAt && !submittedTimeInCall) {\n setSubmittedTimeInCall(true);\n\n await reqVideoParticipants({\n method: 'PATCH',\n url: `/videoParticipants/${videoParticipant.id}`,\n data: {\n joinedAt,\n leftAt: new Date(),\n },\n });\n }\n\n callAdapter?.dispose();\n };\n\n window.addEventListener('beforeunload', disposeAdapter);\n return () => {\n window.removeEventListener('beforeunload', disposeAdapter);\n };\n }, [\n callAdapter,\n joinedAt,\n reqVideoParticipants,\n submittedTimeInCall,\n videoParticipant,\n ]);\n\n useEffect(() => {\n if (isLoadingVideoParticipants) {\n return;\n }\n\n const handleCallCompositePage = async () => {\n if (callCompositePage === 'call') {\n const now = new Date();\n\n setSubmittedTimeInCall(false);\n\n if (!joinedAt || submittedTimeInCall) {\n setJoinedAt(now);\n }\n\n if (!videoParticipant && profile && sessionId && joinedAt) {\n await reqVideoParticipants({\n method: 'POST',\n url: '/videoParticipants',\n data: {\n profile: profile.id,\n relationship: relationshipId,\n session: sessionId,\n joinedAt: now,\n },\n });\n }\n }\n\n if (\n callCompositePage === 'leftCall' &&\n videoParticipant &&\n joinedAt &&\n !submittedTimeInCall\n ) {\n setSubmittedTimeInCall(true);\n\n await reqVideoParticipants({\n method: 'PATCH',\n url: `/videoParticipants/${videoParticipant.id}`,\n data: {\n joinedAt,\n leftAt: new Date(),\n },\n });\n }\n };\n\n handleCallCompositePage();\n }, [\n callCompositePage,\n isLoadingVideoParticipants,\n joinedAt,\n profile,\n relationshipId,\n reqVideoParticipants,\n sessionId,\n submittedTimeInCall,\n videoParticipant,\n ]);\n\n // Derivations\n\n const loading =\n isLoadingRelationships ||\n !token ||\n !roomId ||\n !callAdapter ||\n loadingPicture;\n\n console.log('loading video page ', {\n isLoadingRelationships,\n isToken: Boolean(token),\n isRoomId: Boolean(roomId),\n isCallAdapter: Boolean(callAdapter),\n isLoadingPicture: loadingPicture,\n });\n\n return (\n \n );\n};\n\nexport default VideoPage;\n"],"names":["SettingsReviewsPage","value","setValue","useState","organizationSlug","getSubDomain","localeCode","organizationTheme","palette","settings","isLoadingSettings","useSettings","emptyStateAvatar","buildSanityImageUrl","source","static_media","relationships","no_relationships","width","baseLanguage","isLoadingBaseLanguage","useBaseLanguage","reviewsText","reviews","profiles","isLoadingProfiles","useProfiles","profile","at","isLoadingReviews","reviewsReceived","filter","review","reviewedProfile","id","reviewsAuthored","authorProfile","isLoading","theme","direction","pb","size","heading","text","title","variant","subtitles","description","color","amount","skeletonHeight","onChange","event","newValue","label","about_user_tab_title","by_user_tab_title","sx","p","TeamsAuthPage","isTeamsInitialized","code","URLSearchParams","window","location","search","get","authentication","display","justifyContent","alignItems","RegistrationPage","dispatch","navigate","useEffect","organization","useOrganization","handleLanguageChange","useTheme","combinedPalette","getIsTeams","flexDirection","component","src","Typography","textAlign","mt","href","ThemeProvider","bgColor","common","white","logo","white_label","auth0_logo","maxHeight","maxWidth","onBackButtonClick","endAdornment","arrowColor","languageOptions","organizationLanguages","ariaLabel","onClickChange","flex","backgroundColor","py","xs","md","REACT_APP_AUTH0_CLIENT_ID","REACT_APP_AUTH0_DOMAIN","SettingsAccountPage","isMobile","showNewMessage","showNewMessageIntercom","requestCallback","useAxios","users","isLoadingUsers","useUsers","user","usersEmail","email","auth0UserId","isSSO","Boolean","includes","account","change_email","changeEmail","change_password","changePassword","preferences","change_email_button_label","changeEmailButtonLabel","section_title","changeEmailSectionTitle","sso_user_alert_message","ssoUserAlertMessageEmail","change_email_input_label","changeEmailInputLabel","change_email_description","changeEmailDescription","change_password_button_label","changePasswordButtonLabel","changePasswordSectionTitle","server_error_alert_text","serverErrorAlertTextPassword","ssoUserAlertMessagePassword","success_alert_text","successAlertTextPassword","change_password_description","changePasswordDescription","preferencesSectionTitle","organizationId","basic_info","auth0_organization_id","loadingButton","setLoadingButton","alertEmail","setAlertEmail","alertPassword","setAlertPassword","severity","message","show","handlePasswordReset","useCallback","Error","request","method","url","headers","data","client_id","connection","status","console","log","err","handleEmailChangeRequest","flexFlow","CircularProgress","gap","subheader","AccountPreferencesForm","alignSelf","my","SettingsAccountAlert","inputProps","sm","length","fullWidth","disabled","defaultValue","onClick","loading","Grow","in","timeout","unmountOnExit","Alert","SettingsCommunicationPage","SettingsIntegrationsPage","integrations","section_description","SettingsPage","navigation","userActionMenu","user_action_menu","communication","integrationsBaseLanguage","whiteLabel","enabledIntegrations","video_conferencing","videoConferencing","calendar","isIntegrationEnabled","active_directory_teams","active_directory_outlook_calendar","isPathIntegration","pathname","integrationSidebardItem","primaryText","integrations_label","icon","MdCode","path","selected","dataCyLabel","pageSidebarItems","profile_link_label","MdPerson","account_link_label","MdShield","availability_link_label","reviews_link_label","MdReviews","header","pr","items","minWidth","flexGrow","locationIncludesPathname","profile_details","selectHeader","SettingsProfilePage","ProfilePictureForm","EditProfileForm","SettingsAvailabilityPage","availability","sectionTitle","sectionDescription","mb","AvailabilityForm","REACT_APP_BASE_API_URL","RelationshipsPage","relationshipId","navigationEventName","isLoadingRelationships","isValidatingRelationships","isMutatingRelationships","useRelationships","options","keepPreviousData","activeRelationships","useMemo","relationship","isConcluded","archivedRelationships","_a","useMemberships","currentRelationship","find","currentRelationshipArchived","firstActiveRelationshipId","renderSidebar","_b","position","zIndex","borderRight","divider","borderTop","overflowY","relationships_list","renderNoRelationships","_c","_d","_e","_f","_g","_h","_i","_j","_k","ml","empty_state_illustration","no_relationships_state","mr","globals","programs","view_programs_button_label","explore_learning_hub","height","noSessionsTimerRef","useRef","revalidateIfStale","revalidateOnFocus","revalidateOnReconnect","joinedAt","setJoinedAt","submittedTimeInCall","setSubmittedTimeInCall","sessionId","videoRoomState","transitionSidebar","callCompositePage","getImage","loadingPicture","usePicture","containerName","current","clearTimeout","sessions","onSuccess","response","rest","error","setTimeout","session","displayName","communicationUserId","roomId","sessionName","name","videoParticipants","reqVideoParticipants","isLoadingVideoParticipants","params","mutateOptions","onError","videoParticipant","relationshipProfiles","traineeProfiles","guideProfiles","videoTokens","useVideoTokens","token","sanityBaseLanguageVideo","sessions_video","end_session_button_label","exitSessionLabel","toggle_chat_button_label","chatLabel","toggle_goals_button_label","goalsLabel","toggle_schedule_session_button_label","scheduleSessionLabel","credential","callAdapterArgs","userId","locator","groupId","callAdapter","adapter","on","warn","onStateChange","state","page","handlePageChange","disposeAdapter","leftAt","Date","dispose","addEventListener","removeEventListener","now","isToken","isRoomId","isCallAdapter","isLoadingPicture","VideoRoom","sessionTitle","onFetchUserImages","imageUrl","picture"],"sourceRoot":""}