PageSourceSearch

https://gogoodtravel.com/_next/static/chunks/6582-ade9cb91c359407c.js?dpl=dpl_8zRWUqP9ynUDmVJfavjZDxSCGDow

js gogoodtravel.com collected 2026-10-09 05:04:26 UTC 12,973 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6582],{1158:(e,t,s)=>{s.d(t,{Ay:()=>u,HW:()=>d,KD:()=>c,supabase:()=>l});var r=s(49354);let n="https://ocrxcvpgnrugthscqdrt.supabase.co",i="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9jcnhjdnBnbnJ1Z3Roc2NxZHJ0Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjEwNjQ2MzcsImV4cCI6MjA3NjY0MDYzN30.k43s3-Fjus1-tT1XrG-0mrlRzIc-LbD4AYpddeCb4TM";n&&i||console.warn("Supabase credentials not configured. Authentication features will not work.");let a=null;function o(){return a||(a=(0,r.createBrowserClient)(n||"",i||"")),a}let l=new Proxy({},{get(e,t){let s=o(),r=s[t];return"function"==typeof r?r.bind(s):r}});function c(){return o()}let d=async()=>{let{data:{user:e},error:t}=await l.auth.getUser();return t?(console.error("Error getting current user:",t),null):e},u=l},44061:(e,t,s)=>{s.d(t,{P:()=>c,w:()=>l});var r=s(73321),n=s(23516),i=s(31892),a=s(48791),o=s(22395);function l(){let e=(0,o.I)(),t=(0,n.h)(),s=(0,r.usePathname)(),a=(0,r.useSearchParams)(),l=(0,i.Uc)(t,"/kiosk"),c=e=>e.length>1?e.replace(/\/+$/,""):e,d=c(s||""),u=c(l),p="destination"===t.deployment.mode,m=`/${t.id}`,_=a?.get("from")||null,g=d.startsWith("/listing/")&&_===t.id,h=p&&(d===m||d.startsWith(`${m}/`)||g);return{isKioskRoute:e&&h,kioskHomeHref:l,isKioskHome:d===u}}function c(){let e=(0,a.q)(),{isKioskRoute:t}=l();return"app"===e||t}},89409:(e,t,s)=>{s.d(t,{PI:()=>I,TY:()=>m,YX:()=>f,Yq:()=>_,cJ:()=>w,iE:()=>b,jk:()=>u,l_:()=>d,mC:()=>g,n0:()=>S,tK:()=>v,tq:()=>h,u$:()=>p});var r=s(41463);let n=void 0!==r&&r.env&&""!=="https://gogoodtravel.com".trim()&&"https://gogoodtravel.com"||"https://gogoodtravel.com",i=e=>e?`${n}/admin/businesses/${e}`:null,a=e=>e?`${n}/admin/assets/${e}`:null,o={user_signup:!0,business_created:!0,business_edited:!0,business_claimed:!0,team_member_invited:!0,asset_created:!0,asset_edited:!0,asset_submitted_for_review:!0,impact_scan_started:!0,impact_scan_completed:!0,scorecard_shared:!0,embed_code_copied:!0,favorites_folder_created:!0,trip_created:!0,newsletter_signup:!0,contact_form_submitted:!1,asset_favorited:!1,destination_explored:!1},l={user_signup:"New User Signup",business_created:"Business Profile Created",business_edited:"Business Profile Updated",business_claimed:"Business Claimed",team_member_invited:"Team Member Invited",asset_created:"Asset Listing Created",asset_edited:"Asset Listing Updated",asset_submitted_for_review:"Asset Submitted for Review",impact_scan_started:"Stewardship Scan Started",impact_scan_completed:"Stewardship Scan Completed",scorecard_shared:"Scorecard Shared",embed_code_copied:"Embed Code Copied",favorites_folder_created:"Favorites Folder Created",trip_created:"Trip Created",newsletter_signup:"Newsletter Signup",contact_form_submitted:"Contact Form Submitted",asset_favorited:"Asset Favorited",destination_explored:"Destination Explored"},c={user_signup:"#3A6422",business_created:"#026FC0",business_edited:"#026FC0",business_claimed:"#026FC0",team_member_invited:"#026FC0",asset_created:"#6B6EBA",asset_edited:"#6B6EBA",asset_submitted_for_review:"#F3D34A",impact_scan_started:"#D4765E",impact_scan_completed:"#D4765E",scorecard_shared:"#D4765E",embed_code_copied:"#74B3DA",favorites_folder_created:"#74B3DA",trip_created:"#74B3DA",newsletter_signup:"#97C66B",contact_form_submitted:"#97C66B",asset_favorited:"#F3D34A",destination_explored:"#F3D34A"};async function d(e,t={}){if(!o[e])return console.log(`Admin notification skipped (disabled): ${e}`),{success:!0,skipped:!0};let s={...t.metadata||{}},r=t.adminLink||s.adminLink||null;"adminLink"in s&&delete s.adminLink;try{let n=await fetch("/api/email/send-admin-notification",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventType:e,eventLabel:l[e]||e,eventColor:c[e]||"#666666",userEmail:t.userEmail||"Unknown",userName:t.userName||"",title:t.title||"",description:t.description||"",metadata:s,adminLink:r,timestamp:new Date().toISOString()})}),i=null;try{i=await n.json()}catch{}if(!n.ok){let e=i&&i.error||`Admin notification request failed (HTTP ${n.status})`;return console.error("Error sending admin notification:",e),{success:!1,error:e}}return console.log(`Admin notification sent: ${e}`),{success:!0}}catch(e){return console.error("Error sending admin notification:",e),{success:!1,error:e.message}}}let u=(e,t)=>
1d("user_signup",{userEmail:e,userName:t,title:t||e,description:"A new user has created an account"}),p=(e,t,s,r,n)=>d("business_created",{userEmail:e,userName:t,title:s,description:`New business registered in ${r||"GoGood"}`,metadata:{destination:r,adminLink:i(n)}}),m=(e,t,s,r)=>d("business_edited",{userEmail:e,userName:t,title:s,description:"Business profile has been updated",metadata:{adminLink:i(r)}}),_=(e,t,s,r,n)=>d("team_member_invited",{userEmail:e,userName:t,title:s,description:`Invited ${r} as ${n}`,metadata:{invitee:r,role:n}}),g=(e,t,s,r,n)=>d("asset_created",{userEmail:e,userName:t,title:s,description:`New listing added for ${r||"a business"}`,metadata:{business:r,adminLink:a(n)}}),h=(e,t,s,r)=>d("asset_edited",{userEmail:e,userName:t,title:s,description:"Asset listing has been updated",metadata:{adminLink:a(r)}}),f=(e,t,s,r,n)=>d("asset_submitted_for_review",{userEmail:e,userName:t,title:s,description:`${r||"A business"} submitted listing for review`,metadata:{business:r,assetId:n,adminLink:a(n)}}),b=(e,t,s,r)=>d("impact_scan_completed",{userEmail:e,userName:t,title:s,description:`Completed Stewardship Scan with score: ${r}%`,metadata:{score:`${r}%`}}),w=(e,t,s,r)=>d("embed_code_copied",{userEmail:e,userName:t,title:s,description:r?`Copied the ${r} embed code for their website`:"Copied embed code for their website"}),S=(e,t,s)=>d("favorites_folder_created",{userEmail:e,userName:t,title:s,description:"Created a new favorites folder"}),v=(e,t,s,r)=>d("trip_created",{userEmail:e,userName:t,title:s,description:`Created a trip to ${r||"a destination"}`,metadata:{destination:r}}),I=(e,t)=>d("newsletter_signup",{userEmail:e,userName:t,title:e,description:t?`${t} subscribed to newsletter`:"New newsletter subscription"})},96582:(e,t,s)=>{s.d(t,{OJ:()=>_,As:()=>m});var r=s(95155),n=s(12115),i=s(1158),a=s(89409),o=s(98472),l=s(9339);let c=(0,l.createServerReference)("00c92a1a5ce41c09f1da96b8eddf1a430f0f3b9f24",l.callServer,void 0,l.findSourceMapURL,"logInvitationAcceptance");var d=s(23516),u=s(44061);let p=(0,n.createContext)({}),m=()=>{let e=(0,n.useContext)(p);if(!e)throw Error("useAuth must be used within an AuthProvider");return e},_=({children:e})=>{let[t,s]=(0,n.useState)(null),[l,m]=(0,n.useState)(null),[_,g]=(0,n.useState)(!0),[h,f]=(0,n.useState)(!0),b=(0,n.useRef)(new Set),w=(0,n.useRef)(void 0),S=(0,d.h)(),[v,I]=(0,n.useState)(!1),[y,A]=(0,n.use
1State)("login"),{isKioskRoute:E}=(0,u.w)(),C=async()=>{try{console.log("AuthContext: Refreshing session from server...");let{data:{session:e},error:t}=await i.supabase.auth.getSession();if(t)return console.error("AuthContext: Error getting session:",t),{session:null,user:null,error:t};return console.log("AuthContext: Session refreshed",{hasSession:!!e,userId:e?.user?.id}),m(e),s(e?.user??null),f(!e?.user),{session:e,user:e?.user??null,error:null}}catch(e){return console.error("Error refreshing session:",e),{session:null,user:null,error:e}}};(0,n.useEffect)(()=>{(async()=>{try{let{data:{session:e},error:t}=await i.supabase.auth.getSession();t&&console.error("Error getting session:",t),m(e),s(e?.user??null),f(!e?.user),w.current=e?.user?.id??null}catch(e){console.error("Error initializing auth:",e)}finally{g(!1)}})();let{data:{subscription:e}}=i.supabase.auth.onAuthStateChange(async(e,t)=>{let r=t?.user?.id??null;if(("SIGNED_IN"!==e&&"INITIAL_SESSION"!==e||r!==w.current)&&(console.log("Auth state changed:",e,{hasSession:!!t,hasAccessToken:!!t?.access_token,userId:r,expiresAt:t?.expires_at}),m(t),s(t?.user??null),f(!t?.user),g(!1),w.current=r),("SIGNED_IN"===e||"INITIAL_SESSION"===e||"USER_UPDATED"===e)&&t?.user){let e=t.user.id,s=t.user.email;s&&!b.current.has(e)&&(b.current.add(e),i.supabase.rpc("process_pending_invitations",{p_user_id:e,p_email:s.toLowerCase()}).then(({data:e,error:t})=>{t?console.error("Error processing pending invitations:",t):e>0&&(console.log(`Processed ${e} pending invitations for ${s}`),c().catch(e=>console.warn("Invitation-acceptance log failed:",e)))}).catch(e=>{console.error("Error processing pending invitations:",e)}))}});return()=>{e?.unsubscribe()}},[]);let k=async(e,t,s={},r={})=>{try{let n=s.display_name||s.name||s.full_name||null,l=s.signup_tenant_id||S?.id||null,c={...s,...n?{display_name:n}:{},...l?{signup_tenant_id:l}:{},account_type:s.account_type||"traveler",membership_tier:"guest"},d=r.redirectTo||`${window.location.origin}/welcome`,{data:u,error:p}=await i.supabase.auth.signUp({email:e,password:t,options:{data:c,emailRedirectTo:d}});if(p)if("Error sending confirmation email"===p.message&&u?.user)console.warn("Signup succeeded but confirmation email failed (autoconfirm is on):",p.message);else throw p;if(u?.user&&u.user.identities&&0===u.user.identities.length)return{data:null,error:{message:"An account with this email already exists. Please sign in instead, or use a different email address.",code:"user_already_exists"}};if(u?.user){let e=s.display_name||s.name||s.full_name||"",t=e.split(" ")[0]||"";(0,a.jk)(u.user.email,e).catch(e=>console.error("Failed to send signup notification:",e)),(0,o.Ls)(u.user.email,t,S?.id||null).catch(e=>console.error("Failed to send member welcome email:",e))}return{data:u,error:null}}catch(e){return console.error("Error signing up:",e),{data:null,error:e}}},N=async(e,t)=>{try{console.log("AuthContext: Starting signIn for",e);let{data:s,error:r}=await i.supabase.auth.signInWithPassword({email:e,password:t});console.log("AuthContext: signIn completed",{hasData:!!s,hasError:!!r,hasSession:!!s?.session,hasAccessToken:!!s?.session?.access_token,userId:s?.user?.id});let n=localStorage.getItem("gogood-auth");if(console.log("AuthContext: Session in localStorage after signIn:",!!n),r)throw r;return fetch("/api/business/activity",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event:"login"})}).catch(e=>console.warn("Could not log login activity (non-fatal):",e)),{data:s,error:null}}catch(e){return console.error("Error signing in:",e),{data:null,error:e}}},x=async()=>{try{let{error:e}=await i.supabase.auth.signOut();if(e)throw e;s(null),m(null),f(!0),sessionStorage.removeItem("previousState"),sessionStorage.removeItem("previousUrl"),sessionStorage.removeItem("gogood_session_id"),sessionStorage.removeItem("impactScanResults"),sessionStorage.removeItem("impactScanPendingSave"),sessionStorage.removeItem("impactScanWantsBusinessAccount");let t=[];for(let e=0;e<localStorage.length;e++){let s=localStorage.key(e);s&&s.startsWith("impactScanDraft-")&&t.push(s),"gogood_pending_events"===s&&t.push(s)}
1return t.forEach(e=>localStorage.removeItem(e)),console.log("✅ User data cleared on signout"),{error:null}}catch(e){return console.error("Error signing out:",e),{error:e}}},$=async e=>{try{let t=await fetch("/api/auth/reset-password",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e.trim()})}),s=await t.json();if(!t.ok)throw Error(s.error||"Failed to send reset email");return{data:s,error:null}}catch(e){return console.error("Error resetting password:",e),{data:null,error:e}}},D=async e=>{try{let{data:t,error:s}=await i.supabase.auth.updateUser({password:e});if(s)throw s;return{data:t,error:null}}catch(e){return console.error("Error updating password:",e),{data:null,error:e}}},T=async e=>{try{let{data:t,error:s}=await i.supabase.auth.updateUser({data:e});if(s)throw s;return{data:t,error:null}}catch(e){return console.error("Error updating profile:",e),{data:null,error:e}}},P=async()=>{try{console.log("Attempting to delete account...");let{data:{session:e}}=await i.supabase.auth.getSession();if(console.log("Current session before delete:",{hasSession:!!e,hasAccessToken:!!e?.access_token,userId:e?.user?.id,expiresAt:e?.expires_at?new Date(1e3*e.expires_at).toISOString():null}),!e?.access_token)throw s(null),m(null),f(!0),Error("Your session has expired. Please sign in again to delete your account.");let{data:t,error:r}=await i.supabase.rpc("delete_user_account");if(console.log("Delete account response:",{data:t,error:r}),r)throw console.error("Delete account RPC error:",r),r;return s(null),m(null),f(!0),{error:null}}catch(e){return console.error("Error deleting account:",e),{error:e instanceof Error?e:Error(String(e))}}};return(0,r.jsx)(p.Provider,{value:{user:t,session:l,loading:_,isGuest:h,signUp:k,signIn:N,signOut:x,continueAsGuest:()=>{f(!0),s(null),m(null)},resetPassword:$,updatePassword:D,updateProfile:T,deleteAccount:P,refreshSession:C,isAuthenticated:!!t&&!!l,isAuthModalOpen:v,authModalMode:y,openAuthModal:(e="login")=>{E||(A(e),I(!0))},closeAuthModal:()=>{I(!1)}},children:e})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.