Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarco <marcoambrosini@pm.me>2020-09-17 13:09:00 +0300
committerGitHub <noreply@github.com>2020-09-17 13:09:00 +0300
commita4dd707ac4b44ff8ac20586d526da3a3ade01e91 (patch)
treee2f224a8bcdefbcec7e429d0aa412a1d15486f34
parent9350964ca078c068966cc00542c137a4bcf96f42 (diff)
parent291e2c75f7b97cd8c1194b5a54cbf6b97193e981 (diff)
Merge pull request #4170 from nextcloud/bugfix/noid/update-statuses-when-we-know
Update statuses when we got new information with a participant refresh
-rw-r--r--lib/Controller/ChatController.php1
-rw-r--r--lib/Controller/RoomController.php8
-rw-r--r--src/components/RightSidebar/Participants/ParticipantsTab.vue11
3 files changed, 17 insertions, 3 deletions
diff --git a/lib/Controller/ChatController.php b/lib/Controller/ChatController.php
index fafc7a66a..5777a1bd1 100644
--- a/lib/Controller/ChatController.php
+++ b/lib/Controller/ChatController.php
@@ -488,6 +488,7 @@ class ChatController extends AEnvironmentAwareController {
$data['status'] = $statuses[$data['id']]->getStatus();
$data['statusIcon'] = $statuses[$data['id']]->getIcon();
$data['statusMessage'] = $statuses[$data['id']]->getMessage();
+ $data['statusClearAt'] = $statuses[$data['id']]->getClearAt();
}
$output[] = $data;
diff --git a/lib/Controller/RoomController.php b/lib/Controller/RoomController.php
index 84843edae..766d6a4d8 100644
--- a/lib/Controller/RoomController.php
+++ b/lib/Controller/RoomController.php
@@ -838,15 +838,16 @@ class RoomController extends AEnvironmentAwareController {
$maxPingAge = $this->timeFactory->getTime() - 100;
$participants = $this->room->getParticipantsLegacy();
- $results = [];
+ $results = $headers = $statuses = [];
- $statuses = [];
if ($this->userId !== null
&& $includeStatus
&& count($participants['users']) < 100
&& $this->appManager->isEnabledForUser('user_status')) {
$userIds = array_map('strval', array_keys($participants['users']));
$statuses = $this->statusManager->getUserStatuses($userIds);
+
+ $headers['X-Nextcloud-Has-User-Statuses'] = true;
}
foreach ($participants['users'] as $userId => $participant) {
@@ -867,6 +868,7 @@ class RoomController extends AEnvironmentAwareController {
$participant['status'] = $statuses[$userId]->getStatus();
$participant['statusIcon'] = $statuses[$userId]->getIcon();
$participant['statusMessage'] = $statuses[$userId]->getMessage();
+ $participant['statusClearAt'] = $statuses[$userId]->getClearAt();
}
$results[] = $participant;
@@ -895,7 +897,7 @@ class RoomController extends AEnvironmentAwareController {
$this->room->cleanGuestParticipants();
}
- return new DataResponse($results);
+ return new DataResponse($results, Http::STATUS_OK, $headers);
}
/**
diff --git a/src/components/RightSidebar/Participants/ParticipantsTab.vue b/src/components/RightSidebar/Participants/ParticipantsTab.vue
index 6397e7da9..bc874f095 100644
--- a/src/components/RightSidebar/Participants/ParticipantsTab.vue
+++ b/src/components/RightSidebar/Participants/ParticipantsTab.vue
@@ -61,6 +61,7 @@ import Hex from 'crypto-js/enc-hex'
import CancelableRequest from '../../../utils/cancelableRequest'
import Axios from '@nextcloud/axios'
import { showError } from '@nextcloud/dialogs'
+import { emit } from '@nextcloud/event-bus'
import ParticipantsSearchResults from './ParticipantsSearchResults/ParticipantsSearchResults'
export default {
@@ -228,6 +229,8 @@ export default {
this.cancelGetParticipants = cancel
const participants = await request(token)
this.$store.dispatch('purgeParticipantsStore', token)
+
+ const hasUserStatuses = !!participants.headers['x-nextcloud-has-user-statuses']
participants.data.ocs.data.forEach(participant => {
this.$store.dispatch('addParticipant', {
token: token,
@@ -240,6 +243,14 @@ export default {
actorId: Hex.stringify(SHA1(participant.sessionId)),
actorDisplayName: participant.displayName,
})
+ } else if (hasUserStatuses) {
+ emit('user_status:status.updated', {
+ status: participant.status,
+ message: participant.statusMessage,
+ icon: participant.statusIcon,
+ clearAt: participant.statusClearAt,
+ userId: participant.userId,
+ })
}
})
this.participantsInitialised = true