UNPKG

@progress/sitefinity-nextjs-sdk

Version:

Provides OOB widgets developed using the Next.js framework, which includes an abstraction layer for Sitefinity communication. Additionally, it offers an expanded API, typings, and tools for further development and integration.

54 lines (53 loc) 3.18 kB
'use client'; import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { useSearchParams } from 'next/navigation'; import { RegistrationFormClient } from './registration-form.client'; import { getQueryParams } from '../common/query-params'; import { useEffect, useMemo, useState } from 'react'; import { RestClient } from '../../rest-sdk/rest-client'; import { ErrorCodeException } from '../../rest-sdk/errors/error-code.exception'; import { ActivationClient } from './activation.client'; const EncryptedParam = 'qs'; export function RegistrationDefaultView(props) { const entity = props.widgetContext.model.Properties; const context = props.widgetContext.requestContext; const searchParams = useSearchParams(); const queryParams = useMemo(() => { return getQueryParams(searchParams); }, [searchParams]); const labels = props.labels; const showSuccessMessage = useMemo(() => { return getQueryParams(searchParams).showSuccessMessage?.toLowerCase() === 'true'; }, [searchParams]); const isAccountActivationRequest = useMemo(() => { if (context?.isLive && queryParams && queryParams[EncryptedParam]) { return true; } return false; }, [context?.isLive, queryParams]); const [activationTitle, setActivationTitle] = useState(); const [activationLabel, setActivationLabel] = useState(); const [isActivationError, setIsActivationError] = useState(false); const [isActivationExpired, setIsActivationExpired] = useState(false); useEffect(() => { if (isAccountActivationRequest) { RestClient.activateAccount(queryParams[EncryptedParam]).then(() => { setActivationTitle(entity.ActivationMessage); }).catch((error) => { if (error instanceof ErrorCodeException && error.code === 'Gone') { setIsActivationExpired(true); props.email = error.message; } else { setIsActivationError(true); setActivationTitle(entity.ActivationFailTitle); setActivationLabel(entity.ActivationFailLabel); } }); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [isAccountActivationRequest]); return (_jsx(_Fragment, { children: _jsxs("div", { ...props.attributes, children: [isActivationExpired && _jsx(_Fragment, { children: _jsx(ActivationClient, { action: props.resendConfirmationEmailHandlerPath, viewProps: props }) }), (isAccountActivationRequest && !isActivationExpired) && _jsx("h2", { className: "mb-3", children: activationTitle }), isActivationError && _jsx("p", { children: activationLabel }), !isAccountActivationRequest && (_jsxs(_Fragment, { children: [showSuccessMessage && _jsx("h3", { children: labels.successHeader }), showSuccessMessage && _jsx("p", { children: labels.successLabel }), !showSuccessMessage && _jsx(_Fragment, { children: _jsx(RegistrationFormClient, { action: props.registrationHandlerPath, viewProps: props }) })] }))] }) })); }