1 |
- {"version":3,"file":"user_status-menu.js?v=70161f4c3cfcea39aab3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/user_status/src/UserStatus.vue","webpack:///nextcloud/apps/user_status/src/services/heartbeatService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?7c59","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d74a","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?e2b3","webpack:///nextcloud/apps/user_status/src/services/predefinedStatusService.js","webpack:///nextcloud/apps/user_status/src/store/predefinedStatuses.js","webpack:///nextcloud/apps/user_status/src/services/clearAtService.js","webpack:///nextcloud/apps/user_status/src/store/userStatus.js","webpack:///nextcloud/apps/user_status/src/services/statusService.js","webpack:///nextcloud/apps/user_status/src/store/index.js","webpack:///nextcloud/apps/user_status/src/menu.js","webpack:///nextcloud/apps/user_status/src/mixins/OnlineStatusMixin.js","webpack:///nextcloud/apps/user_status/src/services/dateService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<component :is=\"elementTag\">\n\t\t<div class=\"user-status-menu-item\">\n\t\t\t<!-- Username display -->\n\t\t\t<a v-if=\"!inline\"\n\t\t\t\tclass=\"user-status-menu-item__header\"\n\t\t\t\t:href=\"profilePageLink\"\n\t\t\t\t@click.exact=\"loadProfilePage\">\n\t\t\t\t<div class=\"user-status-menu-item__header-content\">\n\t\t\t\t\t<div class=\"user-status-menu-item__header-content-displayname\">{{ displayName }}</div>\n\t\t\t\t\t<div v-if=\"!loadingProfilePage\" class=\"user-status-menu-item__header-content-placeholder\" />\n\t\t\t\t\t<div v-else class=\"icon-loading-small\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"profileEnabled\">\n\t\t\t\t\t{{ t('user_status', 'View profile') }}\n\t\t\t\t</div>\n\t\t\t</a>\n\n\t\t\t<!-- Status modal toggle -->\n\t\t\t<toggle :is=\"inline ? 'button' : 'a'\"\n\t\t\t\t:class=\"{'user-status-menu-item__toggle--inline': inline}\"\n\t\t\t\tclass=\"user-status-menu-item__toggle\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent.stop=\"openModal\">\n\t\t\t\t<span aria-hidden=\"true\" :class=\"statusIcon\" class=\"user-status-menu-item__toggle-icon\" />\n\t\t\t\t{{ visibleMessage }}\n\t\t\t</toggle>\n\t\t</div>\n\n\t\t<!-- Status management modal -->\n\t\t<SetStatusModal v-if=\"isModalOpen\"\n\t\t\t@close=\"closeModal\" />\n\t</component>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { sendHeartbeat } from './services/heartbeatService.js'\nimport OnlineStatusMixin from './mixins/OnlineStatusMixin.js'\n\nconst { profileEnabled } = loadState('user_status', 'profileEnabled', false)\n\nexport default {\n\tname: 'UserStatus',\n\n\tcomponents: {\n\t\tSetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal.vue'),\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\theartbeatInterval: null,\n\t\t\tisAway: false,\n\t\t\tisModalOpen: false,\n\t\t\tloadingProfilePage: false,\n\t\t\tmouseMoveListener: null,\n\t\t\tprofileEnabled,\n\t\t\tsetAwayTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\telementTag() {\n\t\t\treturn this.inline ? 'div' : 'li'\n\t\t},\n\t\t/**\n\t\t * The profile page link\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event for styling\n\t\t\treturn null\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current user's status from initial state\n\t * and stores it in Vuex\n\t */\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\n\t\tthis.$store.dispatch('loadStatusFromInitialState')\n\n\t\tif (OC.config.session_keepalive) {\n\t\t\t// Send the latest status to the server every 5 minutes\n\t\t\tthis.heartbeatInterval = setInterval(this._backgroundHeartbeat.bind(this), 1000 * 60 * 5)\n\t\t\tthis.setAwayTimeout = () => {\n\t\t\t\tthis.isAway = true\n\t\t\t}\n\t\t\t// Catch mouse movements, but debounce to once every 30 seconds\n\t\t\tthis.mouseMoveListener = debounce(() => {\n\t\t\t\tconst wasAway = this.isAway\n\t\t\t\tthis.isAway = false\n\t\t\t\t// Reset the two minute counter\n\t\t\t\tclearTimeout(this.setAwayTimeout)\n\t\t\t\t// If the user did not move the mouse within two minutes,\n\t\t\t\t// mark them as away\n\t\t\t\tsetTimeout(this.setAwayTimeout, 1000 * 60 * 2)\n\n\t\t\t\tif (wasAway) {\n\t\t\t\t\tthis._backgroundHeartbeat()\n\t\t\t\t}\n\t\t\t}, 1000 * 2, true)\n\t\t\twindow.addEventListener('mousemove', this.mouseMoveListener, {\n\t\t\t\tcapture: true,\n\t\t\t\tpassive: true,\n\t\t\t})\n\n\t\t\tthis._backgroundHeartbeat()\n\t\t}\n\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\t/**\n\t * Some housekeeping before destroying the component\n\t */\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\twindow.removeEventListener('mouseMove', this.mouseMoveListener)\n\t\tclearInterval(this.heartbeatInterval)\n\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\n\t\tloadProfilePage() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\tthis.loadingProfilePage = true\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Opens the modal to set a custom status\n\t\t */\n\t\topenModal() {\n\t\t\tthis.isModalOpen = true\n\t\t},\n\t\t/**\n\t\t * Closes the modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\n\t\t/**\n\t\t * Sends the status heartbeat to the server\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t * @private\n\t\t */\n\t\tasync _backgroundHeartbeat() {\n\t\t\ttry {\n\t\t\t\tconst status = await sendHeartbeat(this.isAway)\n\t\t\t\tif (status?.userId) {\n\t\t\t\t\tthis.$store.dispatch('setStatusFromHeartbeat', status)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('reFetchStatusFromServer')\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.debug('Failed sending heartbeat, got: ' + error.response?.status)\n\t\t\t}\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (OC.getCurrentUser().uid === state.userId) {\n\t\t\t\tthis.$store.dispatch('setStatusFromObject', {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t\tvertical-align: middle !important;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-main-background-blur);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n</style>\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise<void>}\n */\nconst sendHeartbeat = async (isAway) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/heartbeat?format=json')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data.ocs.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserStatus.vue?vue&type=template&id=59a5bedd&scoped=true&\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59a5bedd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.elementTag,{tag:\"component\"},[_c('div',{staticClass:\"user-status-menu-item\"},[(!_vm.inline)?_c('a',{staticClass:\"user-status-menu-item__header\",attrs:{\"href\":_vm.profilePageLink},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.loadProfilePage.apply(null, arguments)}}},[_c('div',{staticClass:\"user-status-menu-item__header-content\"},[_c('div',{staticClass:\"user-status-menu-item__header-content-displayname\"},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),(!_vm.loadingProfilePage)?_c('div',{staticClass:\"user-status-menu-item__header-content-placeholder\"}):_c('div',{staticClass:\"icon-loading-small\"})]),_vm._v(\" \"),(_vm.profileEnabled)?_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'View profile'))+\"\\n\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.inline ? 'button' : 'a',{tag:\"toggle\",staticClass:\"user-status-menu-item__toggle\",class:{'user-status-menu-item__toggle--inline': _vm.inline},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openModal.apply(null, arguments)}}},[_c('span',{staticClass:\"user-status-menu-item__toggle-icon\",class:_vm.statusIcon,attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.isModalOpen)?_c('SetStatusModal',{on:{\"close\":_vm.closeModal}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise<void>}\n */\nconst fetchAllPredefinedStatuses = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'\n\nconst state = {\n\tpredefinedStatuses: [],\n}\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses.push(status)\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tdateFactory,\n} from './dateService.js'\nimport moment from '@nextcloud/moment'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nconst getTimestampForClearAt = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\tcase 'week':\n\t\t\treturn Number(moment(date).endOf(clearAt.time).format('X'))\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\nexport {\n\tgetTimestampForClearAt,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetPredefinedMessage,\n\tsetCustomMessage,\n\tclearMessage,\n} from '../services/statusService.js'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getTimestampForClearAt } from '../services/clearAtService.js'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether or not the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether or not the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise<void>}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromObject({ commit, state }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise<void>}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise<object>}\n */\nconst fetchCurrentStatus = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise<void>}\n */\nconst setStatus = async (statusType) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setPredefinedMessage = async (messageId, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setCustomMessage = async (message, statusIcon = null, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise<void>}\n */\nconst clearMessage = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\nexport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tclearMessage,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses.js'\nimport userStatus from './userStatus.js'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport UserStatus from './UserStatus.vue'\n\nimport store from './store/index.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\nVue.prototype.$t = t\n\nconst mountPoint = document.getElementById('user_status-menu-entry')\n\nconst mountMenuEntry = () => {\n\tconst mountPoint = document.getElementById('user_status-menu-entry')\n\t// eslint-disable-next-line no-new\n\tnew Vue({\n\t\tel: mountPoint,\n\t\trender: h => h(UserStatus),\n\t\tstore,\n\t})\n}\n\nif (mountPoint) {\n\tmountMenuEntry()\n} else {\n\tsubscribe('core:user-menu:mounted', mountMenuEntry)\n}\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tconst Dashboard = Vue.extend(UserStatus)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n})\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { mapState } from 'vuex'\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: state => state.userStatus.status,\n\t\t\tstatusIsUserDefined: state => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: state => state.userStatus.icon,\n\t\t\tcustomMessage: state => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\tcase 'online':\n\t\t\t\t\treturn this.$t('user_status', 'Online')\n\n\t\t\t\tcase 'away':\n\t\t\t\t\treturn this.$t('user_status', 'Away')\n\n\t\t\t\tcase 'dnd':\n\t\t\t\t\treturn this.$t('user_status', 'Do not disturb')\n\n\t\t\t\tcase 'invisible':\n\t\t\t\t\treturn this.$t('user_status', 'Invisible')\n\n\t\t\t\tcase 'offline':\n\t\t\t\t\treturn this.$t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Set status')\n\t\t},\n\n\t\t/**\n\t\t * The status indicator icon\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tstatusIcon() {\n\t\t\tswitch (this.statusType) {\n\t\t\tcase 'online':\n\t\t\t\treturn 'icon-user-status-online'\n\n\t\t\tcase 'away':\n\t\t\t\treturn 'icon-user-status-away'\n\n\t\t\tcase 'dnd':\n\t\t\t\treturn 'icon-user-status-dnd'\n\n\t\t\tcase 'invisible':\n\t\t\tcase 'offline':\n\t\t\t\treturn 'icon-user-status-invisible'\n\t\t\t}\n\n\t\t\treturn ''\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the new status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst dateFactory = () => {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-status-menu-item__header[data-v-59a5bedd]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-59a5bedd]{cursor:default !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-59a5bedd]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-59a5bedd]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-59a5bedd]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-59a5bedd]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-59a5bedd]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px;vertical-align:middle !important}.user-status-menu-item__toggle--inline[data-v-59a5bedd]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-main-background-blur);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:active,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:hover,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{box-shadow:0 0 0 2px var(--color-main-text) !important}li[data-v-59a5bedd]{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/UserStatus.vue\"],\"names\":[],\"mappings\":\"AAEC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,kDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,sDAAA,CAMJ,oBACC,oBAAA\",\"sourcesContent\":[\"\\n.user-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: flex !important;\\n\\t\\tflex-direction: column !important;\\n\\t\\twidth: auto !important;\\n\\t\\theight: 44px * 1.5 !important;\\n\\t\\tpadding: 10px 12px 5px 12px !important;\\n\\t\\talign-items: flex-start !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\n\\t\\t&:not([href]) {\\n\\t\\t\\theight: var(--header-menu-item-height) !important;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tcursor: default !important;\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tcursor: default !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-content {\\n\\t\\t\\tdisplay: inline-flex !important;\\n\\t\\t\\tfont-weight: bold !important;\\n\\t\\t\\tgap: 0 10px !important;\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t&-displayname {\\n\\t\\t\\t\\twidth: auto;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-placeholder {\\n\\t\\t\\t\\twidth: 16px !important;\\n\\t\\t\\t\\theight: 24px !important;\\n\\t\\t\\t\\tmargin-right: 10px !important;\\n\\t\\t\\t\\tvisibility: hidden !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__toggle {\\n\\t\\t&-icon {\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tvertical-align: middle !important;\\n\\t\\t}\\n\\n\\t\\t// In dashboard\\n\\t\\t&--inline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\tmin-width: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\t\\tfont-size: inherit;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t-webkit-backdrop-filter: var(--background-blur);\\n\\t\\t\\tbackdrop-filter: var(--background-blur);\\n\\n\\t\\t\\t&:active,\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t}\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"user-status-modal\" + \"-\" + chunkId + \".js?v=\" + \"75ddf07d8f85969a4387\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2613;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2613: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(46164)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","profileEnabled","name","components","SetStatusModal","mixins","props","inline","type","default","data","displayName","heartbeatInterval","isAway","isModalOpen","loadingProfilePage","mouseMoveListener","setAwayTimeout","computed","elementTag","profilePageLink","userId","mounted","subscribe","clearTimeout","setTimeout","window","capture","passive","beforeDestroy","unsubscribe","clearInterval","methods","handleDisplayNameUpdate","handleProfileEnabledUpdate","loadProfilePage","openModal","closeModal","async","url","generateOcsUrl","HttpClient","status","ocs","console","handleUserStatusUpdated","icon","message","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","tag","staticClass","_e","attrs","on","$event","ctrlKey","shiftKey","altKey","metaKey","apply","arguments","_v","_s","t","class","preventDefault","stopPropagation","statusIcon","visibleMessage","state","predefinedStatuses","mutations","addPredefinedStatus","push","getters","actions","commit","length","statuses","fetchAllPredefinedStatuses","getTimestampForClearAt","clearAt","date","dateFactory","setSeconds","getSeconds","time","Math","floor","getTime","Number","moment","endOf","format","statusIsUserDefined","messageIsPredefined","messageId","setStatus","statusType","setPredefinedMessage","setCustomMessage","clearMessage","loadStatusFromServer","emit","getCurrentUser","uid","rootState","resolvedClearAt","find","id","fetchCurrentStatus","loadStatusFromInitialState","loadState","Vue","Vuex","Store","modules","userStatus","strict","__webpack_nonce__","btoa","getRequestToken","mountMenuEntry","mountPoint","document","getElementById","el","render","h","UserStatus","store","addEventListener","OCA","Dashboard","registerStatus","propsData","$mount","mapState","customIcon","customMessage","$t","$store","dispatch","err","showError","debug","Date","___CSS_LOADER_EXPORT___","module","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","forEach","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
|