1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[97868],{97868:(e,t,r)=>{r.d(t,{L8:()=>l,RS:()=>d,UJ:()=>m,aW:()=>p,jp:()=>$,ml:()=>o,notifySavedEvent:()=>f,vm:()=>w,y5:()=>g});var n=r(62890);function i(e){let t=e.startsWith("/")?e:`/${e}`;return`https://www.lamppostsocial.com${t}`}function o(e){let t=e.trim();if(!t)return"/";if(t.startsWith("http://")||t.startsWith("https://"))try{let e=new URL(t);return`${e.pathname}${e.search}${e.hash}`}catch{return t}return t.startsWith("/")?t:`/${t}`}async function s(e,t,r,n,i,o){if(!(i.getTime()-Date.now()>6e5))try{fetch("/api/send-push",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:e,title:t,content:r,url:n,...null!=o?{notificationId:o}:{}})}).catch(e=>{console.error("â [notifications] maybeSendImmediatePush fetch error:",e)})}catch(e){console.error("â [notifications] maybeSendImmediatePush error:",e)}}async function a(e,t,r){try{var o,a;let c=new Date(t.event_full_datetime);if(isNaN(c.getTime()))return console.error("Invalid event_full_datetime:",t.event_full_datetime),{success:!1,error:Error("Invalid event datetime")};let l=new Date(c.getTime()-864e5);if(isNaN(l.getTime()))return console.error("Invalid scheduled_for date calculated from:",t.event_full_datetime),{success:!1,error:Error("Invalid scheduled date")};if(l<=new Date)return{success:!0};let u=`${t.Name}, an event you saved, starts in 24h! - don't forget!`,d=t.event_time;d&&!d.includes("-")&&(d=d.trim());let f=(null==(o=t.event_location)?void 0:o.trim())||"Location TBA",m=`Event Details: ${t.Name} at ${f} - ${d}`,g=i(`/events/${t.slug}`),{data:v,error:_}=await (0,n.NM)("notications",{recipient_id:e,title:u,content:m,url:g,is_read:!1,scheduled_for:l.toISOString()},{returning:"representation",authToken:r});if(_)return console.error("Error creating saved event notification:",_),{success:!1,error:_};let h=null==v||null==(a=v[0])?void 0:a.id;return s(e,u,m,g,l,h),{success:!0}}catch(e){return console.error("Error creating saved event notification:",e),{success:!1,error:e}}}async function c(e,t,r,o,a,c){try{let l=(t||"Someone").trim()||"Someone",u=r.trim()||"An event",d=function(e){let t=new Date(e);if(isNaN(t.getTime()))return"soon";let r=t.toLocaleDateString("en-US",{month:"long"}),n=t.getDate(),i=n>=11&&n<=13?"th":n%10==1?"st":n%10==2?"nd":n%10==3?"rd":"th";return`${r} ${n}${i}`}(o),f=`${l} invited you to an event!`,m=`${u} on ${d}, wanna go?`,g=i(`/events/${a}`),v=new Date,_=v.toISOString(),{data:h,error:w}=await (0,n.NM)("notications",{recipient_id:e,title:f,content:m,url:g,is_read:!1,scheduled_for:_,sent_at:_},{returning:"representation",authToken:c});if(w)return console.error("Error creating calendar invite notification:",w),{success:!1,error:w};let p=Array.isArray(h)?h[0]:h;return(null==p?void 0:p.id)!=null&&s(e,f,m,g,v,p.id),{success:!0}}catch(e){return console.error("Error creating calendar invite notification:",e),{success:!1,error:e}}}function l(e,t,r){let{sharerUsername:n,eventName:i,eventFullDatetime:o,eventSlug:s}=t;i&&o&&s&&c(e,n,i,o,s,r).catch(e=>{console.error("Error creating calendar invite notification:",e)})}async function u(e,t,r){try{let o=new Date(t.event_full_datetime);if(isNaN(o.getTime()))return console.error("Invalid event_full_datetime:",t.event_full_datetime),{success:!1,error:Error("Invalid event datetime")};let s=new Date(o.getTime()+432e5);if(isNaN(s.getTime()))return{success:!1,error:Error("Invalid scheduled date")};if(s<=new Date)return{success:!0};let a=`Share photos from ${t.Name}!`,c=i(`/upload/event-photos?event=${encodeURIComponent(t.slug)}`),{error:l}=await (0,n.NM)("notications",{recipient_id:e,title:a,content:"Upload your event photos to show off the night and grow your audience.",url:c,is_read:!1,scheduled_for:s.toISOString()},{returning:"minimal",authToken:r});if(l)return console.error("Error creating host event photos reminder:",l),{success:!1,error:l};return{success:!0}}catch(e){return console.error("Error creating host event photos reminder:",e),{success:!1,error:e}}}function d(e,t,r){t.Name&&t.event_full_datetime&&t.slug&&u(e,t,r).catch(e=>{console.error("Error creating host event photos reminder:",e)})}function f(e,t,r){t.Name&&t.event_full_datetime&&t.slug&&a(e,{id:t.id,Name:t.Name,event_full_datetime:t.event_full_datetime,event_time:t.event_time??"",event_location:t.event_location??"",slug:t.slug},r).catch(e=>{console.error("Error creating saved event notification:",e)})}async function m(e,t,r){try{var o,a,c;let l=new Date(t.event_full_datetime);if(isNaN(l.getTime()))return console.error("Invalid event_full_datetime:",t.event_full_datetime),{success:!1,error:Error("Invalid event datetime")};let u=new Date(l.getTime()-108e5);if(isNaN(u.getTime()))return console.error("Invalid scheduled_for date calculated from:",t.event_full_datetime),{success:!1,error:Error("Invalid scheduled date")};if(u<=new Date)return{success:!0};let d=`Don't forget: ${t.Name}
1 starts in 3h!`,f=(null==(o=t.event_time)?void 0:o.trim())||"Time TBA",m=(null==(a=t.event_location)?void 0:a.trim())||"Location TBA",g=`You're going to ${t.Name}! Starts at ${f} - ${m}`,v=i(`/events/${t.slug}`),{data:_,error:h}=await (0,n.NM)("notications",{recipient_id:e,title:d,content:g,url:v,is_read:!1,scheduled_for:u.toISOString()},{returning:"representation",authToken:r});if(h)return console.error("Error creating going event notification:",h),{success:!1,error:h};let w=null==_||null==(c=_[0])?void 0:c.id;return s(e,d,g,v,u,w),{success:!0}}catch(e){return console.error("Error creating going event notification:",e),{success:!1,error:e}}}async function g(e,t,r){try{let{error:r}=await n.ND.from("notications").delete().eq("recipient_id",e).like("url",`%${t}%`).eq("is_read",!1);if(r)return console.error("Error deleting event notifications:",r),{success:!1,error:r};return{success:!0}}catch(e){return console.error("Error deleting event notifications:",e),{success:!1,error:e}}}function v(e){return(null==e?void 0:e.trim())||null}async function _(e,t,r){let i=v(t);if(!i)return!1;let{data:o,error:s}=await (0,n.a6)("event",{select:"id",filters:{owner_id:`eq.${e}`,city:`neq.${i}`},limit:1,authToken:r});return s?(console.error("Error checking host cities for follower notifications:",s),!1):((null==o?void 0:o.length)??0)>0}async function h(e,t){if(0===e.length)return new Map;let{data:r,error:i}=await (0,n.a6)("profiles",{select:"id,default_location",filters:{id:`in.(${e.join(",")})`},limit:e.length,authToken:t});return i||!r?new Map:new Map(r.map(e=>[e.id,e.default_location]))}async function w(e,t,r,o){try{let{data:s,error:a}=await (0,n.a6)("profiles_followed_user",{select:"user_id",filters:{followed_user:`eq.${e}`},authToken:o});if(a)return console.error("Error fetching followers for notifications:",a),{success:!1,error:a};if(!s||0===s.length)return{success:!0,count:0};let c=v(r.city),l=null!=c&&await _(e,c,o),u=s;if(l){let e=await h(s.map(e=>e.user_id),o);if(u=s.filter(t=>(function(e,t){let r=v(t),n=v(e);return!!r&&!!n&&n.toLowerCase()===r.toLowerCase()})(e.get(t.user_id),c)),0===u.length)return{success:!0,count:0}}let d=new Date(Date.now()+3e5),f=`${t} just posted a new event!`,m=new Date(r.event_full_datetime),g=m.toLocaleDateString("en-US",{month:"long",day:"numeric",year:m.getFullYear()!==new Date().getFullYear()?"numeric":void 0}).replace(/\s+/g," "),w=r.multi_day?`${r.Name} at ${r.event_location} - several days, starting ${g}... be there!`:`${r.Name} at ${r.event_location} - ${g}... be there!`,p=i(`/events/${r.slug}`),$=new Date().toISOString(),y=u.map(e=>({recipient_id:e.user_id,title:f,content:w,url:p,is_read:!1,scheduled_for:d.toISOString(),sent_at:$})),{error:N}=await (0,n.NM)("notications",y,{returning:"minimal",authToken:o});if(N)return console.error("Error creating follower notifications:",N),{success:!1,error:N};return{success:!0,count:y.length}}catch(e){return console.error("Error creating follower notifications:",e),{success:!1,error:e}}}async function p(e,t,r,o,a){try{var c,l;let o,{data:u,error:d}=await (0,n.a6)("conversation_members",{select:"user_id,muted",filters:{conversation_id:`eq.${e}`},authToken:a});if(d||!(null==u?void 0:u.length))return{success:!0};let f=u.filter(e=>e.user_id!==t&&!e.muted).map(e=>e.user_id);if(0===f.length)return{success:!0};let{data:m,error:g}=await (0,n.a6)("profiles",{select:"username",filters:{id:`eq.${t}`},single:!0,authToken:a}),v=(null==m||null==(c=m.username)?void 0:c.trim())||"Someone";if(u.length>=3){let{data:t}=await (0,n.a6)("conversations",{select:"name",filters:{id:`eq.${e}`},single:!0,authToken:a}),r=(null==t||null==(l=t.name)?void 0:l.trim())||null;o=r?`New message in ${r}`:`New message in a group chat with ${v}`}else o=`${v} sent you a message`;let _=null!=r&&""!==r.trim()?function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:15,r=e.trim();if(!r)return r;let n=r.split(/\s+/);return n.length<=t?r:n.slice(0,t).join(" ")+"..."}(r,15):"\uD83D\uDCF7 Photo",h=i(`/messages?conversation=${e}`),w=new Date().toISOString(),p=f.map(e=>({recipient_id:e,title:o,content:_,url:h,is_read:!1,scheduled_for:w})),{data:$,error:y}=await (0,n.NM)("notications",p,{returning:"representation",authToken:a});if(y)return console.error("Error creating message notifications:",y),{success:!1,error:y};let N=new Date(w);for(let e of $??[])s(e.recipient_id,o,_,h,N,e.id);return{success:!0}}catch(e){return console.error("Error creating message notifications:",e),{success:!1,error:e}}}async function $(e,t,r,o){try{let a=(t||"Someone").trim()||"Someone",c=`${a} sent you a friend request`,l="New bestie alert?",u=i(`/friends?request=${r}`),d=new Date,f=d.toISOString(),{data:m,error:g}=await (0,n.NM)("notications",{recipient_id:e,title:c,content:l,url:u,is_read:!1,scheduled_for:f,sent_at:f},{returning:"representation",authToken:o});if(g)return console.error("Error creating friend request notification:",g),{success:!1,error:g};let v=Array.isArray(m)?m[0]:m;return(null==v?void 0:v.id)!=null&&s(e,c,l,u,d,v.id),{success:!0}}catch(e){return console.error("Error creating friend request notification:",e),{success:!1,error: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.