Reset the user status when clearing the custom message

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2020-09-30 14:12:02 +02:00 committed by backportbot[bot]
parent f0dc0d1347
commit 413a6042f3
2 changed files with 29 additions and 6 deletions

View File

@ -138,7 +138,12 @@ class UserStatusController extends OCSController {
string $message, string $message,
?int $clearAt): DataResponse { ?int $clearAt): DataResponse {
try { try {
$status = $this->service->setCustomMessage($this->userId, $statusIcon, $message, $clearAt); if ($message !== '') {
$status = $this->service->setCustomMessage($this->userId, $statusIcon, $message, $clearAt);
} else {
$this->service->clearMessage($this->userId);
$status = $this->service->findByUserId($this->userId);
}
return new DataResponse($this->formatStatus($status)); return new DataResponse($this->formatStatus($status));
} catch (InvalidClearAtException $ex) { } catch (InvalidClearAtException $ex) {
$this->logger->debug('New user-status for "' . $this->userId . '" was rejected due to an invalid clearAt value "' . $clearAt . '"'); $this->logger->debug('New user-status for "' . $this->userId . '" was rejected due to an invalid clearAt value "' . $clearAt . '"');

View File

@ -243,6 +243,7 @@ class UserStatusControllerTest extends TestCase {
* @param Throwable|null $exception * @param Throwable|null $exception
* @param bool $expectLogger * @param bool $expectLogger
* @param string|null $expectedLogMessage * @param string|null $expectedLogMessage
* @param bool $expectSuccessAsReset
* *
* @dataProvider setCustomMessageDataProvider * @dataProvider setCustomMessageDataProvider
*/ */
@ -253,7 +254,8 @@ class UserStatusControllerTest extends TestCase {
bool $expectException, bool $expectException,
?Throwable $exception, ?Throwable $exception,
bool $expectLogger, bool $expectLogger,
?string $expectedLogMessage): void { ?string $expectedLogMessage,
bool $expectSuccessAsReset = false): void {
$userStatus = $this->getUserStatus(); $userStatus = $this->getUserStatus();
if ($expectException) { if ($expectException) {
@ -262,10 +264,25 @@ class UserStatusControllerTest extends TestCase {
->with('john.doe', $statusIcon, $message, $clearAt) ->with('john.doe', $statusIcon, $message, $clearAt)
->willThrowException($exception); ->willThrowException($exception);
} else { } else {
$this->service->expects($this->once()) if ($expectSuccessAsReset) {
->method('setCustomMessage') $this->service->expects($this->never())
->with('john.doe', $statusIcon, $message, $clearAt) ->method('setCustomMessage');
->willReturn($userStatus); $this->service->expects($this->once())
->method('clearMessage')
->with('john.doe');
$this->service->expects($this->once())
->method('findByUserId')
->with('john.doe')
->willReturn($userStatus);
} else {
$this->service->expects($this->once())
->method('setCustomMessage')
->with('john.doe', $statusIcon, $message, $clearAt)
->willReturn($userStatus);
$this->service->expects($this->never())
->method('clearMessage');
}
} }
if ($expectLogger) { if ($expectLogger) {
@ -297,6 +314,7 @@ class UserStatusControllerTest extends TestCase {
public function setCustomMessageDataProvider(): array { public function setCustomMessageDataProvider(): array {
return [ return [
['👨🏽‍💻', 'Busy developing the status feature', 500, true, false, null, false, null], ['👨🏽‍💻', 'Busy developing the status feature', 500, true, false, null, false, null],
['👨🏽‍💻', '', 500, true, false, null, false, null, true],
['👨🏽‍💻', 'Busy developing the status feature', 500, false, true, new InvalidClearAtException('Original exception message'), true, ['👨🏽‍💻', 'Busy developing the status feature', 500, false, true, new InvalidClearAtException('Original exception message'), true,
'New user-status for "john.doe" was rejected due to an invalid clearAt value "500"'], 'New user-status for "john.doe" was rejected due to an invalid clearAt value "500"'],
['👨🏽‍💻', 'Busy developing the status feature', 500, false, true, new InvalidStatusIconException('Original exception message'), true, ['👨🏽‍💻', 'Busy developing the status feature', 500, false, true, new InvalidStatusIconException('Original exception message'), true,