mirror of
https://github.com/nextcloud/server.git
synced 2026-04-20 22:00:39 -04:00
Merge pull request #41501 from nextcloud/feat/dav/show-ooo-ui-by-default
feat(dav): Enable OOO UI and expose enabled via OCP
This commit is contained in:
commit
33e07121d2
4 changed files with 39 additions and 5 deletions
|
|
@ -33,6 +33,7 @@ use OCP\AppFramework\Http\TemplateResponse;
|
|||
use OCP\AppFramework\Services\IInitialState;
|
||||
use OCP\IConfig;
|
||||
use OCP\Settings\ISettings;
|
||||
use OCP\User\IAvailabilityCoordinator;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
class AvailabilitySettings implements ISettings {
|
||||
|
|
@ -44,6 +45,7 @@ class AvailabilitySettings implements ISettings {
|
|||
IInitialState $initialState,
|
||||
?string $userId,
|
||||
private LoggerInterface $logger,
|
||||
private IAvailabilityCoordinator $coordinator,
|
||||
private AbsenceMapper $absenceMapper) {
|
||||
$this->config = $config;
|
||||
$this->initialState = $initialState;
|
||||
|
|
@ -60,11 +62,7 @@ class AvailabilitySettings implements ISettings {
|
|||
'no'
|
||||
)
|
||||
);
|
||||
$hideAbsenceSettings = $this->config->getAppValue(
|
||||
Application::APP_ID,
|
||||
'hide_absence_settings',
|
||||
'yes',
|
||||
) === 'yes';
|
||||
$hideAbsenceSettings = !$this->coordinator->isEnabled();
|
||||
$this->initialState->provideInitialState('hide_absence_settings', $hideAbsenceSettings);
|
||||
if (!$hideAbsenceSettings) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -27,10 +27,12 @@ declare(strict_types=1);
|
|||
namespace OC\User;
|
||||
|
||||
use JsonException;
|
||||
use OCA\DAV\AppInfo\Application;
|
||||
use OCA\DAV\Db\AbsenceMapper;
|
||||
use OCP\AppFramework\Db\DoesNotExistException;
|
||||
use OCP\ICache;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IConfig;
|
||||
use OCP\IUser;
|
||||
use OCP\User\IAvailabilityCoordinator;
|
||||
use OCP\User\IOutOfOfficeData;
|
||||
|
|
@ -42,11 +44,20 @@ class AvailabilityCoordinator implements IAvailabilityCoordinator {
|
|||
public function __construct(
|
||||
ICacheFactory $cacheFactory,
|
||||
private AbsenceMapper $absenceMapper,
|
||||
private IConfig $config,
|
||||
private LoggerInterface $logger,
|
||||
) {
|
||||
$this->cache = $cacheFactory->createLocal('OutOfOfficeData');
|
||||
}
|
||||
|
||||
public function isEnabled(): bool {
|
||||
return $this->config->getAppValue(
|
||||
Application::APP_ID,
|
||||
'hide_absence_settings',
|
||||
'no',
|
||||
) === 'no';
|
||||
}
|
||||
|
||||
private function getCachedOutOfOfficeData(IUser $user): ?OutOfOfficeData {
|
||||
$cachedString = $this->cache->get($user->getUID());
|
||||
if ($cachedString === null) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,15 @@ use OCP\IUser;
|
|||
* @since 28.0.0
|
||||
*/
|
||||
interface IAvailabilityCoordinator {
|
||||
/**
|
||||
* Check if the feature is enabled on this instance
|
||||
*
|
||||
* @return bool
|
||||
*
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function isEnabled(): bool;
|
||||
|
||||
/**
|
||||
* Get the user's out-of-office message, if any
|
||||
*
|
||||
|
|
|
|||
|
|
@ -32,7 +32,9 @@ use OCA\DAV\Db\Absence;
|
|||
use OCA\DAV\Db\AbsenceMapper;
|
||||
use OCP\ICache;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IConfig;
|
||||
use OCP\IUser;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Test\TestCase;
|
||||
|
||||
|
|
@ -40,6 +42,7 @@ class AvailabilityCoordinatorTest extends TestCase {
|
|||
private AvailabilityCoordinator $availabilityCoordinator;
|
||||
private ICacheFactory $cacheFactory;
|
||||
private ICache $cache;
|
||||
private IConfig|MockObject $config;
|
||||
private AbsenceMapper $absenceMapper;
|
||||
private LoggerInterface $logger;
|
||||
|
||||
|
|
@ -49,6 +52,7 @@ class AvailabilityCoordinatorTest extends TestCase {
|
|||
$this->cacheFactory = $this->createMock(ICacheFactory::class);
|
||||
$this->cache = $this->createMock(ICache::class);
|
||||
$this->absenceMapper = $this->createMock(AbsenceMapper::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
|
||||
$this->cacheFactory->expects(self::once())
|
||||
|
|
@ -58,10 +62,22 @@ class AvailabilityCoordinatorTest extends TestCase {
|
|||
$this->availabilityCoordinator = new AvailabilityCoordinator(
|
||||
$this->cacheFactory,
|
||||
$this->absenceMapper,
|
||||
$this->config,
|
||||
$this->logger,
|
||||
);
|
||||
}
|
||||
|
||||
public function testIsEnabled(): void {
|
||||
$this->config->expects(self::once())
|
||||
->method('getAppValue')
|
||||
->with('dav', 'hide_absence_settings', 'no')
|
||||
->willReturn('no');
|
||||
|
||||
$isEnabled = $this->availabilityCoordinator->isEnabled();
|
||||
|
||||
self::assertTrue($isEnabled);
|
||||
}
|
||||
|
||||
public function testGetOutOfOfficeData(): void {
|
||||
$absence = new Absence();
|
||||
$absence->setId(420);
|
||||
|
|
|
|||
Loading…
Reference in a new issue