Files
supabase/apps/studio/data/auth/user-send-otp-mutation.ts
Danny WhiteandJoshen Lim 38e09e1754 chore(studio + docs + ui library): update auth email template copy docs (#45706)
## What kind of change does this PR introduce?

Docs update. Part of DEPR-198.

## What is the current behaviour?

Auth email template examples and Studio template labels still reflect
older default copy in a few places.

## What is the new behaviour?

Updates Auth docs, local development docs, related snippets, Studio
template labels, and UI Library examples to [match the updated default
Auth email
copy](https://linear.app/supabase/document/email-template-copywriting-updates-04bba460fd2a).


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Updated authentication email template names and descriptions across
guides, replacing "Magic link" with "Sign-in link or code" terminology
* Revised security notification email naming from "Identity
linked/unlinked" to "Sign-in method linked/removed" and "MFA method" to
"Verification method"
* Updated email template example content with improved wording (e.g.,
"Confirm your email address" instead of "Confirm your signup")

* **UI Updates**
* Refined authentication-related UI text labels and descriptions in the
dashboard

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/supabase/supabase/pull/45706)
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
2026-05-22 11:47:36 +10:00

50 lines
1.3 KiB
TypeScript

import { useMutation } from '@tanstack/react-query'
import { toast } from 'sonner'
import type { User } from './users-infinite-query'
import { handleError, post } from '@/data/fetchers'
import type { ResponseError, UseCustomMutationOptions } from '@/types'
export type UserSendOTPVariables = {
projectRef: string
user: User
}
export async function sendOTP({ projectRef, user }: UserSendOTPVariables) {
const { data, error } = await post('/platform/auth/{ref}/otp', {
params: { path: { ref: projectRef } },
body: { phone: user.phone },
})
if (error) handleError(error)
return data
}
type UserSendOTPData = Awaited<ReturnType<typeof sendOTP>>
export const useUserSendOTPMutation = ({
onSuccess,
onError,
...options
}: Omit<
UseCustomMutationOptions<UserSendOTPData, ResponseError, UserSendOTPVariables>,
'mutationFn'
> = {}) => {
return useMutation<UserSendOTPData, ResponseError, UserSendOTPVariables>({
mutationFn: (vars) => sendOTP(vars),
async onSuccess(data, variables, context) {
// [Joshen] If we need to invalidate any queries
await onSuccess?.(data, variables, context)
},
async onError(data, variables, context) {
if (onError === undefined) {
toast.error(`Failed to send OTP: ${data.message}`)
} else {
onError(data, variables, context)
}
},
...options,
})
}