UNPKG

r2-explorer

Version:

A Google Drive Interface for your Cloudflare R2 Buckets

3 lines (2 loc) 6.14 kB
import{h as F,k as C,l as H,m as I,_ as M,c as A,D as _,E as w,F as E,G as m,u as Q,H as S,o as i,I as c,f as s,w as l,C as y,J as P,q as p,B as k,K as g,t as f,L as $,e as v,x as B,s as o,v as u,M as b,N as q,O as L,P as W}from"./index.97b9144c.js";var z=F({name:"QBtnGroup",props:{unelevated:Boolean,outline:Boolean,flat:Boolean,rounded:Boolean,square:Boolean,push:Boolean,stretch:Boolean,glossy:Boolean,spread:Boolean},setup(e,{slots:t}){const h=C(()=>{const n=["unelevated","outline","flat","rounded","square","push","stretch","glossy"].filter(a=>e[a]===!0).map(a=>`q-btn-group--${a}`).join(" ");return`q-btn-group row no-wrap${n.length!==0?" "+n:""}`+(e.spread===!0?" q-btn-group--spread":" inline")});return()=>H("div",{class:h.value},I(t.default))}});const N=A({name:"EmailFolderPage",data:()=>({srcdoc:null,file:null,fileHead:null,timeInterval:null,attachments:[]}),computed:{selectedBucket:function(){return this.$route.params.bucket},selectedFolder:function(){return this.$route.params.folder},selectedFile:function(){return this.$route.params.file},filePath:function(){const e=_(this.selectedFile);return`.r2-explorer/emails/${this.selectedFolder}/${e}`}},watch:{selectedBucket(e){this.$router.push({name:"email-folder",params:{bucket:e,folder:w(this.selectedFolder)}})}},methods:{timeSince:E,contentFinishedLoading(){clearInterval(this.timeInterval),this.timeInterval=null,this.resizeIframe()},resizeIframe(){this.$refs.renderWindow&&(this.$refs.renderWindow.style.height=`${this.$refs.renderWindow.contentWindow.document.documentElement.scrollHeight}px`)},fetchEmail:async function(){const e=_(this.selectedFile),t=await m.downloadFile(this.selectedBucket,this.filePath,{}),h=e.split(".json")[0];this.file=t.data;let n=t.data.html;if(n){n=n.replaceAll(/<a(.*?)>(.*?)<\/a>/gi,'<a$1 target="_blank">$2</a>');for(const a of t.data.attachments){a.display=!0,a.downloadUrl=`${this.mainStore.serverUrl}/api/buckets/${this.selectedBucket}/${w(`.r2-explorer/emails/${this.selectedFolder}/${h}/${a.filename}`)}`;let r=a.contentId;if(r){r.startsWith("<")&&r.endsWith(">")&&(r=r.substring(1,r.length-1));const d=`cid:${r}`;n.includes(d)&&(n=n.replaceAll(`cid:${r}`,a.downloadUrl),a.display=!1)}}this.srcdoc=n}this.attachments=t.data.attachments.filter(a=>a.display),m.headFile(this.selectedBucket,this.filePath).then(async a=>{a.customMetadata.read==="false"?this.fileHead=await m.updateMetadata(this.selectedBucket,this.filePath,{...a.customMetadata,read:!0}):this.fileHead=a}),setTimeout(()=>{this.contentFinishedLoading()},1e4),this.timeInterval=setInterval(()=>{this.resizeIframe()},400)},markAsUnread:async function(){this.fileHead=await m.updateMetadata(this.selectedBucket,this.filePath,{...this.fileHead.customMetadata,read:!1}),this.q.notify({group:!1,icon:"done",spinner:!1,message:"Email marked as unread!",timeout:2500})},markAsRead:async function(){this.fileHead=await m.updateMetadata(this.selectedBucket,this.filePath,{...this.fileHead.customMetadata,read:!0}),this.q.notify({group:!1,icon:"done",spinner:!1,message:"Email marked as read!",timeout:2500})},downloadAtt:e=>{console.log(e);const t=document.createElement("a");t.download=e.filename,t.href=e.downloadUrl,document.body.appendChild(t),t.click(),document.body.removeChild(t)}},created(){this.fetchEmail()},setup(){return{mainStore:Q(),q:S()}}}),U={key:0},T={class:"font-18 q-my-none"},D={class:"d-flex row"},V={class:"d-flex column"},G={class:"text-muted"},R={class:"q-ml-auto"},j={class:""},x={class:"overflow-auto d-block email-wrapper"},J=["srcdoc"],K=["innerHTML"],O={class:"row attachments"},X={key:1,class:"text-center q-my-lg"};function Y(e,t,h,n,a,r){return this.file?(i(),c("div",U,[s(y,null,{default:l(()=>[s(p,{class:"bg-grey-2 text-black",vertical:""},{default:l(()=>[s(z,{unelevated:""},{default:l(()=>[s(k,{push:"",icon:"arrow_back",to:{name:"email-folder",params:{bucket:e.$route.params.bucket,folder:e.$route.params.folder}}},{default:l(()=>[s(g,null,{default:l(()=>t[1]||(t[1]=[f("Back")])),_:1})]),_:1},8,["to"]),e.fileHead?(i(),c($,{key:0},[e.fileHead.customMetadata.read==="true"?(i(),v(k,{key:0,push:"",icon:"mark_email_unread",onClick:e.markAsUnread},{default:l(()=>[s(g,null,{default:l(()=>t[2]||(t[2]=[f("Mark email as unread")])),_:1})]),_:1},8,["onClick"])):(i(),v(k,{key:1,push:"",icon:"mark_email_read",onClick:e.markAsRead},{default:l(()=>[s(g,null,{default:l(()=>t[3]||(t[3]=[f("Mark email as read")])),_:1})]),_:1},8,["onClick"]))],64)):B("",!0)]),_:1})]),_:1}),s(p,{vertical:""},{default:l(()=>[o("h5",T,u(e.file.subject),1)]),_:1}),s(p,{horizontal:"",class:"q-px-sm"},{default:l(()=>[o("div",D,[s(b,{name:"account_circle",size:"xl",class:"q-mr-sm"}),o("div",V,[o("span",null,[f(u(e.file.from.name)+" ",1),o("small",G,"<"+u(e.file.from.address)+">",1)]),o("span",null,"to "+u(e.file.to[0].address),1)])]),o("div",R,[o("small",j,u(e.file.date)+" ("+u(e.timeSince(new Date(e.file.date)))+")",1)])]),_:1}),s(q,{vertical:""},{default:l(()=>[o("div",x,[e.srcdoc?(i(),c("iframe",{key:0,frameborder:"0",scrolling:"no",class:"w-100 d-block",onLoad:t[0]||(t[0]=(...d)=>e.contentFinishedLoading&&e.contentFinishedLoading(...d)),ref:"renderWindow",id:"renderWindow",srcdoc:e.srcdoc,sandbox:"allow-popups allow-popups-to-escape-sandbox allow-same-origin",csp:"script-src 'none'"},null,40,J)):(i(),c("div",{key:1,innerHTML:e.file.text.replaceAll(` `,"<br>")},null,8,K))])]),_:1}),e.attachments.length>0?(i(),v(q,{key:0,vertical:""},{default:l(()=>[s(L),t[4]||(t[4]=o("h6",{class:"q-my-md"},"Attachments",-1)),o("div",O,[(i(!0),c($,null,W(e.file.attachments,d=>(i(),c("div",{class:"col-md-4 col-sm-12",key:d.filename},[s(y,null,{default:l(()=>[s(p,{class:"q-pa-sm flex",style:{"align-items":"center"}},{default:l(()=>[s(b,{name:"description",size:"md",color:"blue",class:"q-mr-sm"}),f(" "+u(d.filename)+" ",1),s(k,{color:"white","text-color":"black",icon:"download",class:"q-mr-0 q-ml-auto",onClick:Z=>e.downloadAtt(d)},null,8,["onClick"])]),_:2},1024)]),_:2},1024)]))),128))])]),_:1})):B("",!0)]),_:1})])):(i(),c("div",X,[s(P,{color:"primary",size:"3em"})]))}var te=M(N,[["render",Y],["__scopeId","data-v-59368c26"]]);export{te as default};