diff --git a/resources/js/components/updater/Updater.vue b/resources/js/components/updater/Updater.vue index e78019ee218..97ad89a1b9c 100644 --- a/resources/js/components/updater/Updater.vue +++ b/resources/js/components/updater/Updater.vue @@ -74,7 +74,8 @@ export default { gettingChangelog: true, changelog: [], currentVersion: null, - latestRelease: null, + onLatestVersion: false, + securityUpdateAvailable: false, showingUnlicensedReleases: false, page: 1, perPage: 10, @@ -91,16 +92,6 @@ export default { return !this.gettingChangelog; }, - onLatestVersion() { - return this.currentVersion && this.currentVersion == this.latestVersion; - }, - - securityUpdateAvailable() { - return this.currentVersion && this.changelog - .filter((release) => release.type === 'upgrade') - .some((release) => release.security); - }, - licensedReleases() { return this.changelog.filter((release) => release.licensed); }, @@ -113,10 +104,6 @@ export default { return this.unlicensedReleases.length > 0; }, - latestVersion() { - return this.latestRelease && this.latestRelease.version; - }, - link() { return ( __('Learn more about :link', { @@ -145,11 +132,9 @@ export default { this.gettingChangelog = false; this.changelog = response.data.changelog; this.currentVersion = response.data.currentVersion; + this.onLatestVersion = response.data.onLatestVersion; + this.securityUpdateAvailable = response.data.securityUpdateAvailable; this.meta = response.data.meta; - - if (this.page === 1 && response.data.changelog.length > 0) { - this.latestRelease = response.data.changelog[0]; - } }); }, diff --git a/src/Addons/Addon.php b/src/Addons/Addon.php index 64544ea7865..cefc03abaeb 100644 --- a/src/Addons/Addon.php +++ b/src/Addons/Addon.php @@ -419,7 +419,7 @@ public function isLatestVersion() $version = $versionParser->normalize($this->version); $latestVersion = $versionParser->normalize($this->latestVersion()); - return version_compare($version, $latestVersion, '='); + return version_compare($version, $latestVersion, '>='); } public function license() diff --git a/src/Http/Controllers/CP/Updater/UpdateProductController.php b/src/Http/Controllers/CP/Updater/UpdateProductController.php index f96b62a4689..8b8fca135fc 100644 --- a/src/Http/Controllers/CP/Updater/UpdateProductController.php +++ b/src/Http/Controllers/CP/Updater/UpdateProductController.php @@ -85,6 +85,8 @@ public function changelog(Request $request, $marketplaceProductSlug) return [ 'changelog' => $paginated['data'], 'currentVersion' => $changelog->currentVersion(), + 'onLatestVersion' => $changelog->availableUpdatesCount() === 0, + 'securityUpdateAvailable' => $changelog->hasSecurityUpdate(), 'meta' => $paginated['meta'], ]; } diff --git a/tests/Addons/AddonTest.php b/tests/Addons/AddonTest.php index 5ef50a9be99..795b5a3fb7d 100644 --- a/tests/Addons/AddonTest.php +++ b/tests/Addons/AddonTest.php @@ -342,6 +342,11 @@ public static function isLatestVersionProvider() ['2.0.0', '2.0.0', true], ['1.0', '1.0.0', true], ['1.0', '1.0.1', false], + + // Installed version is newer than the marketplace's indexed latest version + ['1.0.2', '1.0.1', true], + ['2.0.0', '1.0.0', true], + ['7.12.1', '7.12.0', true], ]; }