import makeStyles from "@material-ui/core/styles/makeStyles"; import Typography from "@material-ui/core/Typography"; import AppHeader from "@saleor/components/AppHeader"; import CardSpacer from "@saleor/components/CardSpacer"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; import Container from "@saleor/components/Container"; import Form from "@saleor/components/Form"; import Grid from "@saleor/components/Grid"; import Hr from "@saleor/components/Hr"; import PageHeader from "@saleor/components/PageHeader"; import SaveButtonBar from "@saleor/components/SaveButtonBar"; import { PluginErrorFragment } from "@saleor/fragments/types/PluginErrorFragment"; import { ChangeEvent } from "@saleor/hooks/useForm"; import { sectionNames } from "@saleor/intl"; import { getStringOrPlaceholder } from "@saleor/misc"; import { isSecretField } from "@saleor/plugins/utils"; import { ConfigurationItemInput } from "@saleor/types/globalTypes"; import React from "react"; import { useIntl } from "react-intl"; import { Plugin_plugin } from "../../types/Plugin"; import PluginAuthorization from "../PluginAuthorization"; import PluginInfo from "../PluginInfo"; import PluginSettings from "../PluginSettings"; export interface PluginDetailsPageFormData { active: boolean; configuration: ConfigurationItemInput[]; } export interface PluginsDetailsPageProps { disabled: boolean; errors: PluginErrorFragment[]; plugin: Plugin_plugin; saveButtonBarState: ConfirmButtonTransitionState; onBack: () => void; onClear: (field: string) => void; onEdit: (field: string) => void; onSubmit: (data: PluginDetailsPageFormData) => void; } const useStyles = makeStyles( { spacer: { gridColumnEnd: "span 2" } }, { name: "PluginsDetailsPage" } ); const PluginsDetailsPage: React.FC = props => { const { disabled, errors, plugin, saveButtonBarState, onBack, onClear, onEdit, onSubmit } = props; const classes = useStyles(props); const intl = useIntl(); const initialForm: PluginDetailsPageFormData = { active: plugin?.active || false, configuration: plugin?.configuration ?.filter(field => !isSecretField(plugin?.configuration || [], field.name)) .map(field => ({ ...field, value: field.value || "" })) }; return (
{({ data, hasChanged, submit, set, triggerChange }) => { const onChange = (event: ChangeEvent) => { const { name, value } = event.target; const newData = { active: name === "active" ? value : data.active, configuration: data.configuration }; if (newData.configuration) { newData.configuration.map(item => { if (item.name === name) { item.value = value; } }); plugin.configuration.map(item => { if (item.name === name) { item.value = value; } }); } triggerChange(); set(newData); }; return ( {intl.formatMessage(sectionNames.plugins)}
{intl.formatMessage({ defaultMessage: "Plugin Information and Status", description: "section header" })} {intl.formatMessage({ defaultMessage: "These are general information about your store. They define what is the URL of your store and what is shown in browsers taskbar." })}
{data.configuration && ( <>
{intl.formatMessage({ defaultMessage: "Plugin Settings", description: "section header" })}
{plugin?.configuration.some(field => isSecretField(plugin.configuration, field.name) ) && ( <> )}
)}
); }}
); }; PluginsDetailsPage.displayName = "PluginsDetailsPage"; export default PluginsDetailsPage;