From 697b373b0655bd1fbf7b681b479dc0aaab4f564a Mon Sep 17 00:00:00 2001 From: Vaibhav <117663341+7ttp@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:23:50 +0530 Subject: [PATCH] fix: sms hook validation (#45208) ## TL;DR fixes a regression where sms provider creds blocked saving phone provider settings while the send sms hook was enabled ## Before https://github.com/user-attachments/assets/3d053f4a-4b14-4a91-a5c6-dcaa0c09d148 ## After https://github.com/user-attachments/assets/f24a8534-bf86-4389-8a26-564fb9886bda ## ref: - closes https://github.com/supabase/supabase/issues/45198 ## Summary by CodeRabbit * **Refactor** * Optimized internal validation logic for SMS provider configurations to improve code maintainability and structure. --- .../Auth/AuthProvidersFormValidation.tsx | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/apps/studio/components/interfaces/Auth/AuthProvidersFormValidation.tsx b/apps/studio/components/interfaces/Auth/AuthProvidersFormValidation.tsx index dd444177e4a..c2e44a7f672 100644 --- a/apps/studio/components/interfaces/Auth/AuthProvidersFormValidation.tsx +++ b/apps/studio/components/interfaces/Auth/AuthProvidersFormValidation.tsx @@ -261,18 +261,15 @@ const smsProviderDisabledSchema = z // as the SMS hook will be used in place of the configured SMS provider const makeProviderOptionalWhenSMSHookEnabled = ( config: ProjectAuthConfigData, - schema: z.ZodObject + getSchema: (optional?: boolean) => z.ZodObject ) => { - return config.HOOK_SEND_SMS_ENABLED ? schema.partial() : schema + return config.HOOK_SEND_SMS_ENABLED ? getSchema(true).partial() : getSchema() } // getPhoneProviderValidationSchema generate the validation schema for the SMS providers // based on whether the SMS hook is enabled export const getPhoneProviderValidationSchema = (config: ProjectAuthConfigData) => { - const twilioSchema = makeProviderOptionalWhenSMSHookEnabled( - config, - getTwilioPhoneProviderSchema() - ) + const twilioSchema = makeProviderOptionalWhenSMSHookEnabled(config, getTwilioPhoneProviderSchema) .merge( z.object({ SMS_PROVIDER: z.literal('twilio'), @@ -287,7 +284,7 @@ export const getPhoneProviderValidationSchema = (config: ProjectAuthConfigData) const twilioVerifySchema = makeProviderOptionalWhenSMSHookEnabled( config, - getTwilioVerifyPhoneProviderSchema() + getTwilioVerifyPhoneProviderSchema ) .merge( z.object({ @@ -302,7 +299,7 @@ export const getPhoneProviderValidationSchema = (config: ProjectAuthConfigData) const messagebirdSchema = makeProviderOptionalWhenSMSHookEnabled( config, - getMessagebirdPhoneProviderSchema() + getMessagebirdPhoneProviderSchema ) .merge( z.object({ @@ -316,10 +313,7 @@ export const getPhoneProviderValidationSchema = (config: ProjectAuthConfigData) .merge(getVonagePhoneProviderSchema(true).partial()) .merge(getTextlocalPhoneProviderSchema(true).partial()) - const vonageSchema = makeProviderOptionalWhenSMSHookEnabled( - config, - getVonagePhoneProviderSchema() - ) + const vonageSchema = makeProviderOptionalWhenSMSHookEnabled(config, getVonagePhoneProviderSchema) .merge( z.object({ SMS_PROVIDER: z.literal('vonage'), @@ -334,7 +328,7 @@ export const getPhoneProviderValidationSchema = (config: ProjectAuthConfigData) const textlocalSchema = makeProviderOptionalWhenSMSHookEnabled( config, - getTextlocalPhoneProviderSchema() + getTextlocalPhoneProviderSchema ) .merge( z.object({