import React, { useEffect, useState } from "react"; import { useSettings } from "@settings/contexts/SettingsContext"; import { useConnectApiKey } from "@settings/hooks/useConnectApiKey"; import { extractAPIKeyFromURL } from "@app/services/utilities"; import { SfSyncLogo } from "@app/assets/images/icons"; import { usePlatformFrameUrl } from "@app/components/platform-frame/usePlatformFrameUrl"; import "./splash-screen-styles.scss"; const InfoIcon = ( ); const SplashScreen = () => { const localization = sfsyncI18n.data; const { showNotification } = useSettings(); const { connect } = useConnectApiKey(); const apiKeyFromParam = extractAPIKeyFromURL(window.location.href); const cameFromUrlParam = !!apiKeyFromParam; const [apiKey, setApiKey] = useState(apiKeyFromParam || ""); const [isSaving, setIsSaving] = useState(cameFromUrlParam); const [errorMessage, setErrorMessage] = useState(""); const [showApiKey, setShowApiKey] = useState(cameFromUrlParam); const iframeUrl = usePlatformFrameUrl({ overridePath: "signup", includeAdminParams: false }); const handleConnect = async (key: string) => { const trimmedKey = key.trim(); if (!trimmedKey) { setErrorMessage(localization.splash_api_key_required); return; } if (trimmedKey.length < 20) { setErrorMessage(localization.splash_api_key_invalid_format); return; } setIsSaving(true); setErrorMessage(""); const result = await connect(trimmedKey); if (result.ok) { showNotification("success", localization.splash_connect_success); return; } setErrorMessage(result.message); setIsSaving(false); }; useEffect(() => { if (apiKeyFromParam) { handleConnect(apiKeyFromParam); } // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const handleClear = () => { setApiKey(""); setErrorMessage(""); }; return (
{SfSyncLogo}

{localization.splash_headline}

{localization.splash_subtext}

{showApiKey && (
{ setApiKey(e.target.value); if (errorMessage) setErrorMessage(""); }} disabled={isSaving} /> {apiKey && !isSaving && ( )}
{errorMessage &&

{errorMessage}

}
)}
{InfoIcon}

{localization.splash_notice_title}

{localization.splash_notice_text}

{isSaving ? (

{localization.splash_validating_text}

) : (