Allow to globally disable update checking/connection with Github

This commit is contained in:
Jan Böhmer 2023-08-04 23:55:41 +02:00
parent 1fb334b0ca
commit 97ccb0cb21
4 changed files with 23 additions and 2 deletions

View file

@ -1 +1 @@
1.6.1
1.7.0-dev

View file

@ -23,6 +23,8 @@ parameters:
partdb.users.use_gravatar: '%env(bool:USE_GRAVATAR)%' # Set to false, if no Gravatar images should be used for user profiles.
partdb.users.email_pw_reset: '%env(bool:ALLOW_EMAIL_PW_RESET)%' # Config if users are able, to reset their password by email. By default this enabled, when a mail server is configured.
partdb.check_for_updates: true # Set to false, if Part-DB should not contact the GitHub API to check for updates
######################################################################################################################
# Mail settings
######################################################################################################################

View file

@ -315,6 +315,10 @@ services:
arguments:
$project_dir: '%kernel.project_dir%'
App\Services\System\UpdateAvailableManager:
arguments:
$check_for_updates: '%partdb.check_for_updates%'
####################################################################################################################
# Monolog
####################################################################################################################

View file

@ -39,7 +39,9 @@ class UpdateAvailableManager
private const CACHE_KEY = 'uam_latest_version';
private const CACHE_TTL = 60 * 60 * 24 * 2; // 2 day
public function __construct(private readonly HttpClientInterface $httpClient, private readonly CacheInterface $updateCache, private readonly VersionManagerInterface $versionManager)
public function __construct(private readonly HttpClientInterface $httpClient,
private readonly CacheInterface $updateCache, private readonly VersionManagerInterface $versionManager,
private readonly bool $check_for_updates)
{
}
@ -77,6 +79,11 @@ class UpdateAvailableManager
*/
public function isUpdateAvailable(): bool
{
//If we don't want to check for updates, we can return false
if (!$this->check_for_updates) {
return false;
}
$latestVersion = $this->getLatestVersion();
$currentVersion = $this->versionManager->getVersion();
@ -90,6 +97,14 @@ class UpdateAvailableManager
*/
private function getLatestVersionInfo(): array
{
//If we don't want to check for updates, we can return dummy data
if (!$this->check_for_updates) {
return [
'version' => '0.0.1',
'url' => 'update-checking-disabled'
];
}
return $this->updateCache->get(self::CACHE_KEY, function (ItemInterface $item) {
$item->expiresAfter(self::CACHE_TTL);
$response = $this->httpClient->request('GET', self::API_URL);