mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Refresh update code.
This commit is contained in:
parent
89ce2838d5
commit
92e7f344e0
@ -135,95 +135,52 @@ class UpdateRequest implements UpdateRequestInterface
|
||||
private function parseResult(array $information): array
|
||||
{
|
||||
app('log')->debug('Now in parseResult()', $information);
|
||||
$return = [];
|
||||
$current = (string)config('firefly.version');
|
||||
$latest = $information['version'];
|
||||
$current = (string)config('firefly.version');
|
||||
$latest = (string)$information['version'];
|
||||
|
||||
// strip the 'v' from the version if it's there.
|
||||
if (str_starts_with($latest, 'v')) {
|
||||
$latest = substr($latest, 1);
|
||||
}
|
||||
if (str_starts_with($current, 'develop')) {
|
||||
return $this->parseDevelopResult($current, $latest, $information);
|
||||
return $this->parseResultDevelop($current, $latest, $information);
|
||||
}
|
||||
|
||||
$compare = version_compare($latest, $current);
|
||||
$compare = version_compare($latest, $current);
|
||||
|
||||
app('log')->debug(sprintf('Current version is "%s", latest is "%s", result is: %d', $current, $latest, $compare));
|
||||
|
||||
// -1: you're running a newer version:
|
||||
if (-1 === $compare) {
|
||||
$return['level'] = 'info';
|
||||
$return['message'] = (string)trans('firefly.update_newer_version_alert', ['your_version' => $current, 'new_version' => $latest]);
|
||||
app('log')->debug('User is running a newer version', $return);
|
||||
|
||||
return $return;
|
||||
return $this->runsNewerVersion($current, $latest);
|
||||
}
|
||||
// running the current version:
|
||||
if (0 === $compare) {
|
||||
$return['level'] = 'info';
|
||||
$return['message'] = (string)trans('firefly.update_current_version_alert', ['version' => $current]);
|
||||
app('log')->debug('User is the current version.', $return);
|
||||
|
||||
return $return;
|
||||
return $this->runsSameVersion($current);
|
||||
}
|
||||
|
||||
// a newer version is available!
|
||||
/** @var Carbon $released */
|
||||
$released = $information['date'];
|
||||
$today = today(config('app.timezone'))->startOfDay();
|
||||
$diff = $today->diffInDays($released);
|
||||
$expectedDiff = config('firefly.update_minimum_age') ?? 6;
|
||||
// it's still very fresh, and user wants a stable release:
|
||||
if ($diff <= $expectedDiff) {
|
||||
$return['level'] = 'info';
|
||||
$return['message'] = (string)trans(
|
||||
'firefly.just_new_release',
|
||||
[
|
||||
'version' => $latest,
|
||||
'date' => $released->isoFormat((string)trans('config.month_and_day_js')),
|
||||
'days' => $expectedDiff,
|
||||
]
|
||||
);
|
||||
app('log')->debug('Release is very fresh.', $return);
|
||||
$released = $information['date'];
|
||||
$today = today(config('app.timezone'))->startOfDay();
|
||||
$diff = $today->diffInDays($released);
|
||||
$expectedDiff = config('firefly.update_minimum_age') ?? 6;
|
||||
$isBeta = $information['is_beta'] ?? false;
|
||||
$isAlpha = $information['is_alpha'] ?? false;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
// it's been around for a while:
|
||||
$return['level'] = 'success';
|
||||
$return['message'] = (string)trans(
|
||||
'firefly.update_new_version_alert',
|
||||
[
|
||||
'your_version' => $current,
|
||||
'new_version' => $latest,
|
||||
'date' => $released->isoFormat((string)trans('config.month_and_day_js')),
|
||||
]
|
||||
);
|
||||
app('log')->debug('New release is old enough.');
|
||||
|
||||
// add warning in case of alpha or beta:
|
||||
// append warning if beta or alpha.
|
||||
$isBeta = $information['is_beta'] ?? false;
|
||||
if (true === $isBeta) {
|
||||
$return['message'] = sprintf('%s %s', $return['message'], trans('firefly.update_version_beta'));
|
||||
app('log')->debug('New release is also a beta!');
|
||||
}
|
||||
|
||||
$isAlpha = $information['is_alpha'] ?? false;
|
||||
// it's new but alpha:
|
||||
if (true === $isAlpha) {
|
||||
$return['message'] = sprintf('%s %s', $return['message'], trans('firefly.update_version_alpha'));
|
||||
app('log')->debug('New release is also a alpha!');
|
||||
return $this->releasedNewAlpha($current, $latest, $released);
|
||||
}
|
||||
app('log')->debug('New release is here!', $return);
|
||||
|
||||
// send event, this may result in a notification.
|
||||
event(new NewVersionAvailable($return['message']));
|
||||
if (true === $isBeta) {
|
||||
return $this->releasedNewBeta($current, $latest, $released);
|
||||
}
|
||||
|
||||
return $return;
|
||||
return $this->releasedNewVersion($current, $latest, $released);
|
||||
}
|
||||
|
||||
private function parseDevelopResult(string $current, string $latest, array $information): array
|
||||
private function parseResultDevelop(string $current, string $latest, array $information): array
|
||||
{
|
||||
Log::debug(sprintf('User is running develop version "%s"', $current));
|
||||
$parts = explode('/', $current);
|
||||
@ -245,4 +202,82 @@ class UpdateRequest implements UpdateRequestInterface
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
private function runsNewerVersion(string $current, string $latest): array
|
||||
{
|
||||
$return = [
|
||||
'level' => 'info',
|
||||
'message' => (string)trans('firefly.update_newer_version_alert', ['your_version' => $current, 'new_version' => $latest]),
|
||||
];
|
||||
app('log')->debug('User is running a newer version', $return);
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
private function runsSameVersion(string $current)
|
||||
{
|
||||
$return = [
|
||||
'level' => 'info',
|
||||
'message' => (string)trans('firefly.update_current_version_alert', ['version' => $current]),
|
||||
];
|
||||
app('log')->debug('User is the current version.', $return);
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
private function releasedNewAlpha(string $current, string $latest, Carbon $date): array
|
||||
{
|
||||
app('log')->debug('New release is also a alpha!');
|
||||
$message = (string)trans(
|
||||
'firefly.update_new_version_alert',
|
||||
[
|
||||
'your_version' => $current,
|
||||
'new_version' => $latest,
|
||||
'date' => $date->isoFormat((string)trans('config.month_and_day_js')),
|
||||
]
|
||||
);
|
||||
|
||||
return [
|
||||
'level' => 'success',
|
||||
'message' => sprintf('%s %s', $message, trans('firefly.update_version_alpha')),
|
||||
];
|
||||
}
|
||||
|
||||
private function releasedNewBeta(string $current, string $latest, Carbon $date): array
|
||||
{
|
||||
app('log')->debug('New release is also a beta!');
|
||||
$message = (string)trans(
|
||||
'firefly.update_new_version_alert',
|
||||
[
|
||||
'your_version' => $current,
|
||||
'new_version' => $latest,
|
||||
'date' => $date->isoFormat((string)trans('config.month_and_day_js')),
|
||||
]
|
||||
);
|
||||
|
||||
return [
|
||||
'level' => 'success',
|
||||
'message' => sprintf('%s %s', $message, trans('firefly.update_version_beta')),
|
||||
];
|
||||
}
|
||||
|
||||
private function releasedNewVersion(string $current, string $latest, Carbon $date): array
|
||||
{
|
||||
app('log')->debug('New release is old enough.');
|
||||
$message = (string)trans(
|
||||
'firefly.update_new_version_alert',
|
||||
[
|
||||
'your_version' => $current,
|
||||
'new_version' => $latest,
|
||||
'date' => $date->isoFormat((string)trans('config.month_and_day_js')),
|
||||
]
|
||||
);
|
||||
app('log')->debug('New release is here!', [$message]);
|
||||
event(new NewVersionAvailable($message));
|
||||
|
||||
return [
|
||||
'level' => 'success',
|
||||
'message' => $message,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -314,7 +314,6 @@ return [
|
||||
'update_newer_version_alert' => 'You are running :your_version, which is newer than the latest release, :new_version.',
|
||||
'update_check_error' => 'An error occurred while checking for updates: :error',
|
||||
'unknown_error' => 'Unknown error. Sorry about that.',
|
||||
'just_new_release' => 'A new version is available! Version :version was released :date. This release is very fresh. Wait a few days for the new release to stabilize.',
|
||||
'disabled_but_check' => 'You disabled update checking. So don\'t forget to check for updates yourself every now and then. Thank you!',
|
||||
'admin_update_channel_title' => 'Update channel',
|
||||
'admin_update_channel_explain' => 'Firefly III has three update "channels" which determine how ahead of the curve you are in terms of features, enhancements and bugs. Use the "beta" channel if you\'re adventurous and the "alpha" when you like to live life dangerously.',
|
||||
|
Loading…
Reference in New Issue
Block a user