Merge pull request #31847 from nextcloud/performance/user-status-retrival

Retrieve user status only once when displaying page
pull/31220/head
Vincent Petry 3 years ago committed by GitHub
commit 462a43ac2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      apps/user_status/src/menu.js
  2. 6
      core/templates/layout.user.php
  3. 4
      dist/user_status-menu.js
  4. 2
      dist/user_status-menu.js.map
  5. 13
      lib/private/TemplateLayout.php

@ -27,6 +27,7 @@ import { getRequestToken } from '@nextcloud/auth'
import UserStatus from './UserStatus'
import store from './store'
import Avatar from '@nextcloud/vue/dist/Components/Avatar'
import { loadState } from '@nextcloud/initial-state'
// eslint-disable-next-line camelcase
__webpack_nonce__ = btoa(getRequestToken())
@ -35,11 +36,12 @@ Vue.prototype.t = t
Vue.prototype.$t = t
const avatarDiv = document.getElementById('avatardiv-menu')
const userStatusData = loadState('user_status', 'status')
const propsData = {
preloadedUserStatus: {
message: avatarDiv.dataset.userstatus_message,
icon: avatarDiv.dataset.userstatus_icon,
status: avatarDiv.dataset.userstatus,
message: userStatusData.message,
icon: userStatusData.icon,
status: userStatusData.status
},
user: avatarDiv.dataset.user,
displayName: avatarDiv.dataset.displayname,

@ -153,11 +153,7 @@ $getUserAvatar = static function (int $size) use ($_): string {
} ?>"
data-user="<?php p($_['user_uid']); ?>"
data-displayname="<?php p($_['user_displayname']); ?>"
<?php if ($_['userStatus'] !== false) { ?>
data-userstatus="<?php p($_['userStatus']->getStatus()); ?>"
data-userstatus_message="<?php p($_['userStatus']->getMessage()); ?>"
data-userstatus_icon="<?php p($_['userStatus']->getIcon()); ?>"
<?php }
<?php
if ($_['userAvatarSet']) {
$avatar32 = $getUserAvatar(32); ?> data-avatar="<?php p($avatar32); ?>"
<?php

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -47,7 +47,6 @@ use OC\Search\SearchQuery;
use OC\Template\JSCombiner;
use OC\Template\JSConfigHelper;
use OC\Template\SCSSCacher;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Defaults;
use OCP\IConfig;
@ -55,7 +54,6 @@ use OCP\IInitialStateService;
use OCP\INavigationManager;
use OCP\IUserSession;
use OCP\Support\Subscription\IRegistry;
use OCP\UserStatus\IManager as IUserStatusManager;
use OCP\Util;
use Psr\Log\LoggerInterface;
@ -140,17 +138,6 @@ class TemplateLayout extends \OC_Template {
} else {
$this->assign('userAvatarSet', true);
$this->assign('userAvatarVersion', $this->config->getUserValue(\OC_User::getUser(), 'avatar', 'version', 0));
if (\OC::$server->get(IAppManager::class)->isEnabledForUser('user_status')) {
$userStatusManager = \OC::$server->get(IUserStatusManager::class);
$userStatuses = $userStatusManager->getUserStatuses([$user->getUID()]);
if (array_key_exists($user->getUID(), $userStatuses)) {
$this->assign('userStatus', $userStatuses[$user->getUID()]);
} else {
$this->assign('userStatus', false);
}
} else {
$this->assign('userStatus', false);
}
}
// check if app menu icons should be inverted

Loading…
Cancel
Save