1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[289],{3672:function(e,a,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/ads",function(){return n(2447)}])},5833:function(e,a,n){"use strict";var t=n(5893),i=n(7385),s=n(9008),d=n.n(s),r=n(1664),o=n.n(r),_=n(1163),l=n(7294),c=n(3219),m=n(9587),u=n(3013),h=n.n(u),g=n(7441);let f=[{href:"/admin/events",label:"Events"},{href:"/admin/places",label:"Locations"},{href:"/admin/users",label:"Users"},{href:"/admin/ads",label:"Ad manager"},{href:"/admin/files",label:"File manager"}],b="";a.Z=e=>{let{children:a}=e,n=(0,_.useRouter)(),[s,r]=(0,l.useState)(b?"ok":"loading"),[u,v]=(0,l.useState)(b),p=f.find(e=>e.href===n.pathname),x=p?"".concat(p.label," \xb7 Curate LA Admin"):"Curate LA Admin",w=(0,t.jsxs)(d(),{children:[(0,t.jsx)("title",{children:x}),(0,t.jsx)("meta",{name:"robots",content:"noindex"})]});return((0,l.useEffect)(()=>{let e=(0,i.Aj)(m.I,e=>{if(!e){b="",n.push("/sign-in?redirect=".concat(encodeURIComponent(window.location.pathname)));return}b||(0,c.OV)("/api/admin/me").then(e=>{b=e.email,v(e.email),r("ok")}).catch(()=>{r("denied")})});return()=>e()},[]),"loading"===s)?(0,t.jsx)("div",{className:h().notice,children:w}):"denied"===s?(0,t.jsxs)("div",{className:h().notice,children:[w,(0,t.jsx)("h1",{children:"Not authorized"}),(0,t.jsxs)("p",{children:["This account doesn't have access to the admin panel. Try"," ",(0,t.jsx)(o(),{href:"/sign-out",children:"signing out"})," and signing back in with an admin account."]})]}):(0,t.jsxs)("div",{className:h().container,children:[w,(0,t.jsxs)("div",{className:h().heading,children:[(0,t.jsx)("h1",{children:"Admin"}),(0,t.jsxs)("span",{className:h().signedInAs,children:[(0,t.jsx)("span",{className:h().envBadgeProd,children:"PROD DB"}),u," \xb7 ",(0,t.jsx)(o(),{href:"/sign-out",children:"Sign out"})]})]}),(0,t.jsx)("nav",{className:h().tabs,children:f.map(e=>(0,t.jsx)(o(),{href:e.href,className:n.pathname===e.href?h().tabActive:h().tab,children:e.label},e.href))}),a,(0,t.jsx)(g.x,{})]})}},7441:function(e,a,n){"use strict";n.d(a,{A:function(){return toast},x:function(){return Toaster}});var t=n(5893),i=n(7294),s=n(3013),d=n.n(s);let r=0,o=null;function toast(e){null==o||o(e)}function Toaster(){let[e,a]=(0,i.useState)([]);return((0,i.useEffect)(()=>(o=e=>{let n=++r;a(a=>[...a,{id:n,message:e}]),setTimeout(()=>{a(e=>e.filter(e=>e.id!==n))},2500)},()=>{o=null}),[]),0===e.length)?null:(0,t.jsx)("div",{className:d().toaster,children:e.map(e=>(0,t.jsx)("div",{className:d().toast,children:e.message},e.id))})}},3219:function(e,a,n){"use strict";n.d(a,{OV:function(){return adminFetcher},Wt:function(){return adminPost},fy:function(){return adminPostForm}});var t=n(9587);async function getToken(){let e=t.I.currentUser;if(!e)throw Error("Not signed in");return e.getIdToken()}async function parseResponse(e){if(403===e.status){let e=Error("Forbidden");throw e.forbidden=!0,e}let a=await e.json().catch(()=>null);if(!e.ok)throw Error((null==a?void 0:a.error)||e.statusText);return a}async function adminFetcher(e){let a=await fetch(e,{headers:{Authorization:"Bearer ".concat(await getToken())}});
1return parseResponse(a)}async function adminPost(e,a){let n=await fetch(e,{method:"POST",headers:{Authorization:"Bearer ".concat(await getToken()),"Content-Type":"application/json"},body:JSON.stringify(a)});return parseResponse(n)}async function adminPostForm(e,a){let n=await fetch(e,{method:"POST",headers:{Authorization:"Bearer ".concat(await getToken())},body:a});return parseResponse(n)}},2447:function(e,a,n){"use strict";n.r(a);var t=n(5893),i=n(7294),s=n(653),d=n(2515),r=n(5833),o=n(7441),_=n(3219),l=n(3013),c=n.n(l);a.default=()=>{let{data:e,mutate:a}=(0,d.ZP)("/api/admin/settings",_.OV),[n,l]=(0,i.useState)(""),[m,u]=(0,i.useState)(!1),[h,g]=(0,i.useState)(!1),[f,b]=(0,i.useState)(null);(0,i.useEffect)(()=>{e&&!m&&(l(e.ad_html||""),u(!0))},[e,m]);let handleSave=async()=>{g(!0),b(null);try{await (0,_.Wt)("/api/admin/settings",{ad_html:n}),(0,o.A)("Ads HTML saved"),a()}catch(e){b({ok:!1,text:e.message||"There was an error saving."})}finally{g(!1)}};return(0,t.jsxs)(r.Z,{children:[(0,t.jsx)("p",{className:c().signedInAs,children:"This HTML renders in the ad slot on the curate.la homepage. Upload ad images in the File manager tab, then reference their URLs here."}),(0,t.jsx)("div",{className:c().sectionLabel,children:"Ads HTML"}),(0,t.jsx)("textarea",{className:c().adsTextarea,value:n,onChange:e=>l(e.target.value),disabled:!m}),f&&(0,t.jsx)("p",{className:f.ok?c().formSuccess:c().formError,children:f.text}),(0,t.jsxs)("div",{className:c().modalFooter,children:[(0,t.jsx)("span",{}),(0,t.jsx)("button",{className:"button",onClick:handleSave,disabled:h||!m,children:h?"Savingâ¦":"Save changes"})]}),(0,t.jsx)("div",{className:c().sectionLabel,children:"Preview"}),(0,t.jsx)("div",{className:c().adsPreview,children:(0,s.ZP)(n)})]})}},3013:function(e){e.exports={container:"admin_container__r8zkc",heading:"admin_heading__nkcgf",signedInAs:"admin_signedInAs__ap0I1",envBadge:"admin_envBadge__NhNAO",envBadgeDev:"admin_envBadgeDev__chtNP admin_envBadge__NhNAO",envBadgeProd:"admin_envBadgeProd__2gUoR admin_envBadge__NhNAO",ownerLink:"admin_ownerLink__hPp6Y",tabs:"admin_tabs__4NJro",tab:"admin_tab__U0wH3",tabActive:"admin_tabActive__HnBeg admin_tab__U0wH3",select:"admin_select__EDkrW",filterBar:"admin_filterBar__Ji6JJ",resultCount:"admin_resultCount__ktIur",tableWrap:"admin_tableWrap__01EY4",table:"admin_table__H1olM",wrapCell:"admin_wrapCell__XjalG",sortable:"admin_sortable__C9HnD",loadingRow:"admin_loadingRow__PbvvA",thumb:"admin_thumb__dX926",badge:"admin_badge__xRMu2",badgePending:"admin_badgePending__npBI4 admin_badge__xRMu2",badgePublished:"admin_badgePublished__HmWTx admin_badge__xRMu2",badgeRejected:"admin_badgeRejected__IJ5T_ admin_badge__xRMu2",rowActions:"admin_rowActions__mL3Et",actionButton:"admin_actionButton__KNJJh",approveButton:"admin_approveButton__PagI0 admin_actionButton__KNJJh",rejectButton:"admin_rejectButton__XhPFa admin_actionButton__KNJJh",pagination:"admin_pagination__M1iWV",modalOverlay:"admin_modalOverlay__CsINe",modal:"admin_modal__w7jP7",modalClose:"admin_modalClose__2REni",formRow:"admin_formRow__N5Tnw",inlineFields:"admin_inlineFields__qMvjx",readOnly:"admin_readOnly__SNVC4",modalFooter:"admin_modalFooter__p8O9s",formError:"admin_formError__EvMnn",formSuccess:"admin_formSuccess__i1Cyo",minimap:"admin_minimap__7vmN7",imageSection:"admin_imageSection__0LXzh",imagePreview:"admin_imagePreview__6qj_M",notice:"admin_notice__KhNVQ",adsTextarea:"admin_adsTextarea__0OHoE",adsPreview:"admin_adsPreview__Nd5Mu",sectionLabel:"admin_sectionLabel__yP_w1",toaster:"admin_toaster__ZIfk9",toast:"admin_toast__Scq4g",toastIn:"admin_toastIn__9GKGw",uploadRow:"admin_uploadRow__uMe2_"}},247:function(){}},function(e){e.O(0,[515,653,774,888,179],function(){return e(e.s=3672)}),_N_E=e.O()}]);
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.