From 93583f64d71550dcccf8bf600fd3135827d04377 Mon Sep 17 00:00:00 2001 From: Edge Date: Sat, 24 May 2025 15:34:15 +0800 Subject: [PATCH 1/4] modified: js/src/common/components/OnlineUsersWidget.tsx new file: src/Api/Controller/ListOnlineUsersController.php --- extend.php | 5 +- js/dist/admin.js | 426 +++++++++++++++- js/dist/admin.js.map | 2 +- js/dist/forum.js | 456 +++++++++++++++++- js/dist/forum.js.map | 2 +- .../common/components/OnlineUsersWidget.tsx | 47 +- .../Controller/ListOnlineUsersController.php | 37 ++ 7 files changed, 967 insertions(+), 8 deletions(-) create mode 100755 src/Api/Controller/ListOnlineUsersController.php diff --git a/extend.php b/extend.php index c9d9eca..018895b 100644 --- a/extend.php +++ b/extend.php @@ -28,6 +28,8 @@ new Extend\Locales(__DIR__.'/locale'), + (new Extend\Routes('api')) + ->get('/online-users', 'afrux.online-users.list', Api\Controller\ListOnlineUsersController::class), (new Extend\ApiSerializer(FlarumSerializer\ForumSerializer::class)) ->attribute('canViewOnlineUsersWidget', function ($serializer) { return $serializer->getActor()->hasPermission('viewOnlineUsersWidget'); @@ -44,5 +46,6 @@ (new Extend\Settings) ->default('afrux-online-users-widget.max_users', 15) ->default('afrux-online-users-widget.cache_ttl', 30) - ->default('afrux-online-users-widget.last_seen_interval', 5), + ->default('afrux-online-users-widget.last_seen_interval', 5) + ->serializeToForum('afrux-online-users-widget.maxUsers', 'afrux-online-users-widget.max_users', 'intval'), ]; diff --git a/js/dist/admin.js b/js/dist/admin.js index c6402a7..6b85791 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,2 +1,426 @@ -module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=14)}([function(e,t){e.exports=flarum.core.compat["common/app"]},function(e,t){e.exports=flarum.core.compat["admin/app"]},function(e,t){e.exports=flarum.core.compat["extensions/afrux-forum-widgets-core/common/extend/Widgets"]},function(e,t){e.exports=flarum.core.compat["common/components/LoadingIndicator"]},function(e,t){e.exports=flarum.core.compat["common/components/Tooltip"]},function(e,t){e.exports=flarum.core.compat["common/helpers/avatar"]},function(e,t){e.exports=flarum.core.compat["common/components/Link"]},function(e,t){e.exports=flarum.core.compat["common/utils/extractText"]},function(e,t){e.exports=flarum.core.compat["extensions/afrux-forum-widgets-core/common/components/Widget"]},function(e,t,n){"use strict";var r=n(2),s=n.n(r);function o(e,t){return(o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var i=n(0),a=n.n(i),u=n(3),l=n.n(u),c=n(4),f=n.n(c),p=n(5),d=n.n(p),g=n(6),x=n.n(g),b=n(7),v=n.n(b),w=n(8),y=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,o(t,n);var s=r.prototype;return s.className=function(){return"Afrux-OnlineUsersWidget"},s.icon=function(){return"fas fa-user-friends"},s.title=function(){return v()(a.a.translator.trans("afrux-online-users-widget.forum.widget.title"))},s.content=function(){if(this.attrs.state.isLoading)return m(l.a,null);var e=a.a.forum.onlineUsers()||[],t=a.a.forum.totalOnlineUsers()||0;return m("div",{className:"Afrux-OnlineUsersWidget-users"},m("div",{className:"Afrux-OnlineUsersWidget-users-message"},0===e.length?a.a.translator.trans("afrux-online-users-widget.forum.widget.empty"):null),m("div",{className:"Afrux-OnlineUsersWidget-users-list"},e.map((function(e){return m(x.a,{href:a.a.route("user",{username:e.slug()}),className:"Afrux-OnlineUsersWidget-users-item"},m(f.a,{text:e.displayName()},d()(e)))})),t>e.length?m("span",{className:"Afrux-OnlineUsersWidget-users-item Afrux-OnlineUsersWidget-users-item--plus"},m("span",{className:"Avatar"},"+"+(t-e.length))):null))},r}(n.n(w).a);t.a=function(e){(new s.a).add({key:"onlineUsers",component:y,isDisabled:function(){var t=e.forum.onlineUsers();return Boolean(!e.forum.attribute("canViewOnlineUsersWidget")||!t||!t.length)},isUnique:!0,placement:"end",position:1}).extend(e,"afrux-online-users-widget")}},,,,,function(e,t,n){"use strict";n.r(t);var r=n(1),s=n.n(r),o=n(9);s.a.initializers.add("afrux/online-users-widget",(function(){Object(o.a)(s.a),s.a.extensionData.for("afrux-online-users-widget").registerSetting({setting:"afrux-online-users-widget.max_users",label:s.a.translator.trans("afrux-online-users-widget.admin.settings.max_users"),type:"number"}).registerSetting({setting:"afrux-online-users-widget.last_seen_interval",label:s.a.translator.trans("afrux-online-users-widget.admin.settings.last_seen_interval"),type:"number"}).registerSetting({setting:"afrux-online-users-widget.cache_ttl",label:s.a.translator.trans("afrux-online-users-widget.admin.settings.cache_ttl"),type:"number"}).registerPermission({icon:"fas fa-user-clock",label:s.a.translator.trans("afrux-online-users-widget.admin.permissions.view_online_users_widget"),permission:"viewOnlineUsersWidget",allowGuest:!0},"view")}))}]); +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./admin.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./admin.js": +/*!******************!*\ + !*** ./admin.js ***! + \******************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _src_admin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/admin */ "./src/admin/index.ts"); +/* empty/unused harmony star reexport */ + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***! + \******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _inheritsLoose; }); +/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); + +function _inheritsLoose(t, o) { + t.prototype = Object.create(o.prototype), t.prototype.constructor = t, Object(_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(t, o); +} + + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _setPrototypeOf; }); +function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); +} + + +/***/ }), + +/***/ "./src/admin/index.ts": +/*!****************************!*\ + !*** ./src/admin/index.ts ***! + \****************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app"); +/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _common_registerWidget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/registerWidget */ "./src/common/registerWidget.ts"); + + +flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.initializers.add('afrux/online-users-widget', function () { + Object(_common_registerWidget__WEBPACK_IMPORTED_MODULE_1__["default"])(flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a); + flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.extensionData["for"]('afrux-online-users-widget').registerSetting({ + setting: 'afrux-online-users-widget.max_users', + label: flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('afrux-online-users-widget.admin.settings.max_users'), + type: 'number' + }).registerSetting({ + setting: 'afrux-online-users-widget.last_seen_interval', + label: flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'), + type: 'number' + }).registerSetting({ + setting: 'afrux-online-users-widget.cache_ttl', + label: flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'), + type: 'number' + }).registerPermission({ + icon: 'fas fa-user-clock', + label: flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'), + permission: 'viewOnlineUsersWidget', + allowGuest: true + }, 'view'); +}); + +/***/ }), + +/***/ "./src/common/components/OnlineUsersWidget.tsx": +/*!*****************************************************!*\ + !*** ./src/common/components/OnlineUsersWidget.tsx ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OnlineUsersWidget; }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/common/app */ "flarum/common/app"); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_common_app__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/helpers/avatar */ "flarum/common/helpers/avatar"); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Link */ "flarum/common/components/Link"); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/utils/extractText */ "flarum/common/utils/extractText"); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/components/Widget */ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget"); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__); + + + + + + + + +var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { + function OnlineUsersWidget() { + return _Widget.apply(this, arguments) || this; + } + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(OnlineUsersWidget, _Widget); + var _proto = OnlineUsersWidget.prototype; + _proto.oncreate = function oncreate(vnode) { + this.attrs.state.users = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; + this.attrs.state.total = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; + this.attrs.state.max = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers") || 15; + console.log("max: " + flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers")); + if (!this.attrs.state.timerAdded) { + console.log("onliner timer added"); + setInterval(this.load.bind(this), 120000); + this.attrs.state.timerAdded = true; + } + }; + _proto.className = function className() { + return 'Afrux-OnlineUsersWidget'; + }; + _proto.icon = function icon() { + return 'fas fa-user-friends'; + }; + _proto.title = function title() { + return flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default()(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.title')); + }; + _proto.content = function content() { + if (this.attrs.state.isLoading) { + return m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default.a, null); + } + this.attrs.state.users = this.attrs.state.users || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; + var users = this.attrs.state.users; + this.attrs.state.total = this.attrs.state.total || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; + var total = this.attrs.state.total; + return m("div", { + className: "Afrux-OnlineUsersWidget-users" + }, m("div", { + className: "Afrux-OnlineUsersWidget-users-message" + }, users.length === 0 ? flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.empty') : null), m("div", { + className: "Afrux-OnlineUsersWidget-users-list" + }, users.map(function (user) { + return m(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default.a, { + href: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.route('user', { + username: user.slug() + }), + className: "Afrux-OnlineUsersWidget-users-item" + }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, { + text: user.displayName() + }, flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default()(user))); + }), total > users.length ? m("span", { + className: "Afrux-OnlineUsersWidget-users-item Afrux-OnlineUsersWidget-users-item--plus" + }, m("span", { + className: "Avatar" + }, total < 50 ? "+" + (total - users.length) : "+" + (50 - users.length) + "...")) : null)); + }; + _proto.load = function load() { + if (this.loadWithInitialResponse) { + this.setResults(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers()); + return; + } + this.attrs.state.isLoading = true; + console.log("reloading widget"); + var response = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + method: 'GET', + url: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + '/online-users' + }); + setResults(response.data, response.meta); + }; + _proto.setResults = function setResults(data, meta) { + users = this.filterTimeUsers(users); + this.attrs.state.users = data; + this.attrs.state.total = meta == null ? void 0 : meta.totalCount; + this.attrs.state.isLoading = false; + this.attrs.state.hasLoaded = true; + m.redraw(); + console.log("redrew"); + }; + return OnlineUsersWidget; +}(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default.a); + + +/***/ }), + +/***/ "./src/common/registerWidget.ts": +/*!**************************************!*\ + !*** ./src/common/registerWidget.ts ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets */ "flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets"); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _components_OnlineUsersWidget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/OnlineUsersWidget */ "./src/common/components/OnlineUsersWidget.tsx"); + + +/* harmony default export */ __webpack_exports__["default"] = (function (app) { + new flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0___default.a().add({ + key: 'onlineUsers', + component: _components_OnlineUsersWidget__WEBPACK_IMPORTED_MODULE_1__["default"], + isDisabled: function isDisabled() { + var onlineUsers = app.forum.onlineUsers(); + return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length); + }, + isUnique: true, + placement: 'end', + position: 1 + }).extend(app, 'afrux-online-users-widget'); +}); + +/***/ }), + +/***/ "flarum/admin/app": +/*!**************************************************!*\ + !*** external "flarum.core.compat['admin/app']" ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['admin/app']; + +/***/ }), + +/***/ "flarum/common/app": +/*!***************************************************!*\ + !*** external "flarum.core.compat['common/app']" ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/app']; + +/***/ }), + +/***/ "flarum/common/components/Link": +/*!***************************************************************!*\ + !*** external "flarum.core.compat['common/components/Link']" ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Link']; + +/***/ }), + +/***/ "flarum/common/components/LoadingIndicator": +/*!***************************************************************************!*\ + !*** external "flarum.core.compat['common/components/LoadingIndicator']" ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/LoadingIndicator']; + +/***/ }), + +/***/ "flarum/common/components/Tooltip": +/*!******************************************************************!*\ + !*** external "flarum.core.compat['common/components/Tooltip']" ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Tooltip']; + +/***/ }), + +/***/ "flarum/common/helpers/avatar": +/*!**************************************************************!*\ + !*** external "flarum.core.compat['common/helpers/avatar']" ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/helpers/avatar']; + +/***/ }), + +/***/ "flarum/common/utils/extractText": +/*!*****************************************************************!*\ + !*** external "flarum.core.compat['common/utils/extractText']" ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/utils/extractText']; + +/***/ }), + +/***/ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget": +/*!*****************************************************************************************************!*\ + !*** external "flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']" ***! + \*****************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']; + +/***/ }), + +/***/ "flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets": +/*!**************************************************************************************************!*\ + !*** external "flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']" ***! + \**************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']; + +/***/ }) + +/******/ }); //# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 82e6066..29420d9 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/admin/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","OnlineUsersWidget","_Widget","subClass","superClass","apply","arguments","constructor","_proto","className","icon","title","extractText","app","translator","trans","content","this","attrs","state","isLoading","LoadingIndicator","users","forum","onlineUsers","total","totalOnlineUsers","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","Widget","Widgets","add","component","isDisabled","Boolean","attribute","isUnique","placement","position","extend","initializers","registerWidget","extensionData","registerSetting","setting","label","type","registerPermission","permission","allowGuest"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n const users = app.forum.onlineUsers() || [];\n const total = app.forum.totalOnlineUsers() || 0;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {`+${total - users.length}`}\n \n ) : null}\n
\n
\n );\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","type","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA,wC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAiD;AACjD,SAASA,cAAcA,CAACC,CAAC,EAAEC,CAAC,EAAE;EAC5BD,CAAC,CAACE,SAAS,GAAGC,MAAM,CAACC,MAAM,CAACH,CAAC,CAACC,SAAS,CAAC,EAAEF,CAAC,CAACE,SAAS,CAACG,WAAW,GAAGL,CAAC,EAAEM,kEAAc,CAACN,CAAC,EAAEC,CAAC,CAAC;AAC7F;;;;;;;;;;;;;ACHA;AAAA;AAAA,SAASM,eAAeA,CAACP,CAAC,EAAEQ,CAAC,EAAE;EAC7B,OAAOD,eAAe,GAAGJ,MAAM,CAACG,cAAc,GAAGH,MAAM,CAACG,cAAc,CAACG,IAAI,CAAC,CAAC,GAAG,UAAUT,CAAC,EAAEQ,CAAC,EAAE;IAC9F,OAAOR,CAAC,CAACU,SAAS,GAAGF,CAAC,EAAER,CAAC;EAC3B,CAAC,EAAEO,eAAe,CAACP,CAAC,EAAEQ,CAAC,CAAC;AAC1B;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAmC;AACmB;AAEtDG,uDAAG,CAACC,YAAY,CAACC,GAAG,CAAC,2BAA2B,EAAE,YAAM;EACtDC,sEAAc,CAACH,uDAAG,CAAC;EAEnBA,uDAAG,CAACI,aAAa,OACX,CAAC,2BAA2B,CAAC,CAChCC,eAAe,CAAC;IACfC,OAAO,EAAE,qCAAqC;IAC9CC,KAAK,EAAEP,uDAAG,CAACQ,UAAU,CAACC,KAAK,CAAC,oDAAoD,CAAC;IACjFC,IAAI,EAAE;EACR,CAAC,CAAC,CACDL,eAAe,CAAC;IACfC,OAAO,EAAE,8CAA8C;IACvDC,KAAK,EAAEP,uDAAG,CAACQ,UAAU,CAACC,KAAK,CAAC,6DAA6D,CAAC;IAC1FC,IAAI,EAAE;EACR,CAAC,CAAC,CACDL,eAAe,CAAC;IACfC,OAAO,EAAE,qCAAqC;IAC9CC,KAAK,EAAEP,uDAAG,CAACQ,UAAU,CAACC,KAAK,CAAC,oDAAoD,CAAC;IACjFC,IAAI,EAAE;EACR,CAAC,CAAC,CACDC,kBAAkB,CACjB;IACEC,IAAI,EAAE,mBAAmB;IACzBL,KAAK,EAAEP,uDAAG,CAACQ,UAAU,CAACC,KAAK,CAAC,sEAAsE,CAAC;IACnGI,UAAU,EAAE,uBAAuB;IACnCC,UAAU,EAAE;EACd,CAAC,EACD,MACF,CAAC;AACL,CAAC,CAAC,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCkC;AAEqC;AAClB;AACL;AACD;AACS;AAGqD;AAAA,IAE1FC,iBAAiB,0BAAAC,OAAA;EAAA,SAAAD,kBAAA;IAAA,OAAAC,OAAA,CAAAC,KAAA,OAAAC,SAAA;EAAA;EAAA9B,wFAAA,CAAA2B,iBAAA,EAAAC,OAAA;EAAA,IAAAG,MAAA,GAAAJ,iBAAA,CAAAxB,SAAA;EAAA4B,MAAA,CAEpCC,QAAQ,GAAR,SAAAA,QAAQA,CAACC,KAAK,EAAQ;IACpB,IAAI,CAACC,KAAK,CAACC,KAAK,CAACC,KAAK,GAAGxB,wDAAG,CAACyB,KAAK,CAACC,WAAW,CAAC,CAAC,IAAI,EAAE;IACtD,IAAI,CAACJ,KAAK,CAACC,KAAK,CAACI,KAAK,GAAG3B,wDAAG,CAACyB,KAAK,CAACG,gBAAgB,CAAC,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACN,KAAK,CAACC,KAAK,CAACM,GAAG,GAAG7B,wDAAG,CAACyB,KAAK,CAACK,SAAS,CAAC,oCAAoC,CAAC,IAAI,EAAE;IACtFC,OAAO,CAACC,GAAG,CAAC,OAAO,GAAGhC,wDAAG,CAACyB,KAAK,CAACK,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI,CAACR,KAAK,CAACC,KAAK,CAACU,UAAU,EAAE;MAClCF,OAAO,CAACC,GAAG,CAAC,qBAAqB,CAAC;MAC9BE,WAAW,CAAC,IAAI,CAACC,IAAI,CAACrC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;MACzC,IAAI,CAACwB,KAAK,CAACC,KAAK,CAACU,UAAU,GAAG,IAAI;IACtC;EACF,CAAC;EAAAd,MAAA,CAEDiB,SAAS,GAAT,SAAAA,SAASA,CAAA,EAAW;IAClB,OAAO,yBAAyB;EAClC,CAAC;EAAAjB,MAAA,CAEDP,IAAI,GAAJ,SAAAA,IAAIA,CAAA,EAAW;IACb,OAAO,qBAAqB;EAC9B,CAAC;EAAAO,MAAA,CAEDkB,KAAK,GAAL,SAAAA,KAAKA,CAAA,EAAW;IACd,OAAOC,sEAAW,CAACtC,wDAAG,CAACQ,UAAU,CAACC,KAAK,CAAC,8CAA8C,CAAC,CAAC;EAC1F,CAAC;EAAAU,MAAA,CAEDoB,OAAO,GAAP,SAAAA,OAAOA,CAAA,EAAqB;IAC1B,IAAI,IAAI,CAACjB,KAAK,CAACC,KAAK,CAACiB,SAAS,EAAE;MAC9B,OAAOC,CAAA,CAACC,gFAAgB,MAAE,CAAC;IAC7B;IAEA,IAAI,CAACpB,KAAK,CAACC,KAAK,CAACC,KAAK,GAAI,IAAI,CAACF,KAAK,CAACC,KAAK,CAACC,KAAK,IAAIxB,wDAAG,CAACyB,KAAK,CAACC,WAAW,CAAC,CAAC,IAAK,EAAE;IAClF,IAAMF,KAAK,GAAG,IAAI,CAACF,KAAK,CAACC,KAAK,CAACC,KAAK;IACpC,IAAI,CAACF,KAAK,CAACC,KAAK,CAACI,KAAK,GAAI,IAAI,CAACL,KAAK,CAACC,KAAK,CAACI,KAAK,IAAI3B,wDAAG,CAACyB,KAAK,CAACG,gBAAgB,CAAC,CAAC,IAAK,CAAC;IACtF,IAAMD,KAAK,GAAG,IAAI,CAACL,KAAK,CAACC,KAAK,CAACI,KAAK;IAEpC,OACEc,CAAA;MAAKL,SAAS,EAAC;IAA+B,GAC5CK,CAAA;MAAKL,SAAS,EAAC;IAAuC,GACnDZ,KAAK,CAACmB,MAAM,KAAK,CAAC,GAAG3C,wDAAG,CAACQ,UAAU,CAACC,KAAK,CAAC,8CAA8C,CAAC,GAAG,IAC1F,CAAC,EACNgC,CAAA;MAAKL,SAAS,EAAC;IAAoC,GAChDZ,KAAK,CAACoB,GAAG,CAAC,UAACC,IAAU;MAAA,OACpBJ,CAAA,CAACK,oEAAI;QAACC,IAAI,EAAE/C,wDAAG,CAACgD,KAAK,CAAC,MAAM,EAAE;UAAEC,QAAQ,EAAEJ,IAAI,CAACK,IAAI,CAAC;QAAE,CAAC,CAAE;QAACd,SAAS,EAAC;MAAoC,GACtGK,CAAA,CAACU,uEAAO;QAACC,IAAI,EAAEP,IAAI,CAACQ,WAAW,CAAC;MAAE,GAAEC,mEAAM,CAACT,IAAI,CAAW,CACtD,CAAC;IAAA,CACR,CAAC,EACDlB,KAAK,GAAGH,KAAK,CAACmB,MAAM,GACnBF,CAAA;MAAML,SAAS,EAAC;IAA6E,GAC3FK,CAAA;MAAML,SAAS,EAAC;IAAQ,GAAET,KAAK,GAAG,EAAE,UAAMA,KAAK,GAAGH,KAAK,CAACmB,MAAM,WAAS,EAAE,GAAGnB,KAAK,CAACmB,MAAM,SAAY,CAChG,CAAC,GACL,IACD,CACF,CAAC;EAEV,CAAC;EAAAxB,MAAA,CAEDgB,IAAI,GAAJ,SAAAA,IAAIA,CAAA,EAAS;IACX,IAAI,IAAI,CAACoB,uBAAuB,EAAE;MAChC,IAAI,CAACC,UAAU,CAACxD,wDAAG,CAACyB,KAAK,CAACC,WAAW,CAAC,CAAC,CAAC;MACxC;IACF;IAEA,IAAI,CAACJ,KAAK,CAACC,KAAK,CAACiB,SAAS,GAAG,IAAI;IACjCT,OAAO,CAACC,GAAG,CAAC,kBAAkB,CAAC;IAE/B,IAAMyB,QAAQ,GAAGzD,wDAAG,CAAC0D,OAAO,CAAsB;MAChDC,MAAM,EAAE,KAAK;MACbC,GAAG,EAAE5D,wDAAG,CAACyB,KAAK,CAACK,SAAS,CAAC,QAAQ,CAAC,GAAG;IACvC,CAAC,CAAC;IACF0B,UAAU,CAACC,QAAQ,CAACI,IAAI,EAAEJ,QAAQ,CAACK,IAAI,CAAC;EAC1C,CAAC;EAAA3C,MAAA,CAEDqC,UAAU,GAAV,SAAAA,UAAUA,CAACK,IAAI,EAAEC,IAAI,EAAE;IACrBtC,KAAK,GAAG,IAAI,CAACuC,eAAe,CAACvC,KAAK,CAAC;IACnC,IAAI,CAACF,KAAK,CAACC,KAAK,CAACC,KAAK,GAAGqC,IAAI;IAC7B,IAAI,CAACvC,KAAK,CAACC,KAAK,CAACI,KAAK,GAAGmC,IAAI,oBAAJA,IAAI,CAAEE,UAAU;IACzC,IAAI,CAAC1C,KAAK,CAACC,KAAK,CAACiB,SAAS,GAAG,KAAK;IAClC,IAAI,CAAClB,KAAK,CAACC,KAAK,CAAC0C,SAAS,GAAG,IAAI;IACjCxB,CAAC,CAACyB,MAAM,CAAC,CAAC;IACVnC,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;EACvB,CAAC;EAAA,OAAAjB,iBAAA;AAAA,EAjF4CoD,0GAAM;;;;;;;;;;;;;ACXrD;AAAA;AAAA;AAAA;AAAuF;AACxB;AAIhD,yEAAUnE,GAAwC,EAAE;EACjE,IAAIoE,uGAAO,CAAC,CAAC,CACVlE,GAAG,CAAC;IACHmE,GAAG,EAAE,aAAa;IAClBC,SAAS,EAAEvD,qEAAiB;IAC5BwD,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAiB;MACzB,IAAM7C,WAAW,GAAG1B,GAAG,CAACyB,KAAK,CAACC,WAAW,CAAC,CAAC;MAE3C,OAAO8C,OAAO,CAAC,CAACxE,GAAG,CAACyB,KAAK,CAACK,SAAS,CAAU,0BAA0B,CAAC,IAAI,CAACJ,WAAW,IAAI,CAACA,WAAW,CAACiB,MAAM,CAAC;IAClH,CAAC;IACD8B,QAAQ,EAAE,IAAI;IACdC,SAAS,EAAE,KAAK;IAChBC,QAAQ,EAAE;EACZ,CAAC,CAAC,CACDC,MAAM,CAAC5E,GAAG,EAAE,2BAA2B,CAAC;AAC7C,C;;;;;;;;;;;ACpBA,iD;;;;;;;;;;;ACAA,kD;;;;;;;;;;;ACAA,8D;;;;;;;;;;;ACAA,0E;;;;;;;;;;;ACAA,iE;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,oG;;;;;;;;;;;ACAA,iG","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index 61ece37..ad06459 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,2 +1,456 @@ -module.exports=function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=13)}([function(e,n){e.exports=flarum.core.compat["common/app"]},,function(e,n){e.exports=flarum.core.compat["extensions/afrux-forum-widgets-core/common/extend/Widgets"]},function(e,n){e.exports=flarum.core.compat["common/components/LoadingIndicator"]},function(e,n){e.exports=flarum.core.compat["common/components/Tooltip"]},function(e,n){e.exports=flarum.core.compat["common/helpers/avatar"]},function(e,n){e.exports=flarum.core.compat["common/components/Link"]},function(e,n){e.exports=flarum.core.compat["common/utils/extractText"]},function(e,n){e.exports=flarum.core.compat["extensions/afrux-forum-widgets-core/common/components/Widget"]},function(e,n,t){"use strict";var r=t(2),o=t.n(r);function s(e,n){return(s=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e})(e,n)}var u=t(0),a=t.n(u),i=t(3),c=t.n(i),l=t(4),f=t.n(l),p=t(5),d=t.n(p),x=t(6),g=t.n(x),y=t(7),O=t.n(y),v=t(8),b=function(e){var n,t;function r(){return e.apply(this,arguments)||this}t=e,(n=r).prototype=Object.create(t.prototype),n.prototype.constructor=n,s(n,t);var o=r.prototype;return o.className=function(){return"Afrux-OnlineUsersWidget"},o.icon=function(){return"fas fa-user-friends"},o.title=function(){return O()(a.a.translator.trans("afrux-online-users-widget.forum.widget.title"))},o.content=function(){if(this.attrs.state.isLoading)return m(c.a,null);var e=a.a.forum.onlineUsers()||[],n=a.a.forum.totalOnlineUsers()||0;return m("div",{className:"Afrux-OnlineUsersWidget-users"},m("div",{className:"Afrux-OnlineUsersWidget-users-message"},0===e.length?a.a.translator.trans("afrux-online-users-widget.forum.widget.empty"):null),m("div",{className:"Afrux-OnlineUsersWidget-users-list"},e.map((function(e){return m(g.a,{href:a.a.route("user",{username:e.slug()}),className:"Afrux-OnlineUsersWidget-users-item"},m(f.a,{text:e.displayName()},d()(e)))})),n>e.length?m("span",{className:"Afrux-OnlineUsersWidget-users-item Afrux-OnlineUsersWidget-users-item--plus"},m("span",{className:"Avatar"},"+"+(n-e.length))):null))},r}(t.n(v).a);n.a=function(e){(new o.a).add({key:"onlineUsers",component:b,isDisabled:function(){var n=e.forum.onlineUsers();return Boolean(!e.forum.attribute("canViewOnlineUsersWidget")||!n||!n.length)},isUnique:!0,placement:"end",position:1}).extend(e,"afrux-online-users-widget")}},function(e,n){e.exports=flarum.core.compat["forum/app"]},function(e,n){e.exports=flarum.core.compat["common/extenders"]},function(e,n){e.exports=flarum.core.compat["common/models/Forum"]},function(e,n,t){"use strict";t.r(n),t.d(n,"extend",(function(){return l}));var r=t(10),o=t.n(r),s=t(9),u=t(11),a=t.n(u),i=t(12),c=t.n(i),l=[new a.a.Model(c.a).attribute("totalOnlineUsers").hasMany("onlineUsers")];o.a.initializers.add("afrux/online-users-widget",(function(){Object(s.a)(o.a)}))}]); +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./forum.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./forum.js": +/*!******************!*\ + !*** ./forum.js ***! + \******************/ +/*! exports provided: extend */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _src_forum__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/forum */ "./src/forum/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return _src_forum__WEBPACK_IMPORTED_MODULE_0__["extend"]; }); + + + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": +/*!******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***! + \******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _inheritsLoose; }); +/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setPrototypeOf.js */ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js"); + +function _inheritsLoose(t, o) { + t.prototype = Object.create(o.prototype), t.prototype.constructor = t, Object(_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(t, o); +} + + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _setPrototypeOf; }); +function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { + return t.__proto__ = e, t; + }, _setPrototypeOf(t, e); +} + + +/***/ }), + +/***/ "./src/common/components/OnlineUsersWidget.tsx": +/*!*****************************************************!*\ + !*** ./src/common/components/OnlineUsersWidget.tsx ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OnlineUsersWidget; }); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/common/app */ "flarum/common/app"); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_common_app__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/helpers/avatar */ "flarum/common/helpers/avatar"); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Link */ "flarum/common/components/Link"); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/utils/extractText */ "flarum/common/utils/extractText"); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/components/Widget */ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget"); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__); + + + + + + + + +var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { + function OnlineUsersWidget() { + return _Widget.apply(this, arguments) || this; + } + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(OnlineUsersWidget, _Widget); + var _proto = OnlineUsersWidget.prototype; + _proto.oncreate = function oncreate(vnode) { + this.attrs.state.users = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; + this.attrs.state.total = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; + this.attrs.state.max = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers") || 15; + console.log("max: " + flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers")); + if (!this.attrs.state.timerAdded) { + console.log("onliner timer added"); + setInterval(this.load.bind(this), 120000); + this.attrs.state.timerAdded = true; + } + }; + _proto.className = function className() { + return 'Afrux-OnlineUsersWidget'; + }; + _proto.icon = function icon() { + return 'fas fa-user-friends'; + }; + _proto.title = function title() { + return flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default()(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.title')); + }; + _proto.content = function content() { + if (this.attrs.state.isLoading) { + return m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default.a, null); + } + this.attrs.state.users = this.attrs.state.users || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; + var users = this.attrs.state.users; + this.attrs.state.total = this.attrs.state.total || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; + var total = this.attrs.state.total; + return m("div", { + className: "Afrux-OnlineUsersWidget-users" + }, m("div", { + className: "Afrux-OnlineUsersWidget-users-message" + }, users.length === 0 ? flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.empty') : null), m("div", { + className: "Afrux-OnlineUsersWidget-users-list" + }, users.map(function (user) { + return m(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default.a, { + href: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.route('user', { + username: user.slug() + }), + className: "Afrux-OnlineUsersWidget-users-item" + }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, { + text: user.displayName() + }, flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default()(user))); + }), total > users.length ? m("span", { + className: "Afrux-OnlineUsersWidget-users-item Afrux-OnlineUsersWidget-users-item--plus" + }, m("span", { + className: "Avatar" + }, total < 50 ? "+" + (total - users.length) : "+" + (50 - users.length) + "...")) : null)); + }; + _proto.load = function load() { + if (this.loadWithInitialResponse) { + this.setResults(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers()); + return; + } + this.attrs.state.isLoading = true; + console.log("reloading widget"); + var response = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ + method: 'GET', + url: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + '/online-users' + }); + setResults(response.data, response.meta); + }; + _proto.setResults = function setResults(data, meta) { + users = this.filterTimeUsers(users); + this.attrs.state.users = data; + this.attrs.state.total = meta == null ? void 0 : meta.totalCount; + this.attrs.state.isLoading = false; + this.attrs.state.hasLoaded = true; + m.redraw(); + console.log("redrew"); + }; + return OnlineUsersWidget; +}(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default.a); + + +/***/ }), + +/***/ "./src/common/registerWidget.ts": +/*!**************************************!*\ + !*** ./src/common/registerWidget.ts ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets */ "flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets"); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _components_OnlineUsersWidget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/OnlineUsersWidget */ "./src/common/components/OnlineUsersWidget.tsx"); + + +/* harmony default export */ __webpack_exports__["default"] = (function (app) { + new flarum_extensions_afrux_forum_widgets_core_common_extend_Widgets__WEBPACK_IMPORTED_MODULE_0___default.a().add({ + key: 'onlineUsers', + component: _components_OnlineUsersWidget__WEBPACK_IMPORTED_MODULE_1__["default"], + isDisabled: function isDisabled() { + var onlineUsers = app.forum.onlineUsers(); + return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length); + }, + isUnique: true, + placement: 'end', + position: 1 + }).extend(app, 'afrux-online-users-widget'); +}); + +/***/ }), + +/***/ "./src/forum/extend.ts": +/*!*****************************!*\ + !*** ./src/forum/extend.ts ***! + \*****************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_common_extenders__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/common/extenders */ "flarum/common/extenders"); +/* harmony import */ var flarum_common_extenders__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_common_extenders__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var flarum_common_models_Forum__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/common/models/Forum */ "flarum/common/models/Forum"); +/* harmony import */ var flarum_common_models_Forum__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_common_models_Forum__WEBPACK_IMPORTED_MODULE_1__); + + +/* harmony default export */ __webpack_exports__["default"] = ([new flarum_common_extenders__WEBPACK_IMPORTED_MODULE_0___default.a.Model(flarum_common_models_Forum__WEBPACK_IMPORTED_MODULE_1___default.a) // +.attribute('totalOnlineUsers').hasMany('onlineUsers')]); + +/***/ }), + +/***/ "./src/forum/index.ts": +/*!****************************!*\ + !*** ./src/forum/index.ts ***! + \****************************/ +/*! exports provided: extend */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var flarum_forum_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! flarum/forum/app */ "flarum/forum/app"); +/* harmony import */ var flarum_forum_app__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(flarum_forum_app__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _common_registerWidget__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/registerWidget */ "./src/common/registerWidget.ts"); +/* harmony import */ var _extend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./extend */ "./src/forum/extend.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return _extend__WEBPACK_IMPORTED_MODULE_2__["default"]; }); + + + + +flarum_forum_app__WEBPACK_IMPORTED_MODULE_0___default.a.initializers.add('afrux/online-users-widget', function () { + Object(_common_registerWidget__WEBPACK_IMPORTED_MODULE_1__["default"])(flarum_forum_app__WEBPACK_IMPORTED_MODULE_0___default.a); +}); + +/***/ }), + +/***/ "flarum/common/app": +/*!***************************************************!*\ + !*** external "flarum.core.compat['common/app']" ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/app']; + +/***/ }), + +/***/ "flarum/common/components/Link": +/*!***************************************************************!*\ + !*** external "flarum.core.compat['common/components/Link']" ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Link']; + +/***/ }), + +/***/ "flarum/common/components/LoadingIndicator": +/*!***************************************************************************!*\ + !*** external "flarum.core.compat['common/components/LoadingIndicator']" ***! + \***************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/LoadingIndicator']; + +/***/ }), + +/***/ "flarum/common/components/Tooltip": +/*!******************************************************************!*\ + !*** external "flarum.core.compat['common/components/Tooltip']" ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/components/Tooltip']; + +/***/ }), + +/***/ "flarum/common/extenders": +/*!*********************************************************!*\ + !*** external "flarum.core.compat['common/extenders']" ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/extenders']; + +/***/ }), + +/***/ "flarum/common/helpers/avatar": +/*!**************************************************************!*\ + !*** external "flarum.core.compat['common/helpers/avatar']" ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/helpers/avatar']; + +/***/ }), + +/***/ "flarum/common/models/Forum": +/*!************************************************************!*\ + !*** external "flarum.core.compat['common/models/Forum']" ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/models/Forum']; + +/***/ }), + +/***/ "flarum/common/utils/extractText": +/*!*****************************************************************!*\ + !*** external "flarum.core.compat['common/utils/extractText']" ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['common/utils/extractText']; + +/***/ }), + +/***/ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget": +/*!*****************************************************************************************************!*\ + !*** external "flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']" ***! + \*****************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']; + +/***/ }), + +/***/ "flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets": +/*!**************************************************************************************************!*\ + !*** external "flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']" ***! + \**************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']; + +/***/ }), + +/***/ "flarum/forum/app": +/*!**************************************************!*\ + !*** external "flarum.core.compat['forum/app']" ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = flarum.core.compat['forum/app']; + +/***/ }) + +/******/ }); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index 056753f..9a14221 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_setPrototypeOf","setPrototypeOf","__proto__","OnlineUsersWidget","_Widget","subClass","superClass","apply","arguments","constructor","_proto","className","icon","title","extractText","app","translator","trans","content","this","attrs","state","isLoading","LoadingIndicator","users","forum","onlineUsers","total","totalOnlineUsers","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","Widget","Widgets","add","component","isDisabled","Boolean","attribute","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n const users = app.forum.onlineUsers() || [];\n const total = app.forum.totalOnlineUsers() || 0;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {`+${total - users.length}`}\n \n ) : null}\n
\n
\n );\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/models/Forum'];","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/common/components/OnlineUsersWidget.tsx b/js/src/common/components/OnlineUsersWidget.tsx index 9cbc85b..5233a04 100644 --- a/js/src/common/components/OnlineUsersWidget.tsx +++ b/js/src/common/components/OnlineUsersWidget.tsx @@ -10,6 +10,19 @@ import type User from 'flarum/common/models/User'; import Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget'; export default class OnlineUsersWidget extends Widget { + + oncreate(vnode): void { + this.attrs.state.users = app.forum.onlineUsers() || []; + this.attrs.state.total = app.forum.totalOnlineUsers() || 0; + this.attrs.state.max = app.forum.attribute("afrux-online-users-widget.maxUsers") || 15; + console.log("max: " + app.forum.attribute("afrux-online-users-widget.maxUsers")); + if (!this.attrs.state.timerAdded) { + console.log("onliner timer added"); + setInterval(this.load.bind(this), 120000); + this.attrs.state.timerAdded = true; + } + } + className(): string { return 'Afrux-OnlineUsersWidget'; } @@ -27,8 +40,10 @@ export default class OnlineUsersWidget extends Widget { return ; } - const users = app.forum.onlineUsers() || []; - const total = app.forum.totalOnlineUsers() || 0; + this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || []; + const users = this.attrs.state.users; + this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0; + const total = this.attrs.state.total; return (
@@ -43,11 +58,37 @@ export default class OnlineUsersWidget extends Widget { ))} {total > users.length ? ( - {`+${total - users.length}`} + {total < 50? `+${total - users.length}` : `+${50 - users.length}...`} ) : null}
); } + + load(): void { + if (this.loadWithInitialResponse) { + this.setResults(app.forum.onlineUsers()); + return; + } + + this.attrs.state.isLoading = true; + console.log("reloading widget"); + + const response = app.request({ + method: 'GET', + url: app.forum.attribute('apiUrl') + '/online-users' + }); + setResults(response.data, response.meta); + } + + setResults(data, meta) { + users = this.filterTimeUsers(users); + this.attrs.state.users = data; + this.attrs.state.total = meta?.totalCount; + this.attrs.state.isLoading = false; + this.attrs.state.hasLoaded = true; + m.redraw(); + console.log("redrew"); + } } diff --git a/src/Api/Controller/ListOnlineUsersController.php b/src/Api/Controller/ListOnlineUsersController.php new file mode 100755 index 0000000..b060668 --- /dev/null +++ b/src/Api/Controller/ListOnlineUsersController.php @@ -0,0 +1,37 @@ +repository = $repository; + } + + protected function data(ServerRequestInterface $request, Document $document) + { + $actor = RequestUtil::getActor($request); + $actor->assertCan('viewOnlineUsersWidget'); + + $limit = $this->extractLimit($request); + $offset = $this->extractOffset($request); + + $result = $this->repository->getOnlineUsers($actor); + $document->setMeta([ + 'totalCount' => $result['count'], + ]); + return $result['users']; + } +} \ No newline at end of file From bba48bf9e783b95a7385a6762668ffe9bbf73475 Mon Sep 17 00:00:00 2001 From: Edge Date: Sat, 24 May 2025 15:43:09 +0800 Subject: [PATCH 2/4] 1 --- js/dist/admin.js | 2 +- js/dist/admin.js.map | 2 +- js/dist/forum.js | 2 +- js/dist/forum.js.map | 2 +- js/src/common/components/OnlineUsersWidget.tsx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/js/dist/admin.js b/js/dist/admin.js index 6b85791..4d1cc97 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -276,7 +276,7 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { method: 'GET', url: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + '/online-users' }); - setResults(response.data, response.meta); + this.setResults(response.data, response.meta); }; _proto.setResults = function setResults(data, meta) { users = this.filterTimeUsers(users); diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 29420d9..9ffb4c0 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","type","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","type","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index ad06459..fa82860 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -240,7 +240,7 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { method: 'GET', url: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + '/online-users' }); - setResults(response.data, response.meta); + this.setResults(response.data, response.meta); }; _proto.setResults = function setResults(data, meta) { users = this.filterTimeUsers(users); diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index 9a14221..e84ee74 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/common/components/OnlineUsersWidget.tsx b/js/src/common/components/OnlineUsersWidget.tsx index 5233a04..8c5ed7c 100644 --- a/js/src/common/components/OnlineUsersWidget.tsx +++ b/js/src/common/components/OnlineUsersWidget.tsx @@ -79,7 +79,7 @@ export default class OnlineUsersWidget extends Widget { method: 'GET', url: app.forum.attribute('apiUrl') + '/online-users' }); - setResults(response.data, response.meta); + this.setResults(response.data, response.meta); } setResults(data, meta) { From 7651ba65f6a257123fcb08bf582b90f8b24d026e Mon Sep 17 00:00:00 2001 From: Edge Date: Sat, 24 May 2025 15:57:53 +0800 Subject: [PATCH 3/4] fix --- js/dist/admin.js | 1 - js/dist/admin.js.map | 2 +- js/dist/forum.js | 1 - js/dist/forum.js.map | 2 +- js/src/common/components/OnlineUsersWidget.tsx | 1 - 5 files changed, 2 insertions(+), 5 deletions(-) diff --git a/js/dist/admin.js b/js/dist/admin.js index 4d1cc97..e3f9c53 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -279,7 +279,6 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { this.setResults(response.data, response.meta); }; _proto.setResults = function setResults(data, meta) { - users = this.filterTimeUsers(users); this.attrs.state.users = data; this.attrs.state.total = meta == null ? void 0 : meta.totalCount; this.attrs.state.isLoading = false; diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 9ffb4c0..a4cd42d 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","type","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","type","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index fa82860..92bd0ac 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -243,7 +243,6 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { this.setResults(response.data, response.meta); }; _proto.setResults = function setResults(data, meta) { - users = this.filterTimeUsers(users); this.attrs.state.users = data; this.attrs.state.total = meta == null ? void 0 : meta.totalCount; this.attrs.state.isLoading = false; diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index e84ee74..1e30355 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","filterTimeUsers","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n users = this.filterTimeUsers(users);\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/common/components/OnlineUsersWidget.tsx b/js/src/common/components/OnlineUsersWidget.tsx index 8c5ed7c..59ea48c 100644 --- a/js/src/common/components/OnlineUsersWidget.tsx +++ b/js/src/common/components/OnlineUsersWidget.tsx @@ -83,7 +83,6 @@ export default class OnlineUsersWidget extends Widget { } setResults(data, meta) { - users = this.filterTimeUsers(users); this.attrs.state.users = data; this.attrs.state.total = meta?.totalCount; this.attrs.state.isLoading = false; From 9352e7fa3a7ee5c54282cf484adaaa23222ba0e2 Mon Sep 17 00:00:00 2001 From: Edge Date: Sat, 24 May 2025 23:28:05 +0800 Subject: [PATCH 4/4] fix --- js/dist/admin.js | 522 ++++++++++++++++-- js/dist/admin.js.map | 2 +- js/dist/forum.js | 522 ++++++++++++++++-- js/dist/forum.js.map | 2 +- .../common/components/OnlineUsersWidget.tsx | 30 +- 5 files changed, 982 insertions(+), 96 deletions(-) diff --git a/js/dist/admin.js b/js/dist/admin.js index e3f9c53..e7d7c65 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -99,6 +99,45 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _src_admin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/admin */ "./src/admin/index.ts"); /* empty/unused harmony star reexport */ +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js ***! + \*********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _asyncToGenerator; }); +function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), + u = i.value; + } catch (n) { + return void e(n); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); +} +function _asyncToGenerator(n) { + return function () { + var t = this, + e = arguments; + return new Promise(function (r, o) { + var a = n.apply(t, e); + function _next(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); + } + function _throw(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); + } + _next(void 0); + }); + }; +} + + /***/ }), /***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": @@ -137,6 +176,367 @@ function _setPrototypeOf(t, e) { } +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _typeof = __webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]; +function _regeneratorRuntime() { + "use strict"; + + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/typeof.js": +/*!*******************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/regenerator/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@babel/runtime/regenerator/index.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO(Babel 8): Remove this file. + +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + /***/ }), /***/ "./src/admin/index.ts": @@ -187,21 +587,26 @@ flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.initializers.add('afrux/ "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OnlineUsersWidget; }); -/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); -/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/common/app */ "flarum/common/app"); -/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_common_app__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); -/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/helpers/avatar */ "flarum/common/helpers/avatar"); -/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Link */ "flarum/common/components/Link"); -/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/utils/extractText */ "flarum/common/utils/extractText"); -/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/components/Widget */ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget"); -/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/app */ "flarum/common/app"); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_app__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/helpers/avatar */ "flarum/common/helpers/avatar"); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/common/components/Link */ "flarum/common/components/Link"); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/common/utils/extractText */ "flarum/common/utils/extractText"); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/components/Widget */ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget"); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9__); + + @@ -214,13 +619,11 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { function OnlineUsersWidget() { return _Widget.apply(this, arguments) || this; } - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(OnlineUsersWidget, _Widget); + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(OnlineUsersWidget, _Widget); var _proto = OnlineUsersWidget.prototype; _proto.oncreate = function oncreate(vnode) { - this.attrs.state.users = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; - this.attrs.state.total = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; - this.attrs.state.max = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers") || 15; - console.log("max: " + flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers")); + this.attrs.state.users = flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.onlineUsers() || []; + this.attrs.state.total = flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.totalOnlineUsers() || 0; if (!this.attrs.state.timerAdded) { console.log("onliner timer added"); setInterval(this.load.bind(this), 120000); @@ -234,50 +637,85 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { return 'fas fa-user-friends'; }; _proto.title = function title() { - return flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default()(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.title')); + return flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8___default()(flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.translator.trans('afrux-online-users-widget.forum.widget.title')); }; _proto.content = function content() { if (this.attrs.state.isLoading) { - return m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default.a, null); + return m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4___default.a, null); } - this.attrs.state.users = this.attrs.state.users || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; + this.attrs.state.users = this.attrs.state.users || flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.onlineUsers() || []; var users = this.attrs.state.users; - this.attrs.state.total = this.attrs.state.total || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; + this.attrs.state.total = this.attrs.state.total || flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.totalOnlineUsers() || 0; var total = this.attrs.state.total; return m("div", { className: "Afrux-OnlineUsersWidget-users" }, m("div", { className: "Afrux-OnlineUsersWidget-users-message" - }, users.length === 0 ? flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.empty') : null), m("div", { + }, users.length === 0 ? flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.translator.trans('afrux-online-users-widget.forum.widget.empty') : null), m("div", { className: "Afrux-OnlineUsersWidget-users-list" }, users.map(function (user) { - return m(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default.a, { - href: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.route('user', { + return m(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7___default.a, { + href: flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.route('user', { username: user.slug() }), className: "Afrux-OnlineUsersWidget-users-item" - }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, { + }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, { text: user.displayName() - }, flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default()(user))); + }, flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6___default()(user))); }), total > users.length ? m("span", { className: "Afrux-OnlineUsersWidget-users-item Afrux-OnlineUsersWidget-users-item--plus" }, m("span", { className: "Avatar" }, total < 50 ? "+" + (total - users.length) : "+" + (50 - users.length) + "...")) : null)); }; - _proto.load = function load() { - if (this.loadWithInitialResponse) { - this.setResults(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers()); - return; + _proto.load = /*#__PURE__*/function () { + var _load = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() { + var response, users; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this.loadWithInitialResponse) { + _context.next = 3; + break; + } + this.setResults(flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.onlineUsers()); + return _context.abrupt("return"); + case 3: + this.attrs.state.isLoading = true; + _context.prev = 4; + _context.next = 7; + return flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.request({ + method: 'GET', + url: flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.attribute('apiUrl') + '/online-users' + }); + case 7: + response = _context.sent; + flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.store.pushPayload(response); + users = response.data.map(function (userData) { + return flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.store.getById('users', userData.id); + }); + this.setResults(users, response.meta); + _context.next = 16; + break; + case 13: + _context.prev = 13; + _context.t0 = _context["catch"](4); + console.error(_context.t0); + case 16: + _context.prev = 16; + this.attrs.state.isLoading = false; + return _context.finish(16); + case 19: + case "end": + return _context.stop(); + } + }, _callee, this, [[4, 13, 16, 19]]); + })); + function load() { + return _load.apply(this, arguments); } - this.attrs.state.isLoading = true; - console.log("reloading widget"); - var response = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ - method: 'GET', - url: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + '/online-users' - }); - this.setResults(response.data, response.meta); - }; + return load; + }(); _proto.setResults = function setResults(data, meta) { this.attrs.state.users = data; this.attrs.state.total = meta == null ? void 0 : meta.totalCount; @@ -287,7 +725,7 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { console.log("redrew"); }; return OnlineUsersWidget; -}(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default.a); +}(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9___default.a); /***/ }), diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index a4cd42d..dc58a09 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","type","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./admin.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/regenerator/index.js","webpack://@afrux/online-users-widget/./src/admin/index.ts","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['admin/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\""],"names":["asyncGeneratorStep","n","t","e","r","o","a","c","i","u","value","done","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_inheritsLoose","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","bind","__proto__","_typeof","require","_regeneratorRuntime","module","exports","__esModule","hasOwnProperty","defineProperty","Symbol","iterator","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","name","mark","awrap","async","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","app","initializers","add","registerWidget","extensionData","registerSetting","setting","label","translator","trans","registerPermission","icon","permission","allowGuest","OnlineUsersWidget","_Widget","_proto","oncreate","vnode","attrs","state","users","forum","onlineUsers","total","totalOnlineUsers","timerAdded","console","log","setInterval","load","className","title","extractText","content","isLoading","m","LoadingIndicator","map","user","Link","href","route","username","slug","Tooltip","text","avatar","_load","_callee","response","_callee$","_context","loadWithInitialResponse","setResults","request","url","attribute","store","pushPayload","data","userData","getById","id","meta","t0","error","totalCount","hasLoaded","redraw","Widget","Widgets","key","component","isDisabled","Boolean","isUnique","placement","position","extend"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import app from 'flarum/admin/app';\nimport registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n\n app.extensionData\n .for('afrux-online-users-widget')\n .registerSetting({\n setting: 'afrux-online-users-widget.max_users',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.max_users'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.last_seen_interval',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.last_seen_interval'),\n type: 'number',\n })\n .registerSetting({\n setting: 'afrux-online-users-widget.cache_ttl',\n label: app.translator.trans('afrux-online-users-widget.admin.settings.cache_ttl'),\n type: 'number',\n })\n .registerPermission(\n {\n icon: 'fas fa-user-clock',\n label: app.translator.trans('afrux-online-users-widget.admin.permissions.view_online_users_widget'),\n permission: 'viewOnlineUsersWidget',\n allowGuest: true,\n },\n 'view'\n );\n});\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n \n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n async load(): Promise {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n\n try {\n const response = await app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n\n app.store.pushPayload(response);\n \n const users = response.data.map(userData => \n app.store.getById('users', userData.id)\n );\n\n this.setResults(users, response.meta);\n } catch (error) {\n console.error(error);\n } finally {\n this.attrs.state.isLoading = false;\n }\n }\n\n setResults(data, meta) {\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","module.exports = flarum.core.compat['admin/app'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index 92bd0ac..c47bb3b 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -101,6 +101,45 @@ __webpack_require__.r(__webpack_exports__); +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js": +/*!*********************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js ***! + \*********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _asyncToGenerator; }); +function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), + u = i.value; + } catch (n) { + return void e(n); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); +} +function _asyncToGenerator(n) { + return function () { + var t = this, + e = arguments; + return new Promise(function (r, o) { + var a = n.apply(t, e); + function _next(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n); + } + function _throw(n) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); + } + _next(void 0); + }); + }; +} + + /***/ }), /***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js": @@ -139,6 +178,367 @@ function _setPrototypeOf(t, e) { } +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _typeof = __webpack_require__(/*! ./typeof.js */ "./node_modules/@babel/runtime/helpers/typeof.js")["default"]; +function _regeneratorRuntime() { + "use strict"; + + /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + module.exports = _regeneratorRuntime = function _regeneratorRuntime() { + return e; + }, module.exports.__esModule = true, module.exports["default"] = module.exports; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function define(t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function value(t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function reset(e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function stop() { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function dispatchException(e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function abrupt(t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function complete(t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function finish(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + "catch": function _catch(t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw Error("illegal catch attempt"); + }, + delegateYield: function delegateYield(e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; +} +module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/typeof.js": +/*!*******************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +function _typeof(o) { + "@babel/helpers - typeof"; + + return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); +} +module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; + +/***/ }), + +/***/ "./node_modules/@babel/runtime/regenerator/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@babel/runtime/regenerator/index.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// TODO(Babel 8): Remove this file. + +var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ "./node_modules/@babel/runtime/helpers/regeneratorRuntime.js")(); +module.exports = runtime; + +// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + if (typeof globalThis === "object") { + globalThis.regeneratorRuntime = runtime; + } else { + Function("r", "regeneratorRuntime = r")(runtime); + } +} + /***/ }), /***/ "./src/common/components/OnlineUsersWidget.tsx": @@ -151,21 +551,26 @@ function _setPrototypeOf(t, e) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OnlineUsersWidget; }); -/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); -/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/common/app */ "flarum/common/app"); -/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_common_app__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); -/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); -/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/helpers/avatar */ "flarum/common/helpers/avatar"); -/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Link */ "flarum/common/components/Link"); -/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/utils/extractText */ "flarum/common/utils/extractText"); -/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/components/Widget */ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget"); -/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"); +/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/app */ "flarum/common/app"); +/* harmony import */ var flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_app__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator"); +/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip"); +/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/helpers/avatar */ "flarum/common/helpers/avatar"); +/* harmony import */ var flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6__); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/common/components/Link */ "flarum/common/components/Link"); +/* harmony import */ var flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7__); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/common/utils/extractText */ "flarum/common/utils/extractText"); +/* harmony import */ var flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8__); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! flarum/extensions/afrux-forum-widgets-core/common/components/Widget */ "flarum/extensions/afrux-forum-widgets-core/common/components/Widget"); +/* harmony import */ var flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9__); + + @@ -178,13 +583,11 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { function OnlineUsersWidget() { return _Widget.apply(this, arguments) || this; } - Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(OnlineUsersWidget, _Widget); + Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(OnlineUsersWidget, _Widget); var _proto = OnlineUsersWidget.prototype; _proto.oncreate = function oncreate(vnode) { - this.attrs.state.users = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; - this.attrs.state.total = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; - this.attrs.state.max = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers") || 15; - console.log("max: " + flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute("afrux-online-users-widget.maxUsers")); + this.attrs.state.users = flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.onlineUsers() || []; + this.attrs.state.total = flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.totalOnlineUsers() || 0; if (!this.attrs.state.timerAdded) { console.log("onliner timer added"); setInterval(this.load.bind(this), 120000); @@ -198,50 +601,85 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { return 'fas fa-user-friends'; }; _proto.title = function title() { - return flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_6___default()(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.title')); + return flarum_common_utils_extractText__WEBPACK_IMPORTED_MODULE_8___default()(flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.translator.trans('afrux-online-users-widget.forum.widget.title')); }; _proto.content = function content() { if (this.attrs.state.isLoading) { - return m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_2___default.a, null); + return m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_4___default.a, null); } - this.attrs.state.users = this.attrs.state.users || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers() || []; + this.attrs.state.users = this.attrs.state.users || flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.onlineUsers() || []; var users = this.attrs.state.users; - this.attrs.state.total = this.attrs.state.total || flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.totalOnlineUsers() || 0; + this.attrs.state.total = this.attrs.state.total || flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.totalOnlineUsers() || 0; var total = this.attrs.state.total; return m("div", { className: "Afrux-OnlineUsersWidget-users" }, m("div", { className: "Afrux-OnlineUsersWidget-users-message" - }, users.length === 0 ? flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('afrux-online-users-widget.forum.widget.empty') : null), m("div", { + }, users.length === 0 ? flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.translator.trans('afrux-online-users-widget.forum.widget.empty') : null), m("div", { className: "Afrux-OnlineUsersWidget-users-list" }, users.map(function (user) { - return m(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_5___default.a, { - href: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.route('user', { + return m(flarum_common_components_Link__WEBPACK_IMPORTED_MODULE_7___default.a, { + href: flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.route('user', { username: user.slug() }), className: "Afrux-OnlineUsersWidget-users-item" - }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, { + }, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, { text: user.displayName() - }, flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_4___default()(user))); + }, flarum_common_helpers_avatar__WEBPACK_IMPORTED_MODULE_6___default()(user))); }), total > users.length ? m("span", { className: "Afrux-OnlineUsersWidget-users-item Afrux-OnlineUsersWidget-users-item--plus" }, m("span", { className: "Avatar" }, total < 50 ? "+" + (total - users.length) : "+" + (50 - users.length) + "...")) : null)); }; - _proto.load = function load() { - if (this.loadWithInitialResponse) { - this.setResults(flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.onlineUsers()); - return; + _proto.load = /*#__PURE__*/function () { + var _load = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__["default"])(/*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee() { + var response, users; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + if (!this.loadWithInitialResponse) { + _context.next = 3; + break; + } + this.setResults(flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.onlineUsers()); + return _context.abrupt("return"); + case 3: + this.attrs.state.isLoading = true; + _context.prev = 4; + _context.next = 7; + return flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.request({ + method: 'GET', + url: flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.forum.attribute('apiUrl') + '/online-users' + }); + case 7: + response = _context.sent; + flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.store.pushPayload(response); + users = response.data.map(function (userData) { + return flarum_common_app__WEBPACK_IMPORTED_MODULE_3___default.a.store.getById('users', userData.id); + }); + this.setResults(users, response.meta); + _context.next = 16; + break; + case 13: + _context.prev = 13; + _context.t0 = _context["catch"](4); + console.error(_context.t0); + case 16: + _context.prev = 16; + this.attrs.state.isLoading = false; + return _context.finish(16); + case 19: + case "end": + return _context.stop(); + } + }, _callee, this, [[4, 13, 16, 19]]); + })); + function load() { + return _load.apply(this, arguments); } - this.attrs.state.isLoading = true; - console.log("reloading widget"); - var response = flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({ - method: 'GET', - url: flarum_common_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + '/online-users' - }); - this.setResults(response.data, response.meta); - }; + return load; + }(); _proto.setResults = function setResults(data, meta) { this.attrs.state.users = data; this.attrs.state.total = meta == null ? void 0 : meta.totalCount; @@ -251,7 +689,7 @@ var OnlineUsersWidget = /*#__PURE__*/function (_Widget) { console.log("redrew"); }; return OnlineUsersWidget; -}(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_7___default.a); +}(flarum_extensions_afrux_forum_widgets_core_common_components_Widget__WEBPACK_IMPORTED_MODULE_9___default.a); /***/ }), diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index 1e30355..780fdc1 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["_inheritsLoose","t","o","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","e","bind","__proto__","OnlineUsersWidget","_Widget","apply","arguments","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","max","attribute","console","log","timerAdded","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","length","map","user","Link","href","route","username","slug","Tooltip","text","displayName","avatar","loadWithInitialResponse","setResults","response","request","method","url","data","meta","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n this.attrs.state.max = app.forum.attribute(\"afrux-online-users-widget.maxUsers\") || 15;\n console.log(\"max: \" + app.forum.attribute(\"afrux-online-users-widget.maxUsers\"));\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n\n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n load(): void {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n console.log(\"reloading widget\");\n\n const response = app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n this.setResults(response.data, response.meta);\n }\n\n setResults(data, meta) {\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@afrux/online-users-widget/webpack/bootstrap","webpack://@afrux/online-users-widget/./forum.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@afrux/online-users-widget/./node_modules/@babel/runtime/regenerator/index.js","webpack://@afrux/online-users-widget/./src/common/components/OnlineUsersWidget.tsx","webpack://@afrux/online-users-widget/./src/common/registerWidget.ts","webpack://@afrux/online-users-widget/./src/forum/extend.ts","webpack://@afrux/online-users-widget/./src/forum/index.ts","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/extenders']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/models/Forum']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['common/utils/extractText']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/online-users-widget/external \"flarum.core.compat['forum/app']\""],"names":["asyncGeneratorStep","n","t","e","r","o","a","c","i","u","value","done","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_inheritsLoose","prototype","Object","create","constructor","setPrototypeOf","_setPrototypeOf","bind","__proto__","_typeof","require","_regeneratorRuntime","module","exports","__esModule","hasOwnProperty","defineProperty","Symbol","iterator","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","name","mark","awrap","async","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","_catch","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","OnlineUsersWidget","_Widget","_proto","oncreate","vnode","attrs","state","users","app","forum","onlineUsers","total","totalOnlineUsers","timerAdded","console","log","setInterval","load","className","icon","title","extractText","translator","trans","content","isLoading","m","LoadingIndicator","map","user","Link","href","route","username","slug","Tooltip","text","avatar","_load","_callee","response","_callee$","_context","loadWithInitialResponse","setResults","request","url","attribute","store","pushPayload","data","userData","getById","id","meta","t0","error","totalCount","hasLoaded","redraw","Widget","Widgets","add","key","component","isDisabled","Boolean","isUnique","placement","position","extend","Extend","Model","Forum","hasMany","initializers","registerWidget"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum';\n","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import app from 'flarum/common/app';\nimport type Mithril from 'mithril';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Link from 'flarum/common/components/Link';\nimport extractText from 'flarum/common/utils/extractText';\nimport type User from 'flarum/common/models/User';\n\nimport Widget, { type WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class OnlineUsersWidget extends Widget {\n\n oncreate(vnode): void {\n this.attrs.state.users = app.forum.onlineUsers() || [];\n this.attrs.state.total = app.forum.totalOnlineUsers() || 0;\n if (!this.attrs.state.timerAdded) {\n console.log(\"onliner timer added\");\n setInterval(this.load.bind(this), 120000);\n this.attrs.state.timerAdded = true;\n }\n }\n\n className(): string {\n return 'Afrux-OnlineUsersWidget';\n }\n\n icon(): string {\n return 'fas fa-user-friends';\n }\n\n title(): string {\n return extractText(app.translator.trans('afrux-online-users-widget.forum.widget.title'));\n }\n\n content(): Mithril.Children {\n if (this.attrs.state.isLoading) {\n return ;\n }\n \n this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || [];\n const users = this.attrs.state.users;\n this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0;\n const total = this.attrs.state.total;\n\n return (\n
\n
\n {users.length === 0 ? app.translator.trans('afrux-online-users-widget.forum.widget.empty') : null}\n
\n
\n {users.map((user: User) => (\n \n {avatar(user)}\n \n ))}\n {total > users.length ? (\n \n {total < 50? `+${total - users.length}` : `+${50 - users.length}...`}\n \n ) : null}\n
\n
\n );\n }\n \n async load(): Promise {\n if (this.loadWithInitialResponse) {\n this.setResults(app.forum.onlineUsers());\n return;\n }\n\n this.attrs.state.isLoading = true;\n\n try {\n const response = await app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/online-users'\n });\n\n app.store.pushPayload(response);\n \n const users = response.data.map(userData => \n app.store.getById('users', userData.id)\n );\n\n this.setResults(users, response.meta);\n } catch (error) {\n console.error(error);\n } finally {\n this.attrs.state.isLoading = false;\n }\n }\n\n setResults(data, meta) {\n this.attrs.state.users = data;\n this.attrs.state.total = meta?.totalCount;\n this.attrs.state.isLoading = false;\n this.attrs.state.hasLoaded = true;\n m.redraw();\n console.log(\"redrew\");\n }\n}\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\nimport OnlineUsersWidget from './components/OnlineUsersWidget';\nimport type AdminApplication from 'flarum/admin/AdminApplication';\nimport type ForumApplication from 'flarum/forum/ForumApplication';\n\nexport default function (app: ForumApplication | AdminApplication) {\n new Widgets()\n .add({\n key: 'onlineUsers',\n component: OnlineUsersWidget,\n isDisabled: (): boolean => {\n const onlineUsers = app.forum.onlineUsers();\n\n return Boolean(!app.forum.attribute('canViewOnlineUsersWidget') || !onlineUsers || !onlineUsers.length);\n },\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'afrux-online-users-widget');\n}\n","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport type User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(Forum) //\n .attribute('totalOnlineUsers')\n .hasMany('onlineUsers'),\n];\n","import app from 'flarum/forum/app';\nimport registerWidget from '../common/registerWidget';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('afrux/online-users-widget', () => {\n registerWidget(app);\n});\n","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/components/Tooltip'];","module.exports = flarum.core.compat['common/extenders'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/models/Forum'];","module.exports = flarum.core.compat['common/utils/extractText'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['forum/app'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/common/components/OnlineUsersWidget.tsx b/js/src/common/components/OnlineUsersWidget.tsx index 59ea48c..57b2ce5 100644 --- a/js/src/common/components/OnlineUsersWidget.tsx +++ b/js/src/common/components/OnlineUsersWidget.tsx @@ -14,8 +14,6 @@ export default class OnlineUsersWidget extends Widget { oncreate(vnode): void { this.attrs.state.users = app.forum.onlineUsers() || []; this.attrs.state.total = app.forum.totalOnlineUsers() || 0; - this.attrs.state.max = app.forum.attribute("afrux-online-users-widget.maxUsers") || 15; - console.log("max: " + app.forum.attribute("afrux-online-users-widget.maxUsers")); if (!this.attrs.state.timerAdded) { console.log("onliner timer added"); setInterval(this.load.bind(this), 120000); @@ -39,7 +37,7 @@ export default class OnlineUsersWidget extends Widget { if (this.attrs.state.isLoading) { return ; } - + this.attrs.state.users = (this.attrs.state.users || app.forum.onlineUsers()) || []; const users = this.attrs.state.users; this.attrs.state.total = (this.attrs.state.total || app.forum.totalOnlineUsers()) || 0; @@ -66,20 +64,32 @@ export default class OnlineUsersWidget extends Widget { ); } - load(): void { + async load(): Promise { if (this.loadWithInitialResponse) { this.setResults(app.forum.onlineUsers()); return; } this.attrs.state.isLoading = true; - console.log("reloading widget"); - const response = app.request({ - method: 'GET', - url: app.forum.attribute('apiUrl') + '/online-users' - }); - this.setResults(response.data, response.meta); + try { + const response = await app.request({ + method: 'GET', + url: app.forum.attribute('apiUrl') + '/online-users' + }); + + app.store.pushPayload(response); + + const users = response.data.map(userData => + app.store.getById('users', userData.id) + ); + + this.setResults(users, response.meta); + } catch (error) { + console.error(error); + } finally { + this.attrs.state.isLoading = false; + } } setResults(data, meta) {