diff --git a/src/screens/Settings/BusinessMapping/BusinessMappingEntity.res b/src/screens/Settings/BusinessMapping/BusinessMappingEntity.res index 728cf4ac8..ab2590758 100644 --- a/src/screens/Settings/BusinessMapping/BusinessMappingEntity.res +++ b/src/screens/Settings/BusinessMapping/BusinessMappingEntity.res @@ -1,108 +1,17 @@ open HSwitchSettingTypes open BusinessMappingUtils -module ProfileActions = { - @react.component - let make = (~defaultProfileName, ~profileId) => { - open APIUtils - let getURL = useGetURL() - let updateDetails = useUpdateMethod() - let showToast = ToastState.useShowToast() - let (showModal, setShowModal) = React.useState(_ => false) - let (businessProfiles, setBusinessProfiles) = Recoil.useRecoilState( - HyperswitchAtom.businessProfilesAtom, - ) - let initialValues = [("profile_name", defaultProfileName->JSON.Encode.string)]->Dict.fromArray - - let onSubmit = async (values, _) => { - try { - let url = getURL(~entityName=BUSINESS_PROFILE, ~methodType=Post, ~id=Some(profileId)) - let res = await updateDetails(url, values, Post) - let filteredProfileList = - businessProfiles - ->Array.filter(businessProfile => businessProfile.profile_id !== profileId) - ->Array.concat([res->BusinessProfileMapper.businessProfileTypeMapper]) - - setBusinessProfiles(_ => filteredProfileList) - showToast(~message="Updated profile name!", ~toastType=ToastSuccess) - } catch { - | _ => showToast(~message="Failed to update profile name!", ~toastType=ToastError) - } - setShowModal(_ => false) - Nullable.null - } - - let businessName = FormRenderer.makeFieldInfo( - ~label="Profile Name", - ~name="profile_name", - ~placeholder=`Eg: Hyperswitch`, - ~customInput=InputFields.textInput(), - ~isRequired=true, - ) - -
- setShowModal(_ => true)} - />} - toolTipPosition=ToolTip.Top - contentAlign={Left} - /> - { - Clipboard.writeText(profileId) - showToast(~message="Copied to Clipboard!", ~toastType=ToastSuccess) - }} - />} - toolTipPosition=ToolTip.Top - contentAlign={Left} - /> - -
JSON.Encode.object} onSubmit> -
- - - -
- -
-
-
-
-
- } -} - type columns = | ProfileName | ProfileId | ReturnUrl | WebhookUrl - | Action -let visibleColumns = [ProfileId, ProfileName, ReturnUrl, WebhookUrl, Action] +let visibleColumns = [ProfileId, ProfileName, ReturnUrl, WebhookUrl] -let defaultColumns = [ProfileId, ProfileName, ReturnUrl, WebhookUrl, Action] +let defaultColumns = [ProfileId, ProfileName, ReturnUrl, WebhookUrl] -let allColumns = [ProfileId, ProfileName, ReturnUrl, WebhookUrl, Action] +let allColumns = [ProfileId, ProfileName, ReturnUrl, WebhookUrl] let getHeading = colType => { switch colType { @@ -110,21 +19,15 @@ let getHeading = colType => { | ProfileName => Table.makeHeaderInfo(~key="profile_name", ~title="Profile Name") | ReturnUrl => Table.makeHeaderInfo(~key="return_url", ~title="Return URL") | WebhookUrl => Table.makeHeaderInfo(~key="webhook_url", ~title="Webhook URL") - | Action => Table.makeHeaderInfo(~key="action", ~title="Action") } } let getCell = (item: profileEntity, colType): Table.cell => { switch colType { - | ProfileId => Text(item.profile_id) + | ProfileId => DisplayCopyCell(item.profile_id) | ProfileName => Text(item.profile_name) | ReturnUrl => Text(item.return_url->Option.getOr("")) | WebhookUrl => Text(item.webhook_details.webhook_url->Option.getOr("")) - | Action => - CustomCell( - , - "", - ) } } diff --git a/src/screens/Settings/BusinessMapping/BusinessProfileDetails.res b/src/screens/Settings/BusinessMapping/BusinessProfileDetails.res index 9c3a49c10..036152b72 100644 --- a/src/screens/Settings/BusinessMapping/BusinessProfileDetails.res +++ b/src/screens/Settings/BusinessMapping/BusinessProfileDetails.res @@ -1,6 +1,6 @@ module InfoViewForWebhooks = { @react.component - let make = (~heading, ~subHeading, ~isCopy=false) => { + let make = (~heading, ~subHeading, ~isCopy=false, ~customComp=React.null) => { let showToast = ToastState.useShowToast() let onCopyClick = ev => { ev->ReactEvent.Mouse.stopPropagation @@ -22,6 +22,7 @@ module InfoViewForWebhooks = { }} /> + {customComp} } @@ -287,6 +288,86 @@ module CollectDetails = { } } +module EditProfileName = { + @react.component + let make = (~defaultProfileName, ~profileId) => { + open APIUtils + let getURL = useGetURL() + let updateDetails = useUpdateMethod() + let showToast = ToastState.useShowToast() + let (showModal, setShowModal) = React.useState(_ => false) + let (businessProfiles, setBusinessProfiles) = Recoil.useRecoilState( + HyperswitchAtom.businessProfilesAtom, + ) + + let initialValues = [("profile_name", defaultProfileName->JSON.Encode.string)]->Dict.fromArray + + let onSubmit = async (values, _) => { + try { + let url = getURL(~entityName=BUSINESS_PROFILE, ~methodType=Post, ~id=Some(profileId)) + let res = await updateDetails(url, values, Post) + let filteredProfileList = + businessProfiles + ->Array.filter(businessProfile => businessProfile.profile_id !== profileId) + ->Array.concat([res->BusinessProfileMapper.businessProfileTypeMapper]) + + setBusinessProfiles(_ => filteredProfileList) + showToast(~message="Updated profile name!", ~toastType=ToastSuccess) + } catch { + | _ => showToast(~message="Failed to update profile name!", ~toastType=ToastError) + } + setShowModal(_ => false) + Nullable.null + } + + let businessName = FormRenderer.makeFieldInfo( + ~label="Profile Name", + ~name="profile_name", + ~placeholder=`Eg: Hyperswitch`, + ~customInput=InputFields.textInput(), + ~isRequired=true, + ) + +
+ { + ev->ReactEvent.Mouse.stopPropagation + setShowModal(_ => true) + }} + />} + toolTipPosition=ToolTip.Top + contentAlign={Left} + /> + +
JSON.Encode.object} onSubmit> +
+ + + +
+ +
+
+
+
+
+ } +} + @react.component let make = (~webhookOnly=false, ~showFormOnly=false, ~profileId="") => { open DeveloperUtils @@ -326,6 +407,10 @@ let make = (~webhookOnly=false, ~showFormOnly=false, ~profileId="") => { defaultFieldsToValidate } + React.useMemo(() => { + setBusiProfie(_ => businessProfileDetails) + }, [businessProfileDetails]) + let onSubmit = async (values, _) => { try { open LogicUtils @@ -392,7 +477,12 @@ let make = (~webhookOnly=false, ~showFormOnly=false, ~profileId="") => { heading="Profile ID" subHeading=busiProfieDetails.profile_id isCopy=true /> } />