(()=>{"use strict";var e,s,a,r={33114:(e,t,s)=>{s.d(t,{A:()=>n});var a=s(95353),r=s(85168);const n={computed:{...(0,a.aH)({statusType:e=>e.userStatus.status,statusIsUserDefined:e=>e.userStatus.statusIsUserDefined,customIcon:e=>e.userStatus.icon,customMessage:e=>e.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return`${this.customIcon} ${this.customMessage}`;if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return this.$t("user_status","Online");case"away":case"busy":return this.$t("user_status","Away");case"dnd":return this.$t("user_status","Do not disturb");case"invisible":return this.$t("user_status","Invisible");case"offline":return this.$t("user_status","Offline")}return this.$t("user_status","Set status")}},methods:{async changeStatus(e){try{await this.$store.dispatch("setStatus",{statusType:e})}catch(e){(0,r.Qg)(this.$t("user_status","There was an error saving the new status")),console.debug(e)}}}}},49477:(e,t,s)=>{s.d(t,{A:()=>o});var a=s(71354),r=s.n(a),n=s(76314),u=s.n(n)()(r());u.push([e.id,".user-status-icon[data-v-2abd0fd6]{width:20px;height:20px;margin:calc((var(--default-clickable-area) - 20px)/2);opacity:1 !important;background-size:20px;vertical-align:middle !important}","",{version:3,sources:["webpack://./apps/user_status/src/UserStatus.vue"],names:[],mappings:"AACA,mCACC,UAAA,CACA,WAAA,CACA,qDAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA",sourcesContent:["\n.user-status-icon {\n\twidth: 20px;\n\theight: 20px;\n\tmargin: calc((var(--default-clickable-area) - 20px) / 2); // 20px icon size\n\topacity: 1 !important;\n\tbackground-size: 20px;\n\tvertical-align: middle !important;\n}\n"],sourceRoot:""}]);const o=u},53611:(e,t,s)=>{s.d(t,{A:()=>a.N});var a=s(49313)},61913:(e,t,s)=>{s.d(t,{R:()=>a});const a=()=>new Date},73591:(e,s,a)=>{var r=a(21777),n=a(61338),u=a(85471),o=a(54914),i=a(74095),c=a(1522),d=a(53611),l=a(17334),m=a.n(l),p=a(19051),g=a(63814),f=a(33114);const h={name:"UserStatus",components:{Fragment:o.F,NcButton:i.A,NcListItem:c.A,NcUserStatusIcon:d.A,SetStatusModal:()=>Promise.all([a.e(4208),a.e(5133)]).then(a.bind(a,58410))},mixins:[f.A],props:{inline:{type:Boolean,default:!1}},data:()=>({heartbeatInterval:null,isAway:!1,isModalOpen:!1,mouseMoveListener:null,setAwayTimeout:null}),mounted(){this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),3e5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=m()((()=>{const e=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,12e4),e&&this._backgroundHeartbeat()}),2e3,!0),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),(0,n.B1)("user_status:status.updated",this.handleUserStatusUpdated)},beforeDestroy(){window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),(0,n.al)("user_status:status.updated",this.handleUserStatusUpdated)},methods:{openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const e=await(async e=>{const t=(0,g.KT)("apps/user_status/api/v1/heartbeat?format=json");return(await p.Ay.put(t,{status:e?"away":"online"})).data.ocs.data})(this.isAway);e?.userId?this.$store.dispatch("setStatusFromHeartbeat",e):await this.$store.dispatch("reFetchStatusFromServer")}catch(e){console.debug("Failed sending heartbeat, got: "+e.response?.status)}},handleUserStatusUpdated(e){(0,r.HW)()?.uid===e.userId&&this.$store.dispatch("setStatusFromObject",{status:e.status,icon:e.icon,message:e.message})}}};var v=a(85072),A=a.n(v),y=a(97825),S=a.n(y),b=a(77659),I=a.n(b),w=a(55056),_=a.n(w),T=a(10540),M=a.n(T),C=a(41113),k=a.n(C),O=a(49477),P={};P.styleTagTransform=k(),P.setAttributes=_(),P.insert=I().bind(null,"head"),P.domAPI=S(),P.insertStyleElement=M(),A()(O.A,P),O.A&&O.A.locals&&O.A.locals;const F=(0,a(14486).A)(h,(function(){var e=this,t=e._self._c;return t("Fragment",[e.inline?t("div",[t("NcButton",{on:{click:function(t){return t.stopPropagation(),e.openModal.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("NcUserStatusIcon",{staticClass:"user-status-icon",attrs:{status:e.statusType,"aria-hidden":"true"}})]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.visibleMessage)+"\n\t\t")])],1):t("NcListItem",{staticClass:"user-status-menu-item",attrs:{compact:"",name:e.visibleMessage},on:{click:function(t){return t.stopPropagation(),e.openModal.apply(null,arguments)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("NcUserStatusIcon",{staticClass:"user-status-icon",attrs:{status:e.statusType,"aria-hidden":"true"}})]},proxy:!0}],null,!1,2300440294)}),e._v(" "),e.isModalOpen?t("SetStatusModal",{attrs:{inline:e.inline},on:{close:e.closeModal}}):e._e()],1)}),[],!1,null,"2abd0fd6",null).exports;var U=a(95353);const x={state:{predefinedStatuses:[]},mutations:{addPredefinedStatus(e,t){e.predefinedStatuses=[...e.predefinedStatuses,t]}},getters:{statusesHaveLoaded:e=>e.predefinedStatuses.length>0},actions:{async loadAllPredefinedStatuses({state:e,commit:t}){if(e.predefinedStatuses.length>0)return;const s=await(async()=>{const e=(0,g.KT)("apps/user_status/api/v1/predefined_statuses?format=json");return(await p.Ay.get(e)).data.ocs.data})();for(const e of s)t("addPredefinedStatus",e)}}};var $=a(32981),D=a(61913),j=a(51651);const B=e=>{if(null===e)return null;const t=(0,D.R)();if("period"===e.type)return t.setSeconds(t.getSeconds()+e.time),Math.floor(t.getTime()/1e3);if("end-of"===e.type)switch(e.time){case"day":case"week":return Number((0,j.A)(t).endOf(e.time).format("X"))}return"_time"===e.type?e.time:null},H={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{setStatus(e,{statusType:t}){e.status=t,e.statusIsUserDefined=!0},setPredefinedMessage(e,{messageId:t,clearAt:s,message:a,icon:r}){e.messageId=t,e.messageIsPredefined=!0,e.message=a,e.icon=r,e.clearAt=s},setCustomMessage(e,{message:t,icon:s,clearAt:a}){e.messageId=null,e.messageIsPredefined=!1,e.message=t,e.icon=s,e.clearAt=a},clearMessage(e){e.messageId=null,e.messageIsPredefined=!1,e.message=null,e.icon=null,e.clearAt=null},loadStatusFromServer(e,{status:t,statusIsUserDefined:s,message:a,icon:r,clearAt:n,messageIsPredefined:u,messageId:o}){e.status=t,e.message=a,e.icon=r,void 0!==s&&(e.statusIsUserDefined=s),void 0!==n&&(e.clearAt=n),void 0!==u&&(e.messageIsPredefined=u),void 0!==o&&(e.messageId=o)}},getters:{},actions:{async setStatus({commit:e,state:t},{statusType:s}){await(async e=>{const t=(0,g.KT)("apps/user_status/api/v1/user_status/status");await p.Ay.put(t,{statusType:e})})(s),e("setStatus",{statusType:s}),(0,n.Ic)("user_status:status.updated",{status:t.status,message:t.message,icon:t.icon,clearAt:t.clearAt,userId:(0,r.HW)()?.uid})},async setStatusFromObject({commit:e,state:t},s){e("loadStatusFromServer",s)},async setPredefinedMessage({commit:e,rootState:t,state:s},{messageId:a,clearAt:u}){const o=B(u);await(async(e,t=null)=>{const s=(0,g.KT)("apps/user_status/api/v1/user_status/message/predefined?format=json");await p.Ay.put(s,{messageId:e,clearAt:t})})(a,o);const i=t.predefinedStatuses.predefinedStatuses.find((e=>e.id===a)),{message:c,icon:d}=i;e("setPredefinedMessage",{messageId:a,clearAt:o,message:c,icon:d}),(0,n.Ic)("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:(0,r.HW)()?.uid})},async setCustomMessage({commit:e,state:t},{message:s,icon:a,clearAt:u}){const o=B(u);await(async(e,t=null,s=null)=>{const a=(0,g.KT)("apps/user_status/api/v1/user_status/message/custom?format=json");await p.Ay.put(a,{message:e,statusIcon:t,clearAt:s})})(s,a,o),e("setCustomMessage",{message:s,icon:a,clearAt:o}),(0,n.Ic)("user_status:status.updated",{status:t.status,message:t.message,icon:t.icon,clearAt:t.clearAt,userId:(0,r.HW)()?.uid})},async clearMessage({commit:e,state:t}){await(async()=>{const e=(0,g.KT)("apps/user_status/api/v1/user_status/message?format=json");await p.Ay.delete(e)})(),e("clearMessage"),(0,n.Ic)("user_status:status.updated",{status:t.status,message:t.message,icon:t.icon,clearAt:t.clearAt,userId:(0,r.HW)()?.uid})},async reFetchStatusFromServer({commit:e}){e("loadStatusFromServer",await(async()=>{const e=(0,g.KT)("apps/user_status/api/v1/user_status");return(await p.Ay.get(e)).data.ocs.data})())},async setStatusFromHeartbeat({commit:e},t){e("loadStatusFromServer",t)},loadStatusFromInitialState({commit:e}){e("loadStatusFromServer",(0,$.C)("user_status","status"))}}},E={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{loadBackupStatusFromServer(e,{status:t,statusIsUserDefined:s,message:a,icon:r,clearAt:n,messageIsPredefined:u,messageId:o}){e.status=t,e.message=a,e.icon=r,void 0!==s&&(e.statusIsUserDefined=s),void 0!==n&&(e.clearAt=n),void 0!==u&&(e.messageIsPredefined=u),void 0!==o&&(e.messageId=o)}},getters:{},actions:{async fetchBackupFromServer({commit:e}){try{e("loadBackupStatusFromServer",await(async e=>{const t=(0,g.KT)("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+e});return(await p.Ay.get(t)).data.ocs.data})((0,r.HW)()?.uid))}catch(e){}},async revertBackupFromServer({commit:e},{messageId:t}){const s=await(async e=>{const t=(0,g.KT)("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:e});return(await p.Ay.delete(t)).data.ocs.data})(t);s&&(e("loadBackupStatusFromServer",{}),e("loadStatusFromServer",s),(0,n.Ic)("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:(0,r.HW)()?.uid}))}}};u.Ay.use(U.Ay);const N=new U.il({modules:{predefinedStatuses:x,userStatus:H,userBackupStatus:E},strict:!0});a.nc=(0,r.aV)(),u.Ay.prototype.t=t,u.Ay.prototype.$t=t;const L=()=>{const e=document.getElementById("user_status-menu-entry");new u.Ay({el:e,render:e=>e(F),store:N})};document.getElementById("user_status-menu-entry")?L():(0,n.B1)("core:user-menu:mounted",L),document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",(e=>new(u.Ay.extend(F))({propsData:{inline:!0},store:N}).$mount(e)))}))}},n={};function u(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={id:e,loaded:!1,exports:{}};return r[e].call(s.exports,s,s.exports,u),s.loaded=!0,s.exports}u.m=r,e=[],u.O=(t,s,a,r)=>{if(!s){var n=1/0;for(d=0;d=r)&&Object.keys(u.O).every((e=>u.O[e](s[i])))?s.splice(i--,1):(o=!1,r0&&e[d-1][2]>r;d--)e[d]=e[d-1];e[d]=[s,a,r]},u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var s in t)u.o(t,s)&&!u.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce(((t,s)=>(u.f[s](e,t),t)),[])),u.u=e=>(5133===e?"user-status-modal":e)+"-"+e+".js?v="+{3278:"692a9325b59026ce7553",3564:"1f97cb34040f17de0c20",5133:"a9b6eed51a58fc27ddfc",5664:"a50e018ed5dd17d08d83",7471:"428f6893ae52e7aca00b"}[e],u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},a="nextcloud:",u.l=(e,t,r,n)=>{if(s[e])s[e].push(t);else{var o,i;if(void 0!==r)for(var c=document.getElementsByTagName("script"),d=0;d{o.onerror=o.onload=null,clearTimeout(p);var r=s[e];if(delete s[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(a))),t)return t(a)},p=setTimeout(m.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=m.bind(null,o.onerror),o.onload=m.bind(null,o.onload),i&&document.head.appendChild(o)}},u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),u.j=9953,(()=>{var e;globalThis.importScripts&&(e=globalThis.location+"");var t=globalThis.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var a=s.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=s[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u.p=e})(),(()=>{u.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={9953:0};u.f.j=(t,s)=>{var a=u.o(e,t)?e[t]:void 0;if(0!==a)if(a)s.push(a[2]);else{var r=new Promise(((s,r)=>a=e[t]=[s,r]));s.push(a[2]=r);var n=u.p+u.u(t),o=new Error;u.l(n,(s=>{if(u.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var r=s&&("load"===s.type?"missing":s.type),n=s&&s.target&&s.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+n+")",o.name="ChunkLoadError",o.type=r,o.request=n,a[1](o)}}),"chunk-"+t,t)}},u.O.j=t=>0===e[t];var t=(t,s)=>{var a,r,[n,o,i]=s,c=0;if(n.some((t=>0!==e[t]))){for(a in o)u.o(o,a)&&(u.m[a]=o[a]);if(i)var d=i(u)}for(t&&t(s);cu(73591)));o=u.O(o)})(); //# sourceMappingURL=user_status-menu.js.map?v=d9bfd699cffa0a941a72