NotificationsPage-5GOJDRkw.js 8.1 KB

1
  1. import{i as e}from"./chunk-aKtaBQYM.js";import{C as t,D as n,a as r,w as i}from"./client-BdOyoZJz.js";import{n as a}from"./QueryClientProvider-Clbyr4Jg.js";import{t as o}from"./useQuery-CCy0EwsM.js";import{t as s}from"./useMutation-qh3Iyscy.js";import{n as c}from"./ToastContext-VFOrCCoA.js";import{t as l}from"./loader-circle-CB4leTZa.js";import{i as u,n as d,t as f}from"./Card-OUAj0Ayh.js";import{t as p}from"./Button-pwVKPiYn.js";import{An as m,In as h,Ut as g,Vn as _,in as v,yt as y}from"./index-BoVbGTav.js";var b=e(n(),1),x=t();function S(){let{t:e}=i(),{user:t}=y(),{showToast:n}=c(),S=a(),C=_(),[w,T]=(0,b.useState)(!0),[E,D]=(0,b.useState)(!0),[O,k]=(0,b.useState)(!0),[A,j]=(0,b.useState)(!0),[M,N]=(0,b.useState)(!1),{data:P,isLoading:F}=o({queryKey:[`advancedAuthStatus`],queryFn:r.getAdvancedAuthStatus,staleTime:300*1e3}),{data:I,isLoading:L}=o({queryKey:[`settings`],queryFn:r.getSettings,staleTime:300*1e3}),{data:R,isLoading:z}=o({queryKey:[`user-email-preferences`],queryFn:()=>r.getUserEmailPreferences()});(0,b.useEffect)(()=>{(P&&!P.advanced_auth_enabled||I&&!I.user_notifications_enabled)&&C(`/settings`,{replace:!0})},[P,I,C]),(0,b.useEffect)(()=>{R&&(T(R.notify_print_start),D(R.notify_print_complete),k(R.notify_print_failed),j(R.notify_print_stopped),N(!1))},[R]);let B=s({mutationFn:()=>r.updateUserEmailPreferences({notify_print_start:w,notify_print_complete:E,notify_print_failed:O,notify_print_stopped:A}),onSuccess:()=>{S.invalidateQueries({queryKey:[`user-email-preferences`]}),N(!1),n(e(`notifications.userEmail.saveSuccess`),`success`)},onError:t=>{n(t.message||e(`notifications.userEmail.saveError`),`error`)}}),V=(e,t)=>{e(!t),N(!0)};return z||F||L?(0,x.jsx)(`div`,{className:`flex items-center justify-center h-64`,children:(0,x.jsx)(l,{className:`w-8 h-8 animate-spin text-bambu-green`})}):(0,x.jsxs)(`div`,{className:`p-4 md:p-6 max-w-2xl mx-auto`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3 mb-6`,children:[(0,x.jsx)(h,{className:`w-7 h-7 text-bambu-green`}),(0,x.jsx)(`h1`,{className:`text-2xl font-bold text-white`,children:e(`notifications.userEmail.title`)})]}),(0,x.jsx)(f,{className:`mb-6 border-blue-300 bg-blue-50 dark:border-blue-500/30 dark:bg-blue-500/5`,children:(0,x.jsx)(d,{className:`py-4`,children:(0,x.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,x.jsx)(`div`,{className:`w-10 h-10 rounded-full flex items-center justify-center bg-blue-100 dark:bg-blue-500/20 flex-shrink-0`,children:(0,x.jsx)(v,{className:`w-5 h-5 text-blue-600 dark:text-blue-400`})}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h3`,{className:`text-white font-medium`,children:e(`notifications.userEmail.emailNotifications`)}),(0,x.jsx)(`p`,{className:`text-sm text-bambu-gray mt-1`,children:e(`notifications.userEmail.emailNotificationsDesc`)}),t?.email?(0,x.jsxs)(`p`,{className:`text-sm text-blue-700 dark:text-blue-400 mt-2`,children:[e(`notifications.userEmail.sendingTo`),`: `,(0,x.jsx)(`strong`,{children:t.email})]}):(0,x.jsx)(`p`,{className:`text-sm text-yellow-700 dark:text-yellow-400 mt-2`,children:e(`notifications.userEmail.noEmailWarning`)})]})]})})}),(0,x.jsxs)(f,{className:`mb-6`,children:[(0,x.jsxs)(u,{children:[(0,x.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:e(`notifications.userEmail.printJobNotifications`)}),(0,x.jsx)(`p`,{className:`text-sm text-bambu-gray mt-1`,children:e(`notifications.userEmail.printJobNotificationsDesc`)})]}),(0,x.jsxs)(d,{className:`space-y-4`,children:[(0,x.jsxs)(`div`,{className:`flex items-center justify-between p-4 bg-bambu-dark rounded-lg`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsx)(`div`,{className:`w-10 h-10 rounded-full flex items-center justify-center ${w?`bg-bambu-green/20`:`bg-bambu-dark-tertiary`}`,children:(0,x.jsx)(m,{className:`w-5 h-5 ${w?`text-bambu-green`:`text-bambu-gray`}`})}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-white font-medium`,children:e(`notifications.userEmail.printJobStarts`)}),(0,x.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:e(`notifications.userEmail.printJobStartsDesc`)})]})]}),(0,x.jsx)(`button`,{onClick:()=>V(T,w),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-bambu-green focus:ring-offset-2 focus:ring-offset-bambu-dark ${w?`bg-bambu-green`:`bg-bambu-dark-tertiary`}`,role:`switch`,"aria-checked":w,children:(0,x.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${w?`translate-x-6`:`translate-x-1`}`})})]}),(0,x.jsxs)(`div`,{className:`flex items-center justify-between p-4 bg-bambu-dark rounded-lg`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsx)(`div`,{className:`w-10 h-10 rounded-full flex items-center justify-center ${E?`bg-bambu-green/20`:`bg-bambu-dark-tertiary`}`,children:(0,x.jsx)(m,{className:`w-5 h-5 ${E?`text-bambu-green`:`text-bambu-gray`}`})}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-white font-medium`,children:e(`notifications.userEmail.printJobFinishes`)}),(0,x.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:e(`notifications.userEmail.printJobFinishesDesc`)})]})]}),(0,x.jsx)(`button`,{onClick:()=>V(D,E),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-bambu-green focus:ring-offset-2 focus:ring-offset-bambu-dark ${E?`bg-bambu-green`:`bg-bambu-dark-tertiary`}`,role:`switch`,"aria-checked":E,children:(0,x.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${E?`translate-x-6`:`translate-x-1`}`})})]}),(0,x.jsxs)(`div`,{className:`flex items-center justify-between p-4 bg-bambu-dark rounded-lg`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsx)(`div`,{className:`w-10 h-10 rounded-full flex items-center justify-center ${O?`bg-bambu-green/20`:`bg-bambu-dark-tertiary`}`,children:(0,x.jsx)(m,{className:`w-5 h-5 ${O?`text-bambu-green`:`text-bambu-gray`}`})}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-white font-medium`,children:e(`notifications.userEmail.printErrors`)}),(0,x.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:e(`notifications.userEmail.printErrorsDesc`)})]})]}),(0,x.jsx)(`button`,{onClick:()=>V(k,O),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-bambu-green focus:ring-offset-2 focus:ring-offset-bambu-dark ${O?`bg-bambu-green`:`bg-bambu-dark-tertiary`}`,role:`switch`,"aria-checked":O,children:(0,x.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${O?`translate-x-6`:`translate-x-1`}`})})]}),(0,x.jsxs)(`div`,{className:`flex items-center justify-between p-4 bg-bambu-dark rounded-lg`,children:[(0,x.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,x.jsx)(`div`,{className:`w-10 h-10 rounded-full flex items-center justify-center ${A?`bg-bambu-green/20`:`bg-bambu-dark-tertiary`}`,children:(0,x.jsx)(m,{className:`w-5 h-5 ${A?`text-bambu-green`:`text-bambu-gray`}`})}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`p`,{className:`text-white font-medium`,children:e(`notifications.userEmail.printJobStops`)}),(0,x.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:e(`notifications.userEmail.printJobStopsDesc`)})]})]}),(0,x.jsx)(`button`,{onClick:()=>V(j,A),className:`relative inline-flex h-6 w-11 items-center rounded-full transition-colors focus:outline-none focus:ring-2 focus:ring-bambu-green focus:ring-offset-2 focus:ring-offset-bambu-dark ${A?`bg-bambu-green`:`bg-bambu-dark-tertiary`}`,role:`switch`,"aria-checked":A,children:(0,x.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${A?`translate-x-6`:`translate-x-1`}`})})]})]})]}),(0,x.jsx)(`div`,{className:`flex justify-end`,children:(0,x.jsx)(p,{onClick:()=>B.mutate(),disabled:!M||B.isPending||!t?.email,children:B.isPending?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(l,{className:`w-4 h-4 animate-spin`}),e(`common.saving`)]}):(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(g,{className:`w-4 h-4`}),e(`common.save`)]})})})]})}export{S as NotificationsPage};