-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathExAppsPageService.php
More file actions
70 lines (59 loc) · 2.49 KB
/
Copy pathExAppsPageService.php
File metadata and controls
70 lines (59 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AppAPI\Service;
use OCA\AppAPI\DeployActions\DockerActions;
use OCA\AppAPI\Fetcher\ExAppFetcher;
use OCP\App\IAppManager;
use OCP\AppFramework\Services\IInitialState;
use OCP\IAppConfig;
use OCP\IURLGenerator;
use Psr\Log\LoggerInterface;
class ExAppsPageService {
public function __construct(
private readonly ExAppFetcher $exAppFetcher,
private readonly DaemonConfigService $daemonConfigService,
private readonly DockerActions $dockerActions,
private readonly IAppConfig $appConfig,
private readonly IAppManager $appManager,
private readonly LoggerInterface $logger,
private readonly IURLGenerator $urlGenerator,
) {
}
/**
* Helper method for settings app to provide initial state for Apps management UI
*
* @since 30.0.2
*/
public function provideAppApiState(IInitialState $initialState): void {
$appApiEnabled = $this->appManager->isInstalled('app_api');
$initialState->provideInitialState('appApiEnabled', $appApiEnabled);
$daemonConfigAccessible = false;
$defaultDaemonConfig = null;
if ($appApiEnabled) {
$initialState->provideInitialState('appstoreExAppUpdateCount', count($this->exAppFetcher->getExAppsWithUpdates()));
$defaultDaemonConfigName = $this->appConfig->getValueString('app_api', 'default_daemon_config', lazy: true);
if ($defaultDaemonConfigName !== '') {
$daemonConfig = $this->daemonConfigService->getDaemonConfigByName($defaultDaemonConfigName);
if ($daemonConfig !== null) {
$defaultDaemonConfig = $daemonConfig->jsonSerialize();
unset($defaultDaemonConfig['deploy_config']['haproxy_password']);
$this->dockerActions->initGuzzleClient($daemonConfig);
$daemonConfigAccessible = $this->dockerActions->ping($this->dockerActions->buildDockerUrl($daemonConfig));
if (!$daemonConfigAccessible) {
$this->logger->warning(sprintf('Deploy daemon "%s" is not accessible by Nextcloud. Please check its configuration', $daemonConfig->getName()));
}
}
}
}
$initialState->provideInitialState('defaultDaemonConfigAccessible', $daemonConfigAccessible);
if ($defaultDaemonConfig !== null) {
$initialState->provideInitialState('defaultDaemonConfig', $defaultDaemonConfig);
}
$deployOptionsDocsUrl = $this->urlGenerator->linkToDocs('admin-deploy-options');
$initialState->provideInitialState('deployOptionsDocsUrl', $deployOptionsDocsUrl);
}
}