PageSourceSearch

https://grouptrack-next.web.app/assets/new-queue-BTlIICXf.js

js grouptrack-next.web.app collected 2026-10-03 12:25:25 UTC 32,337 bytes, 9 lines download raw bytes

1import{Q as K}from"./QTooltip-CtdUCaRU.js";import{d as He,u as Fe,al as We,ak as Oe,c as Qe,r as m,aj as w,w as X,o as Ke,m as Ve,ap as s,a9 as je,E as z,q as _,x as i,f as d,B as me,ae as ye,z as le,G as p,Q as V,v as S,ab as _e,A as ue,ao as $e,D as H,y as F,p as xe,aa as Je,L as Xe}from"./index-DjfbnMER.js";import{a as ce,b as Z,Q as j}from"./QItem-BUmo2ift.js";import{Q as Ze}from"./QList-DGOtKMil.js";import{o as ea}from"./extensionAutomationHandler-Ci00lqMP.js";import{useTour as Ye}from"./shepherd-DE1i6rqC.js";import"./position-engine-eIHPEN8K.js";import"./selection-BP-5_BTM.js";const aa={class:"row"},ta={class:"col-lg-6 col-md-6 col-sm-6 col-xs-12"},sa={style:{"font-size":"0.75em"}},la={key:2,class:"q-pt-none text-primary text-bold"},ua=["innerHTML"],oa={class:"col-lg-6 col-md-6 col-sm-6 col-xs-12 q-pr-md"},ra={id:"tour-current-queue-status-label"},na={id:"tour-current-queue-status-text",style:{display:"block","font-size":"12px",float:"right",position:"relative",top:"2px"}},ia={key:0,class:"q-pt-sm text-bold text-negative"},da={class:"q-mt-lg"},va={id:"tour-queue-start-stop",style:{},class:"q-mr-lg"},$a=He({__name:"new-queue",setup(ga){const e=Fe(),W=We(),fe=Oe(),u=Qe(()=>ve(String(fe.params.platform))),B=m(null);B.value=w.ID.generatePushID("q-worker");const h=m(null),U=m(null),Ue=m(null),D=m(null),k=m(null),g=m(!1),ee=m(null),n=m(null),ae=m(0),oe=m(!0),v=m(),l=m(),q=m(!1),y=m(!1),re=m(null),qe=m(0),ne=m(0),pe=[],T=m(null),$=m(null),M=m(0),Y=m(null),he=m(!1),L=m(null),ke=m(0);function Ie(){return e.$state.extensionStatusChecked?Promise.resolve():new Promise(r=>{const a=X(()=>e.$state.extensionStatusChecked,t=>{t&&(a(),r())},{immediate:!0})})}function Le(){return Y.value&&(Y.value.clear(),Y.value=null),new Promise(r=>{Y.value=w.Timing._setInterval(()=>{if(M.value--,M.value<=0)return he.value=!0,Y.value.clear(),M.value=0,O(),r()},1e3)})}async function te(r=!1){if(!e.$state.loggedUserData?.uid){console.error("Cannot update worker data: User not logged in."),g.value=!1,b();return}const a=`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.$state.loggedUserData.uid}`,t=25e3;let o;if(r)console.log(`Releasing queue claim for worker: ${B.value}`),o={workerID:null,status:"idle",staleBy:0,releasedAt:s().toISOString(),lastKeepAlive:null};else{const c=s().valueOf();o={workerID:B.value,status:"running",staleBy:c+t,lastKeepAlive:c}}try{return await e.genericCUD([{path:a,data:o}],"team","update"),!0}catch(c){return console.error("Failed to update worker data in DB:",c),r||(g.value=!1,b(),console.warn("Relinquished queue ownership due to DB update failure.")),!1}}function b(){ee.value&&(ee.value.clear(),ee.value=null),L.value&&(L.value.clear(),L.value=null)}function De(){if(b(),!g.value)return;te(!1);const r=2e4;ee.value=w.Timing._setInterval(async()=>{try{g.value?await te(!1)||(g.value=!1,b()):b()}catch(a){console.error("Keep-alive error",a),b()}},r)}async function Te(r=!1){if(!(g.value&&ee.value)){n.value&&(n.value.clear(),n.value=null);try{const{data:a,error:t}=await e.getMessageQueueWorker(u.value.toLowerCase());t.value&&console.error("Error reading worker slot before claiming:",t.value);const o=s().valueOf(),c=a.value||{},x=!c.workerID||!c.staleBy||c.staleBy<=o,E=c.workerID===B.value;if(!x&&!E&&!r){g.value=!1;const Q=Math.max(1e3,(c.staleBy||o)-o)+w.Numbers.randomBetween(1e3,3e3);M.value=Math.floor(Q/1e3),Le(),n.value=w.Timing._setTimeout(()=>{O()},Q);return}if(!x&&!E&&r&&(console.log("Forcing queue claim from another worker:",c.workerID),await e.genericCUD([{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.$state.loggedUserData.uid}/stopProcessingHere`,data:!0}
1],"team","update"),await new Promise(Q=>setTimeout(Q,2e3)),await e.genericCUD([{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.$state.loggedUserData.uid}/stopProcessingHere`,data:null}],"team","update")),!await te(!1)){g.value=!1;return}const{data:C}=await e.getMessageQueueWorker(u.value.toLowerCase()),P=C.value||{},N=s().valueOf();if(P.workerID===B.value&&P.staleBy&&P.staleBy>N){g.value=!0,De(),console.log("Queue claimed successfully by worker:",B.value),await de();let Q=[{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.$state.loggedUserData.uid}/nextSendTime`,data:v.value??null}],ie=[{path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/extendedBreakReason/${e.$state.loggedUserData.teamUID}`,data:T.value??null},{path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/autoPauseReason/${e.$state.loggedUserData.teamUID}`,data:$.value??null}];await e.genericCUD(Q,"team","update"),await e.genericCUD(ie,"user","update"),R()}else g.value=!1,b()}catch(a){console.error("claimAndStartProcessing error",a),g.value=!1,b()}}}async function O(){if(k.value&&(k.value(),k.value=null),!e.$state.loggedUserData?.uid){console.warn("User data not available, cannot coordinate queue yet. Will retry if user data becomes available via rootStore watch.");return}const{data:r,error:a}=await e.getMessageQueueWorker(u.value.toLowerCase());if(a.value){console.error("Error getting Message Queue Worker Status from DB:",a.value);return}k.value=X(r,t=>{if(!e.$state.loggedUserData?.uid){console.warn("User data became unavailable during watch, stopping coordination."),g.value=!1,b(),n.value&&n.value.clear();return}if(D.value=t,t?.stopProcessingHere===!0&&t?.workerID===B.value&&g.value){console.log("Received stop signal. Releasing queue ownership."),g.value=!1,b(),n.value&&(n.value.clear(),n.value=null),te(!0);return}const o=s().clone().unix()*1e3;if(!t||!t.workerID||t.status!=="running"||t.staleBy<=o)g.value&&t?.workerID===B.value&&t?.staleBy&&t.staleBy>o?De():Te();else if(t.workerID!==B.value){g.value=!1,b();const c=Math.max(0,t.staleBy-o)+w.Numbers.randomBetween(1e3,3e3);M.value=0,he.value=!0,Y.value&&(Y.value.clear(),Y.value=null),n.value&&n.value.clear(),n.value=w.Timing._setTimeout(()=>{O()},c)}else g.value||(g.value=!0),n.value&&(n.value.clear(),n.value=null),ee.value||De()},{immediate:!0})}async function Se(r){let a=[{path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/status/${e.$state.loggedUserData.teamUID}`,data:ve(r)}];if(await e.genericCUD(a,"user","update"),h.value=ve(r),$.value=null,ve(r)==="Active")try{const t=s().format("YYYY-MM-DD hh:mm:ss A"),o=v.value?s(v.value,"YYYY-MM-DD hh:mm:ss A"):null;(!v.value||o&&o.isBefore(s()))&&(v.value=t,g.value?(await e.genericCUD([{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.$state.loggedUserData.uid}/nextSendTime`,data:v.value}],"team","update"),R()):O())}catch(t){console.error("toggleQueue activation helper error",t)}}async function de(r=!1){let a=[],t=[];if(D.value&&(v.value=D.value?.nextSendTime??"n/a",v.value?.length<10&&v.value?.length>3)){let f=s(v.value,"hh:mm:ss A"),I=null,we=s().clone();f.isBefore(we)?I=we.add(1,"day").format("YYYY-MM-DD")+" "+f.format("hh:mm:ss A"):I=we.format("YYYY-MM-DD")+" "+f.format("hh:mm:ss A"),v.value=s(I).format("YYYY-MM-DD hh:mm:ss A")}if(v.value==="n/a"&&!r)return v.value=s().format("YYYY-MM-DD hh:mm:ss A"),D.value&&(D.value.nextSendTime=v.value),g.value===!0&&(a.push({path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.loggedUserData.uid}/nextSendTime`,data:v.value}),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/statusSubText/${e.$state.loggedUserData.teamUID}`,data:$.value??T.value??null}),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/extendedBreakReason/${e.$state.loggedUserData.teamUID}`,data:T.value??null}),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/autoPauseReason/${e.$state.loggedUserData.teamUID}`,data:$.value??null})),await e.genericCUD(t,"user","update"),await e.genericCUD(a,"team","update"),0;if(v.value&&s(v.value).isAfter(s()))return console.log("Next send time is in the future. Waiting until then."),s(v.value,"YYYY-MM-DD hh:mm:ss A").diff(s(),"seconds");T.value=null,$.value=null;let o=s().clone(),c=w.Numbers.randomBetween(U.value.breakForRange.minBreak??U.value.breakForRange.minDelay,U.value.breakForRange.maxBreak??U.value.breakForRange.maxDelay),x=w.Numbers.randomBetween(U.value.breakEveryRange.minBreak??U.value.breakEveryRange.minDelay,U.value.breakEveryRange.maxBreak??U.value.breakEveryRange.maxDelay),E=w.Numbers.randomBetween(U.value.delayRange.minDelay,U.value.delayRange.maxDelay),A=D.value?.nextBreak;A&&s(A).isAfter(s())?A=s(D.value?.nextBreak).format():A=s().add(x,"milliseconds").format(),a.push({path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.loggedUserData.uid}/nextBreak`,data:A});let C=U.value.failureTolerance,P=U.value.maxMessagesPerDay,N=U.value.workingHours.startTime,Q=U.value.workingHours.endTime;var ie=await e.indexSearch({from:0,size:0},{key:"sentAt",order:"desc"}
1,{operator:"AND",filters:[{condition:"is",isExact:!0,indexPath:"type",value:"message"},{condition:"is",isExact:!0,indexPath:"status",value:"sent"},{condition:"is",isExact:!0,indexPath:"action",value:"queue"},{condition:"after",indexPath:"sentAt",value:e.$state.loggedUserData?.messageQueueSettings?.resetAtMidnight?s().subtract(1,"days").endOf("day").format():s().subtract(24,"hours").format()},{condition:"is",isExact:!0,indexPath:"platform",value:u.value.toLowerCase()},{isExact:null,condition:"is",value:e.$state.loggedUserData.uid,indexPath:"createdByUID"}]},"activities",!1);let Ae=ie?.data?.totalHits??0,G=s(N,"hh:mm A"),J=s(Q,"hh:mm A");G.set({year:o.year(),month:o.month(),date:o.date()}),J.set({year:o.year(),month:o.month(),date:o.date()}),w.Timing.is_between_hours(o,N,Q)?Ae>=P?(console.log("Max messages per day reached. Waiting 1 hour to check again."),T.value="Daily Limit Sent!<br />Waiting 1 hour.",v.value=o.clone().add(1,"hour").format("YYYY-MM-DD hh:mm:ss A")):ne.value>=C?(console.log("Max failures per session reached. Pausing the queue."),$.value="Max Failures Reached",t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/status/${e.$state.loggedUserData.teamUID}`,data:"Paused"})):s(A).add(1,"second").isBefore(o)?(console.log("Taking a break for "+Math.floor(c/1e3/60)+" minutes."),T.value="I'm taking a "+Math.floor(c/1e3/60)+" minute break!",oe.value?v.value=o.clone().subtract(10,"seconds").format("YYYY-MM-DD hh:mm:ss A"):v.value=o.clone().add(c,"milliseconds").format("YYYY-MM-DD hh:mm:ss A")):(console.log("Sending next message in "+Math.floor(E/1e3)+" seconds."),oe.value?v.value=o.clone().subtract(10,"seconds").format("YYYY-MM-DD hh:mm:ss A"):v.value=o.clone().add(E,"milliseconds").format("YYYY-MM-DD hh:mm:ss A")):(console.log("Outside of working hours. Waiting until "+N),T.value="Outside Working Hours!",o.isBefore(G)?v.value=G.format("YYYY-MM-DD hh:mm:ss A"):v.value=G.add(1,"day").format("YYYY-MM-DD hh:mm:ss A")),await Ie(),e.$state.extensionStatus?.loggedIn||(e.$state.extensionStatus?.version?($.value="Extension not logged in",T.value=null):($.value="Extension not installed",T.value=null),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/status/${e.$state.loggedUserData.teamUID}`,data:"Paused"}));let ge=0;return s(v.value).isAfter(o)&&(ge=s(v.value,"YYYY-MM-DD hh:mm:ss A").diff(o,"seconds")),v.value=s(v.value,"YYYY-MM-DD hh:mm:ss A").format("YYYY-MM-DD hh:mm:ss A"),g.value===!0&&(a.push({path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.loggedUserData.uid}/nextSendTime`,data:v.value}),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/statusSubText/${e.$state.loggedUserData.teamUID}`,data:$.value??T.value??null}),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/extendedBreakReason/${e.$state.loggedUserData.teamUID}`,data:T.value??null}),t.push({path:`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}/autoPauseReason/${e.$state.loggedUserData.teamUID}`,data:$.value??null})),await e.genericCUD(t,"user","update"),await e.genericCUD(a,"team","update"),$.value&&(console.log("Queue has been Paused. Stopping processing."),k.value&&(k.value(),k.value=null),n.value&&(n.value.clear(),n.value=null),Y.value&&(Y.value.clear(),Y.value=null),b()),ge}async function Pe(){let r="";h.value==="Paused"?r+="The Queue is currently Paused<br><br>It is not running anywhere right now":(r+=`
2      Status: <b>${M.value?"Waiting "+M.value+" seconds to "+(g.value?"start":"check again"):D.value?.status??"n/a"}</b><br>
3    `,M.value?M.value&&(r+=`<br><i><b>What is this?</b> An Active Queue Worker (the actual device running the Queue) "checks in" every 50 seconds or so to maintain control of the Queue. If it fails to check in within a minute, it is deemed to be dead and the Queue is available for any other Worker to claim.<br><br>
4      This initial pause when starting the Queue on this device allows any other Queue Workers to expire if they are not in fact active.</i>`):r+=`Failed Since Last Start: <b>${D.value?.failedThisSession??"n/a"}</b><br>
5        Next Scheduled Send Time: <br>
6        <div style="margin-left:30px; font-weight:bold;">${s(D.value?.nextSendTime).format("yyyy/MM/DD @ hh:mm:ss A")??"n/a"}</div>${g.value?"<div>This device <b>IS</b> the active worker.</div>":'<div>This device <b>IS NOT</b> the active worker.</div><div style="margin-left:30px; font-weight:bold;"><b>Another device is managing the Queue.</b> If you would like to force the Queue to run on THIS device, click the <q-icon name="mdi-open-in-new"/> icon.</div>'}
7        Worker Stale By: <i><small>(Must "check in" by this time to keep control. Set 1 minute after last "proof of life".)</small></i><br>
8        <div style="margin-left:30px; font-weight:bold;">${s(D.value?.staleBy).format("yyyy/MM/DD @ hh:mm:ss A")??"n/a"}</div>
9      `),W.dialog({fullWidth:!0,message:r,html:!0,ok:!1,style:"z-index:999999"})}async function Be(){W.dialog({title:"Force Queue to Run Here?",message:"This will force the Queue to run on this device, even if it is currently running elsewhere. If another device is currently handling the Queue, it will stop being processed there. Are you sure you want to do this?",persistent:!0,ok:{label:"Yes, Force It"},cancel:{class:"custom-dialog-cancel-btn flat",label:"No, Cancel"}}).onOk(async()=>{console.log("Force Queue to run here."),k.value&&(k.value(),k.value=null),oe.value=!0,await Te(!0),O()}).onCancel(()=>{console.log("User cancelled the force queue action.")})}async function be(r=!1){var a=await e.indexSearch({from:0,size:r?1:0},[{key:"prioritizedAt",order:"desc"},{key:"createdAt",order:"asc"}
9],{operator:"AND",filters:[{condition:"is",isExact:!0,indexPath:"type",value:"message"},{condition:"is",isExact:!0,indexPath:"status",value:"queued"},{condition:"is",isExact:!0,indexPath:"platform",value:u.value.toLowerCase()},{isExact:null,condition:"is",value:e.$state.loggedUserData.uid,indexPath:"createdByUID"},{condition:"hasNot",isExact:!0,treatAsID:!0,indexPath:"_id",value:pe}]},"activities",!1);return ae.value=a.data.totalHits,a}async function R(){if(!g.value){console.log("Queue is not owned by this worker."),n.value&&(n.value.clear(),n.value=null),n.value=w.Timing._setTimeout(()=>{O()},100);return}if(await Ie(),h.value!=="Active"||!e.$state.extensionStatus?.loggedIn){e.$state.extensionStatus?.loggedIn?console.log("Queue is not currently Active."):e.$state.extensionStatus?.version?$.value="Extension not logged in":$.value="Extension not installed";return}let r=await Xe.sendMessage("check_for_tab",{tabUrl:[u.value.toLowerCase(),"gt-from-queue"]},"background"),a=s().clone();if(q.value||y.value||r?.data?.status==="success"||a.isBefore(v.value)){q.value=!1,y.value=!1,console.log("Another message is currently being sent. Waiting 10 seconds to check again."),n.value&&(n.value.clear(),n.value=null),n.value=w.Timing._setTimeout(R,1e4);return}q.value=!0,T.value=null,$.value=null,console.log("Processing next message for "+u.value),oe.value&&await de(),oe.value=!1,(T.value||$.value)&&await e.userDataCUD(e.$state.loggedUserData.uid,null,`messageQueueSettings/${u.value.toLowerCase()}/lastMessageAttempt`),v.value==="n/a"&&(v.value=s().format("YYYY-MM-DD hh:mm:ss A"));let t=s(v.value,"YYYY-MM-DD hh:mm:ss A").diff(s(),"milliseconds");if(t>0){q.value=!1,y.value=!1,console.log("Waiting for "+t+" milliseconds"),n.value&&(n.value.clear(),n.value=null),n.value=w.Timing._setTimeout(R,t);return}var o=await be(!0);if(console.log("Queue Response:",o),ae.value===0){await e.userDataCUD(e.$state.loggedUserData.uid,null,`messageQueueSettings/${u.value.toLowerCase()}/lastMessageAttempt`),q.value=!1,y.value=!1;let f=await de();n.value&&(n.value.clear(),n.value=null),n.value=w.Timing._setTimeout(R,f*1e3);return}l.value=o.data.hits[0];let c=null,x=null;if(y.value=!0,l.value?.snippetUID){const{data:f,error:I}=await e.getGeneric(`teams/${e.$state.loggedUserData.teamUID}/snippets/${l.value.snippetUID}`,"team","once","object");if(I.value){console.error("Error getting snippet data",I.value),q.value=!1,y.value=!1;return}c=f.value}if(l.value?.GTID){const{data:f,error:I}=await e.getGeneric(`members/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/sources/${u.value.toLowerCase()}`,"team","once","object");if(I.value){console.error("Error getting contact social source data",I.value),q.value=!1,y.value=!1;return}x=f.value}let E=null;if(l.value?.separateMessages){const{data:f,error:I}=await e.getGeneric(`msgQueue/${e.$state.loggedUserData.uid}/${u.value.toLowerCase()}/messageQueue/${l.value?.messageKey}/messageSegments`,"user","once","array");I.value?console.error("Error getting message segments",I.value):E=f.value}let A={GTID:l.value.GTID,hasAttachment:c?.hasAttachment??null,taskUID:l.value?.taskUID??null,memberName:l.value.messageRecipient,separateMessages:E?.length>0?l.value?.separateMessages??null:null,delayBetweenMessages:l.value?.delayBetweenMessages??null,simulateTyping:l.value?.simulateTyping??null,messageSegments:E,message:l.value?.note??null,applyGlobalTag:c?.applyGlobalTag??null,order:0,platform:u.value.toLowerCase(),teamUID:e.$state.loggedUserData.teamUID,snippetPath:`${e.$state.loggedUserData.teamUID}/snippets/${l.value?.snippetUID}`,dmThreadID:x?.dmThreadID?.toString()??x?.dmThreadKey?.toString()??x?.fbDMThreadKey?.toString()??null,userID:x?.userID??null,username:x?.username??null};e.$state.loggedUserData.messageQueueSettings?.[u.value.toLowerCase()]?.lastMessageAttempt?.GTID===l.value.GTID?console.warn("Message may be looping in the queue."):await e.userDataCUD(e.$state.loggedUserData.uid,{GTID:l.value.GTID,name:l.value.messageRecipient??null,sentAt:s().format()},`messageQueueSettings/${u.value.toLowerCase()}/lastMessageAttempt`),await e.userDataCUD(e.$state.loggedUserData.uid,A,`currentQueuedMessage/${u.value.toLowerCase()}`);let C=A.dmThreadID;if(!C&&!A.userID&&!A.username){console.error("No DM Thread ID or User ID or Username found for this message. C
9ontact is not set with this Source. Failing the message and sending the next one immediately.");let f={failedAt:s().format(),sentAt:s().format(),status:"failed",reasonText:"Contact does not have any source data for "+u.value,reasonCode:"MISSING_CONTACT_IDENTIFICATION"};f={...f,GTID:l.value.GTID,action:l.value.action??"queue",activityUID:l.value.activityUID??null,createdAt:l.value.createdAt?s(l.value.createdAt).format():s().format(),createdAtUnix:l.value.createdAt?s(l.value.createdAt).unix():s().unix(),createdBy:l.value.createdBy??e.$state.loggedUserData.displayName,createdByUID:l.value.createdByUID??e.$state.loggedUserData.uid,messageKey:l.value.messageKey??null,messageRecipient:l.value.messageRecipient??null,note:l.value.note??null,platform:l.value.platform??u.value.toLowerCase(),queuedTo:l.value.queuedTo??null,queuedToUID:l.value.queuedToUID??null,type:l.value.type??"message"};let I=[{path:`activities/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/${l.value.activityUID}`,data:f}];await e.genericCUD(I,"team","update"),ae.value--,q.value=!1,y.value=!1,R();return}let P="";if(u.value.toLowerCase()==="facebook"&&C&&C.toString()?.length!==16){let f=[];f.push({path:`members/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/sources/facebook/dmThreadID`,data:null}),f.push({path:`members/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/sources/facebook/dmThreadKey`,data:null}),await e.genericCUD(f,"team","set")}let N="&gt-from-queue";if(u.value.toLowerCase()==="facebook"){if(C?.value&&x?.toString()===C?.value?.toString()){x=null;let f=[];f.push({path:`members/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/sources/facebook/userID`,data:null}),await e.genericCUD(f,"team","set")}P=`https://www.facebook.com/${x?.username??x?.userID}?gt-send-message&gt-send-via-profile${N}`}else u.value.toLowerCase()==="instagram"&&C?P=`https://www.instagram.com/direct/t/${C}?gt-send-message${N}`:u.value.toLowerCase()==="instagram"&&!C&&(P=`https://www.instagram.com${x?.username?"/"+x.username:""}?gt-send-message&gt-send-via-profile${N}`);let Q=!1;L.value&&(L.value.clear(),L.value=null),L.value=w.Timing._setTimeout(async()=>{if(!Q){console.error("Message sending attempt timed out. Moving to next message.");let f={failedAt:s().format(),sentAt:s().format(),status:"failed",reasonText:"Message sending attempt timed out. Moving to next message.",reasonCode:"TIMEOUT"};ne.value++,pe.push(`${e.$state.loggedUserData.teamUID}_${l.value.activityUID}_${l.value.GTID}`);let I=[{path:`activities/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/${l.value.activityUID}`,data:f},{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.loggedUserData.uid}/failedThisSession`,data:ne.value}];await e.genericCUD(I,"team","update"),q.value=!1,y.value=!1,R()}},3*60*1e3);let ie=!1;console.log("Opening a tab to send a message.");const{data:Ae,error:G}=await ea(ie,P,"send-message",l.value.activityUID,"Sending Message to "+l.value.messageRecipient,"Message Sent Successfully","mdi-send-check-outline","Error Sending Message",!1,e);console.log("Message has finished sending."),q.value=!1,y.value=!1,Q=!0,L.value&&(L.value.clear(),L.value=null);let J={sentAt:s().format(),status:"sent"};G?(console.error("Error sending message",G),ne.value++,pe.push(`${e.$state.loggedUserData.teamUID}_${l.value.activityUID}_${l.value.GTID}`),J.status="failed",J.failedAt=s().format(),J.reasonText=G.message??"Unknown failure reason",J.reasonCode=G.code??null):qe.value++;let Ce=[{path:`activities/${e.$state.loggedUserData.teamUID}/${l.value.GTID}/${l.value.activityUID}`,data:J},{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.loggedUserData.uid}/failedThisSession`,data:ne.value}];await e.genericCUD(Ce,"team","update"),ae.value--;let ge=await de();n.value&&(n.value.clear(),n.value=null),n.value=w.Timing._setTimeout(R,ge*1e3)}function Re(){window.open("/messages/queued","_blank")}function Ee(){window.open(`/setup/queue/${u.value.toLowerCase()}`,"_blank")}async function Ne(){let r=[{path:`teams/${e.$state.loggedUserData.teamUID}/workers/messageQueue/${u.value.toLowerCase()}/${e.$state.loggedUserData.uid}`,data:null}];await e.genericCUD(r,"team","update"),window.location.reload()}let se=null;const Me=()=>{const r=s(v.value,"YYYY-MM-DD hh:mm:ss A"),a=s();
9!y.value&&(a.isAfter(r)||a.isSame(r))&&a.diff(r,"seconds")>0?(re.value="timeError",se.clear()):re.value=null;try{if(v.value&&!y.value){const t=Date.now(),o=s(v.value,"YYYY-MM-DD hh:mm:ss A");t>=o.valueOf()&&t-ke.value>5e3&&(ke.value=t,g.value?R():O())}}catch(t){console.error("checkTimePassed watchdog error",t)}};X(v,()=>{se.clear(),se=w.Timing._setInterval(Me,1e3)}),X(re,()=>{e.updateQueueStatus(String(fe.params.platform),{queueIssue:y.value?"null":re.value,queueLocation:g.value?"here":"there"})}),X(g,()=>{e.updateQueueStatus(String(fe.params.platform),{queueIssue:y.value?"null":re.value,queueLocation:g.value?"here":"there"})}),Ke(()=>{X(()=>e.$state.loggedUserData?.uid,async(r,a)=>{if(r&&!a){if(console.log("Logged User Data:",e.$state.loggedUserData),console.log("Platform Name:",u.value),!Ue.value){const{data:t,error:o}=await e.getGeneric(`users/${e.$state.loggedUserData.uid}/messageQueueSettings/${u.value.toLowerCase()}`,"user","ref","object");if(o.value){console.error("Error getting Message Queue Settings",o.value);return}Ue.value=X(t,async c=>{c&&(console.log("Message Queue Settings Updated:",c),U.value=t.value,h.value=U.value?.status?.[e.$state.loggedUserData?.teamUID],O())},{immediate:!0})}}else!r&&a&&(console.log("User logged out, releasing queue if owner."),g.value&&te(!0),g.value=!1,b(),n.value&&(n.value.clear(),n.value=null),k.value&&(k.value(),k.value=null))},{immediate:!0}),se=w.Timing._setInterval(Me,3e4)}),Ve(()=>{b(),se&&se.clear(),n.value&&(n.value.clear(),n.value=null),k.value&&(k.value(),k.value=null),g.value&&te(!0)});function ve(r){return r.charAt(0).toUpperCase()+r.slice(1)}function Ge(r=null){window.resizeTo(800,500),r?Ye(r):Ye()}const ze=Qe(()=>s(D.value?.nextSendTime).isSame(s().add(1,"d"),"day"));return(r,a)=>{const t=je("Icon");return _(),z(Je,{class:"box q-pa-none q-ma-none no-shadow card_style q-pt-lg queue-card",style:{height:"100vh"}},{default:i(()=>[d(me,{round:"",flat:"",color:"white",style:{position:"absolute",top:"18px",right:"100px","z-index":"99"}},{default:i(()=>[d(ye,{size:"45px","text-color":le(W).dark.isActive?"grey-5":"grey-8",flat:"",onClick:a[0]||(a[0]=o=>Ge())},{default:i(()=>[d(t,{icon:"mdi-help-rhombus-outline"}),d(K,{class:"text-body2"},{default:i(()=>a[9]||(a[9]=[p("Launch Tour")])),_:1,__:[9]})]),_:1},8,["text-color"])]),_:1}),d(me,{id:"tour-reset-queue",flat:"",dense:"",color:"grey",class:"q-px-sm",style:{position:"absolute",top:"25px",right:"25px","text-transform":"capitalize","z-index":"99"},onClick:a[1]||(a[1]=o=>Ne())},{default:i(()=>[a[11]||(a[11]=p(" Reset ")),d(V,{name:"mdi-restore",class:"q-ml-xs",size:"xs"}),d(K,{class:"text-body2"},{default:i(()=>a[10]||(a[10]=[p(" Click to reset the Queue Processor"),S("br",null,null,-1),p("if it appears to be stuck ")])),_:1,__:[10]})]),_:1,__:[11]}),d(_e,null,{default:i(()=>[d(ce,{dense:"",class:"q-pa-sm"},{default:i(()=>[d(Z,null,{default:i(()=>[d(j,null,{default:i(()=>[S("div",{class:ue([le(W).dark.isActive?"dark_text":"text-grey-8","text-weight-medium title"])},[a[12]||(a[12]=p(" Message Queue for ")),S("span",{style:$e([{"font-weight":"bold"},{color:u.value==="Instagram"?"#e1306c":"#1877F2"}])},H(u.value),5)],2)]),_:1})]),_:1})]),_:1})]),_:1}),d(_e,{class:"q-pt-none q-pb-sm q-px-sm"},{default:i(()=>[S("div",aa,[S("div",ta,[d(Ze,{class:"rounded-borders"},{default:i(()=>[d(ce,null,{default:i(()=>[d(Z,{side:""},{default:i(()=>[d(ye,{size:"55px",rounded:"",style:$e({"background-color":le(W).dark.isActive?"#3a3c64":"#e8e7fd"}),"text-color":"primary"},{default:i(()=>[d(t,{icon:"mdi-tray-full"})]),_:1},8,["style"])]),_:1}),d(Z,{id:"tour-waiting-to-send"},{default:i(()=>[d(j,{class:ue(le(W).dark.isActive?"dark_text":"text-grey-8")},{default:i(()=>a[13]||(a[13]=[p(" Waiting to Send: ")])),_:1,__:[13]},8,["class"]),d(j,{class:"text-h6 text-primary"},{default:i(()=>[p(H(ae.value)+" ",1),d(V,{name:"mdi-refresh",size:"xs",class:"q-ml-md",style:{cursor:"pointer"},onClick:a[2]||(a[2]=o=>be())},{default:i(()=>[d(K,{class:"text-body2"},{default:i(()=>a[14]||(a[14]=[p("Refresh the Queue Count"),S("br",null,null,-1),p("Auto-refreshes every 30 seconds")])),_:1,__:[14]})]),_:1})]),_:1})]),_:1})]),_:1}),d(ce,{class:"q-mt-lg"},{default:i(()=>[d(Z,{side:""},{default:i(()=>[d(ye,{size:"55px",rounded:"",style:$e({"background-color":le(W).dark.isActive?"#3a3c64":"#e8e7fd"}),"text-color":"primary"},{default:i(()=>[d(t,{icon:"mdi-send-clock-outline"})]),_:1},8,["style"])]),_:1}),d(Z,{id:"tour-next-send-time"},{default:i(()=>[d(j,{class:ue(le(W).dark.isActive?"dark_text":"text-grey-8")},{default:i(()=>[p(" Next "+H(ae.value>0?"Send":"Check")+" Time: ",1)]),_:1},8,["class"]),y.value?F("",!0):(_(),z(j,{key:0,class:"text-h6 text-primary"},{default:i(()=>[p(H(h.value==="Paused"?"n/a":D.value?.nextSendTime?.includes(":")?D.value?.nextSendTime?.split(":")?.[0]?.split(" ")?.[1]+":"+D.value?.nextSendTime?.split(":")[1]:D.value?.nextSendTime),1),S("span",sa,H(h.value==="Active"&&D.value?.nextSendTime?.includes(":")?"."+D.value?.nextSendTime?.split(":")[2]?.split(" ")?.[0]:h.value==="Paused"?" (paused)":""),1),p(" "+H(h.value==="Paused"?"":D.value?.nextSendTime?" "+(D.value?.nextSendTime?.split(" ")?.[2]??""):"n/a"),1)]),_:1})),y.value?(_(),z(j,{key:1,class:"text-h6 text-primary"},{default:i(()=>a[15]||(a[15]=[p(" Sending... ")])),_:1,__:[15]})):F("",!0),ze.value&&!y.value?(_(),xe("div",la," (tomorrow) ")):F("",!0),T.value?(_(),xe("div",{key:3,class:"q-pt-sm text-bold",innerHTML:T.value},null,8,ua)):F("",!0)]),_:1})]),_:1})]),_:1})]),S("div",oa,[d(ce,{class:ue(["q-pa-md bg-green-1 rounded-borders",h.value==="Paused"?"bg-orange-1":h.value==="Active"?"bg-green-1":"bg-grey-1"])},{default:i(()=>[h.value?(_(),z(Z,{key:0,id:"tour-current-queue-status-container"},{default:i(()=>[d(j,{class:ue(["text-subtitle1 text-weight-medium",h.value==="Paused"?"text-orange-7":h.value==="Active"?"text-green-7":"text-grey-7"])},{default:i(()=>[a[19]||(a[19]=p(" Current Queue Status: ")),d(V,{id:"tour-queue-status-details",name:"mdi-information-outline",size:"sm",class:"q-ml-sm",style:{cursor:"pointer"},onClick:a[3]||(a[3]=o=>Pe())},{default:i(()=>[d(K,{class:"text-body2"},{default:i(()=>a[16]||(a[16]=[p("Show more detail")])),_:1,__:[16]})]),_:1}),S("div",{class:ue(["text-h6 text-weight-medium q-pt-sm",h.value==="Paused"?"text-orange-7":h.value==="Active"?"text-green-7":"text-grey-7"])},[S("span",ra,H(h.value),1),S("small",na,[S("span",null,[p(H(h.value==="Paused"?" (not running anywhere)":g.value&&M.value>0?`(delayed start: ${M.value}...)`:g.value?"(on this device)":he.value?"(somewhere else)":`(delayed start: ${M.value}...)`)+" ",1),g.value&&M.value>0?(_(),z(K,{key:0,style:{width:"200px"},class:"text-body2"},{default:i(()=>a[17]||(a[17]=[p(" GroupTrack is coordinating the Queue to ensure it only runs on a single device globally. ")])),_:1,__:[17]})):F("",!0)]),!g.value&&h.value==="Active"?(_(),z(V,{key:0,name:"mdi-memory-arrow-down",size:"sm",style:{cursor:"pointer"},class:"q-ml-sm",onClick:a[4]||(a[4]=o=>Be())},{default:i(()=>[d(K,{class:"text-body2"},{default:i(()=>a[18]||(a[18]=[p(" Force the Queue to run on THIS device ")])),_:1,__:[18]})]),_:1})):F("",!0)])],2)]),_:1,__:[19]},8,["class"])]),_:1})):(_(),z(Z,{key:1},{default:i(()=>[d(j,{class:"text-subtitle1 text-weight-medium text-grey-7"},{default:i(()=>a[20]||(a[20]=[p(" Current Queue Status: "),S("div",{class:"text-h6 text-weight-medium q-pt-sm text-grey-7"}," Not Set Up ",-1)])),_:1,__:[20]})]),_:1}))]),_:1},8,["class"]),$.value?(_(),xe("div",ia,H($.value),1)):F("",!0),S("div",da,[S("span",va,[h.value==="Active"?(_(),z(me,{key:0,flat:"",class:"bg-orange-1 text-orange-7",padding:"8px 14px","no-caps":"",onClick:a[5]||(a[5]=o=>Se("Paused"))},{default:i(()=>[d(V,{name:"mdi-motion-pause-outline",class:"q-mr-sm",size:"sm"}),a[21]||(a[21]=p(" Pause Queue "))]),_:1,__:[21]})):F("",!0),h.value==="Paused"?(_(),z(me,{key:1,flat:"",class:"bg-green-1 text-green-7",padding:"8px 14px","no-caps":"",onClick:a[6]||(a[6]=o=>Se("Active"))},{default:i(()=>[d(V,{name:"mdi-motion-play-outline",class:"q-mr-sm",size:"sm"}),a[22]||(a[22]=p(" Start Queue "))]),_:1,__:[22]}
9)):F("",!0)]),d(V,{id:"tour-view-queued-messages",color:"primary",name:"mdi-forum-outline",class:"q-mr-lg",size:"sm",style:{cursor:"pointer"},onClick:a[7]||(a[7]=o=>Re())},{default:i(()=>[d(K,{class:"text-body2"},{default:i(()=>a[23]||(a[23]=[p(" View Queued Messages ")])),_:1,__:[23]})]),_:1}),d(V,{id:"tour-edit-queue-settings",color:"primary",name:"mdi-cogs",size:"sm",style:{cursor:"pointer"},onClick:a[8]||(a[8]=o=>Ee())},{default:i(()=>[d(K,{class:"text-body2"},{default:i(()=>a[24]||(a[24]=[p(" Edit Queue Settings ")])),_:1,__:[24]})]),_:1})])])])]),_:1})]),_:1})}}});export{$a as default};

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.