@@ -263,7 +263,39 @@ <h2 class="text-3xl font-roboto font-bold text-center mb-12">
263263 <!-- EmailJS Initialization -->
264264 < script type ="text/javascript ">
265265 ( function ( ) {
266- emailjs . init ( "{{ .Site.Params.emailjs_public_key }}" ) ;
266+ try {
267+ const publicKey = "{{ .Site.Params.emailjs_public_key }}" ;
268+ const serviceId = "{{ .Site.Params.emailjs_service_id }}" ;
269+ const templateId = "{{ .Site.Params.emailjs_template_id }}" ;
270+
271+ // Check if EmailJS configuration is valid
272+ const isConfigValid =
273+ publicKey &&
274+ ! publicKey . includes ( "${HUGO" ) &&
275+ serviceId &&
276+ ! serviceId . includes ( "${HUGO" ) &&
277+ templateId &&
278+ ! templateId . includes ( "${HUGO" ) ;
279+
280+ if ( ! isConfigValid ) {
281+ console . error ( "EmailJS configuration is incomplete or invalid" ) ;
282+ // Show a message to the user that email functionality is not available
283+ const formMessage = document . getElementById ( "formMessage" ) ;
284+ const errorMessage = document . querySelector ( ".error-message" ) ;
285+ if ( formMessage && errorMessage ) {
286+ formMessage . classList . remove ( "hidden" ) ;
287+ errorMessage . classList . remove ( "hidden" ) ;
288+ errorMessage . textContent =
289+ "Email service is temporarily unavailable. Please contact us directly at [email protected] " ; 290+ }
291+ return ;
292+ }
293+
294+ emailjs . init ( publicKey ) ;
295+ console . log ( "EmailJS initialized successfully" ) ;
296+ } catch ( error ) {
297+ console . error ( "Error initializing EmailJS:" , error ) ;
298+ }
267299 } ) ( ) ;
268300
269301 document
@@ -272,10 +304,17 @@ <h2 class="text-3xl font-roboto font-bold text-center mb-12">
272304 e . preventDefault ( ) ;
273305
274306 // Show loading state
275- document . getElementById ( "submitButton" ) . disabled = true ;
276- document
277- . getElementById ( "loadingSpinner" )
278- . classList . remove ( "hidden" ) ;
307+ const submitButton = document . getElementById ( "submitButton" ) ;
308+ const loadingSpinner = document . getElementById ( "loadingSpinner" ) ;
309+ const formMessage = document . getElementById ( "formMessage" ) ;
310+ const successMessage = document . querySelector ( ".success-message" ) ;
311+ const errorMessage = document . querySelector ( ".error-message" ) ;
312+
313+ submitButton . disabled = true ;
314+ loadingSpinner . classList . remove ( "hidden" ) ;
315+ formMessage . classList . add ( "hidden" ) ;
316+ successMessage . classList . add ( "hidden" ) ;
317+ errorMessage . classList . add ( "hidden" ) ;
279318
280319 // Get form data
281320 const templateParams = {
@@ -286,35 +325,46 @@ <h2 class="text-3xl font-roboto font-bold text-center mb-12">
286325287326 } ;
288327
328+ const serviceId = "{{ .Site.Params.emailjs_service_id }}" ;
329+ const templateId = "{{ .Site.Params.emailjs_template_id }}" ;
330+
331+ if (
332+ ! serviceId ||
333+ serviceId . includes ( "${HUGO" ) ||
334+ ! templateId ||
335+ templateId . includes ( "${HUGO" )
336+ ) {
337+ formMessage . classList . remove ( "hidden" ) ;
338+ errorMessage . classList . remove ( "hidden" ) ;
339+ errorMessage . textContent =
340+ "Email service is temporarily unavailable. Please contact us directly at [email protected] " ; 341+ submitButton . disabled = false ;
342+ loadingSpinner . classList . add ( "hidden" ) ;
343+ return ;
344+ }
345+
289346 emailjs
290- . send (
291- "{{ .Site.Params.emailjs_service_id }}" ,
292- "{{ .Site.Params.emailjs_template_id }}" ,
293- templateParams
294- )
347+ . send ( serviceId , templateId , templateParams )
295348 . then ( function ( response ) {
296- document
297- . getElementById ( "formMessage" )
298- . classList . remove ( "hidden" ) ;
299- document
300- . querySelector ( ".success-message" )
301- . classList . remove ( "hidden" ) ;
349+ console . log ( "Email sent successfully:" , response ) ;
350+ formMessage . classList . remove ( "hidden" ) ;
351+ successMessage . classList . remove ( "hidden" ) ;
302352 document . getElementById ( "contactForm" ) . reset ( ) ;
303353 } )
304354 . catch ( function ( error ) {
305- document
306- . getElementById ( "formMessage" )
307- . classList . remove ( "hidden" ) ;
308- document
309- . querySelector ( ".error-message" )
310- . classList . remove ( "hidden" ) ;
311- console . error ( "Error:" , error ) ;
355+ console . error ( "Error sending email:" , error ) ;
356+ formMessage . classList . remove ( "hidden" ) ;
357+ errorMessage . classList . remove ( "hidden" ) ;
358+ if ( error . text ) {
359+ errorMessage . textContent = "Error: " + error . text ;
360+ } else {
361+ errorMessage . textContent =
362+ "Unable to send message. Please try again or contact us directly at [email protected] " ; 363+ }
312364 } )
313365 . finally ( function ( ) {
314- document . getElementById ( "submitButton" ) . disabled = false ;
315- document
316- . getElementById ( "loadingSpinner" )
317- . classList . add ( "hidden" ) ;
366+ submitButton . disabled = false ;
367+ loadingSpinner . classList . add ( "hidden" ) ;
318368 } ) ;
319369 } ) ;
320370 </ script >
0 commit comments