Skip to content

Commit 8d6a635

Browse files
authored
Merge pull request #32625 from nextcloud/backport/32618/stable23
2 parents 5a9b30a + 3e3b44b commit 8d6a635

File tree

5 files changed

+31
-18
lines changed

5 files changed

+31
-18
lines changed

apps/user_status/js/user-status-menu.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/user_status/js/user-status-menu.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/user_status/lib/Listener/UserLiveStatusListener.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,17 @@ class UserLiveStatusListener implements IEventListener {
4545
/** @var UserStatusMapper */
4646
private $mapper;
4747

48+
/** @var StatusService */
49+
private $statusService;
50+
4851
/** @var ITimeFactory */
4952
private $timeFactory;
5053

51-
/**
52-
* UserLiveStatusListener constructor.
53-
*
54-
* @param UserStatusMapper $mapper
55-
* @param ITimeFactory $timeFactory
56-
*/
5754
public function __construct(UserStatusMapper $mapper,
55+
StatusService $statusService,
5856
ITimeFactory $timeFactory) {
5957
$this->mapper = $mapper;
58+
$this->statusService = $statusService;
6059
$this->timeFactory = $timeFactory;
6160
}
6261

@@ -71,7 +70,7 @@ public function handle(Event $event): void {
7170

7271
$user = $event->getUser();
7372
try {
74-
$userStatus = $this->mapper->findByUserId($user->getUID());
73+
$userStatus = $this->statusService->findByUserId($user->getUID());
7574
} catch (DoesNotExistException $ex) {
7675
$userStatus = new UserStatus();
7776
$userStatus->setUserId($user->getUID());

apps/user_status/src/store/userStatus.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,23 @@ const mutations = {
130130
*/
131131
loadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {
132132
state.status = status
133-
state.statusIsUserDefined = statusIsUserDefined
134133
state.message = message
135134
state.icon = icon
136-
state.clearAt = clearAt
137-
state.messageIsPredefined = messageIsPredefined
138-
state.messageId = messageId
135+
136+
// Don't overwrite certain values if the refreshing comes in via short updates
137+
// E.g. from talk participant list which only has the status, message and icon
138+
if (typeof statusIsUserDefined !== 'undefined') {
139+
state.statusIsUserDefined = statusIsUserDefined
140+
}
141+
if (typeof clearAt !== 'undefined') {
142+
state.clearAt = clearAt
143+
}
144+
if (typeof messageIsPredefined !== 'undefined') {
145+
state.messageIsPredefined = messageIsPredefined
146+
}
147+
if (typeof messageId !== 'undefined') {
148+
state.messageId = messageId
149+
}
139150
},
140151
}
141152

apps/user_status/tests/Unit/Listener/UserLiveStatusListenerTest.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
use OCA\UserStatus\Db\UserStatusMapper;
3131
use OCA\UserStatus\Listener\UserDeletedListener;
3232
use OCA\UserStatus\Listener\UserLiveStatusListener;
33+
use OCA\UserStatus\Service\StatusService;
3334
use OCP\AppFramework\Db\DoesNotExistException;
3435
use OCP\AppFramework\Utility\ITimeFactory;
3536
use OCP\EventDispatcher\GenericEvent;
@@ -41,7 +42,8 @@ class UserLiveStatusListenerTest extends TestCase {
4142

4243
/** @var UserStatusMapper|\PHPUnit\Framework\MockObject\MockObject */
4344
private $mapper;
44-
45+
/** @var StatusService|\PHPUnit\Framework\MockObject\MockObject */
46+
private $statusService;
4547
/** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */
4648
private $timeFactory;
4749

@@ -52,8 +54,9 @@ protected function setUp(): void {
5254
parent::setUp();
5355

5456
$this->mapper = $this->createMock(UserStatusMapper::class);
57+
$this->statusService = $this->createMock(StatusService::class);
5558
$this->timeFactory = $this->createMock(ITimeFactory::class);
56-
$this->listener = new UserLiveStatusListener($this->mapper, $this->timeFactory);
59+
$this->listener = new UserLiveStatusListener($this->mapper, $this->statusService, $this->timeFactory);
5760
}
5861

5962
/**
@@ -85,12 +88,12 @@ public function testHandleWithCorrectEvent(string $userId,
8588
$userStatus->setStatusTimestamp($previousTimestamp);
8689
$userStatus->setIsUserDefined($previousIsUserDefined);
8790

88-
$this->mapper->expects($this->once())
91+
$this->statusService->expects($this->once())
8992
->method('findByUserId')
9093
->with($userId)
9194
->willReturn($userStatus);
9295
} else {
93-
$this->mapper->expects($this->once())
96+
$this->statusService->expects($this->once())
9497
->method('findByUserId')
9598
->with($userId)
9699
->willThrowException(new DoesNotExistException(''));

0 commit comments

Comments
 (0)