File tree Expand file tree Collapse file tree 3 files changed +24
-6
lines changed
supabase/functions/email-campaigns Expand file tree Collapse file tree 3 files changed +24
-6
lines changed Original file line number Diff line number Diff line change 154154 },
155155 "unsubscribe" : {
156156 "success_header" : " You have been unsubscribed" ,
157- "success_message" : " You will no longer receive emails from us ." ,
157+ "success_message" : " You will no longer receive emails from {sender} ." ,
158158 "preview_notice" : " This is a preview - the link is active in the actual email" ,
159159 "failure_header" : " Unsubscribe failed" ,
160160 "failure_message" : " We couldn't find your subscription. Please contact support." ,
316316 },
317317 "unsubscribe" : {
318318 "success_header" : " Vous êtes désabonné" ,
319- "success_message" : " Vous ne recevrez plus d'emails de notre part ." ,
319+ "success_message" : " Vous ne recevrez plus d'emails de {sender} ." ,
320320 "preview_notice" : " Ceci est un aperçu - le lien est actif dans l'email réel" ,
321321 "failure_header" : " Désabonnement échoué" ,
322322 "failure_message" : " Nous n'avons pas trouvé votre abonnement. Veuillez contacter le support." ,
Original file line number Diff line number Diff line change 1010 </div >
1111 <div >
1212 <p >
13- {{ $t('unsubscribe.success_message') }}
13+ {{ $t('unsubscribe.success_message', { sender: senderEmail } ) }}
1414 </p >
1515 </div >
1616 <div v-if =" isPreview" class =" bg-blue-50 border border-blue-200 rounded p-4" >
2424<script setup lang="ts">
2525const $route = useRoute ();
2626const isPreview = Boolean ($route .query .preview );
27+ const senderEmail = $route .query .sender as string | undefined ;
2728 </script >
Original file line number Diff line number Diff line change @@ -2052,14 +2052,31 @@ app.get("/unsubscribe/:token", async (c: Context) => {
20522052 event_type : "unsubscribe" ,
20532053 } ) ;
20542054
2055+ let senderEmail = "" ;
2056+ try {
2057+ const { data : profile } = await supabaseAdmin
2058+ . schema ( "private" )
2059+ . from ( "profiles" )
2060+ . select ( "email" )
2061+ . eq ( "user_id" , recipient . user_id )
2062+ . maybeSingle ( ) ;
2063+ senderEmail = profile ?. email || "" ;
2064+ } catch ( e ) {
2065+ console . error ( "Failed to fetch sender email:" , e ) ;
2066+ }
2067+
2068+ const successUrl = senderEmail
2069+ ? `${ FRONTEND_HOST } /unsubscribe/success?sender=${ encodeURIComponent ( senderEmail ) } `
2070+ : `${ FRONTEND_HOST } /unsubscribe/success` ;
2071+
20552072 return new Response ( null , {
20562073 status : 302 ,
20572074 headers : {
20582075 ...corsHeaders ,
2059- Location : `${ FRONTEND_HOST } /unsubscribe/success` ,
2076+ Location : success } ) ;
2077+ } ) ; Url ,
20602078 } ,
2061- } ) ;
2062- } ) ;
2079+
20632080
20642081app . get ( "/track/open/:token" , async ( c : Context ) => {
20652082 const token = c . req . param ( "token" ) ;
You can’t perform that action at this time.
0 commit comments