From 003a069425412ef3ed3282a0628b4df2f85c4bfe Mon Sep 17 00:00:00 2001 From: provokateurin Date: Sat, 27 Jul 2024 14:26:21 +0200 Subject: [PATCH] refactor(nextcloud)!: Remove maximum version check Signed-off-by: provokateurin --- .../neon_framework/lib/src/pages/home.dart | 2 +- .../neon_framework/test/apps_bloc_test.dart | 3 - .../src/api/cookbook/cookbook_helpers.dart | 1 - .../lib/src/api/core/core_helpers.dart | 5 -- .../lib/src/api/news/news_helpers.dart | 1 - .../lib/src/api/notes/notes_helpers.dart | 1 - .../lib/src/api/spreed/spreed_helpers.dart | 4 -- .../lib/src/api/tables/tables_helpers.dart | 1 - .../lib/src/models/version_check.dart | 19 ++---- .../nextcloud/test/version_check_test.dart | 65 ------------------- .../nextcloud_test/bin/generate_presets.dart | 8 +-- packages/nextcloud_test/lib/src/app.dart | 4 +- 12 files changed, 11 insertions(+), 103 deletions(-) diff --git a/packages/neon_framework/lib/src/pages/home.dart b/packages/neon_framework/lib/src/pages/home.dart index cb4b7abf52f..3a70a888f58 100644 --- a/packages/neon_framework/lib/src/pages/home.dart +++ b/packages/neon_framework/lib/src/pages/home.dart @@ -55,7 +55,7 @@ class _HomePageState extends State { final versionCheck = entry.value; final appName = l10n.appImplementationName(entry.key); - buffer.writeln('- $appName >=${versionCheck.minimumVersion} <${versionCheck.maximumMajor + 1}.0.0'); + buffer.writeln('- $appName >=${versionCheck.minimumVersion}'); } final message = l10n.errorUnsupportedAppVersions(buffer.toString()); diff --git a/packages/neon_framework/test/apps_bloc_test.dart b/packages/neon_framework/test/apps_bloc_test.dart index b84876b67c6..4f845006be6 100644 --- a/packages/neon_framework/test/apps_bloc_test.dart +++ b/packages/neon_framework/test/apps_bloc_test.dart @@ -329,13 +329,11 @@ void main() { final versionCheckCore = VersionCheck( versions: BuiltList([Version(0, 0, 0)]), minimumVersion: core.minVersion, - maximumMajor: core.maxMajor, ); final versionCheck1 = VersionCheck( versions: BuiltList([Version(2, 0, 0)]), minimumVersion: Version(2, 0, 0), - maximumMajor: 2, ); final appImplementation1 = MockAppImplementation(); @@ -346,7 +344,6 @@ void main() { final versionCheck2 = VersionCheck( versions: BuiltList([Version(1, 0, 0)]), minimumVersion: Version(2, 0, 0), - maximumMajor: 2, ); final appImplementation2 = MockAppImplementation(); diff --git a/packages/nextcloud/lib/src/api/cookbook/cookbook_helpers.dart b/packages/nextcloud/lib/src/api/cookbook/cookbook_helpers.dart index 316aa17bfc1..b288e342323 100644 --- a/packages/nextcloud/lib/src/api/cookbook/cookbook_helpers.dart +++ b/packages/nextcloud/lib/src/api/cookbook/cookbook_helpers.dart @@ -29,7 +29,6 @@ extension CookbookVersionCheck on cookbook.$Client { return VersionCheck( versions: versions, minimumVersion: minAppVersion, - maximumMajor: null, ); } } diff --git a/packages/nextcloud/lib/src/api/core/core_helpers.dart b/packages/nextcloud/lib/src/api/core/core_helpers.dart index b394cd9e6f1..a7c36a7a3dc 100644 --- a/packages/nextcloud/lib/src/api/core/core_helpers.dart +++ b/packages/nextcloud/lib/src/api/core/core_helpers.dart @@ -8,9 +8,6 @@ import 'package:version/version.dart'; /// Minimum version of core/Server supported final minVersion = Version(28, 0, 0); -/// Maximum major of core/Server supported -const maxMajor = 29; - /// Checks whether the server [version] is a dev, beta or RC version. bool _isDevelopmentServerVersion(String version) { return version.contains('dev') || version.contains('beta') || version.contains('RC'); @@ -29,7 +26,6 @@ extension CoreVersionCheck on core.$Client { return VersionCheck( versions: BuiltList([version]), minimumVersion: minVersion, - maximumMajor: maxMajor, isSupportedOverride: _isDevelopmentServerVersion(capabilities.version.string) ? true : null, ); } @@ -40,7 +36,6 @@ extension CoreStatusVersionCheck on core.Status { VersionCheck get versionCheck => VersionCheck( versions: BuiltList([Version.parse(version)]), minimumVersion: minVersion, - maximumMajor: maxMajor, isSupportedOverride: _isDevelopmentServerVersion(versionstring) ? true : null, ); } diff --git a/packages/nextcloud/lib/src/api/news/news_helpers.dart b/packages/nextcloud/lib/src/api/news/news_helpers.dart index efd19ec6e0e..7c17993be97 100644 --- a/packages/nextcloud/lib/src/api/news/news_helpers.dart +++ b/packages/nextcloud/lib/src/api/news/news_helpers.dart @@ -18,7 +18,6 @@ extension NewsVersionCheck on news.$Client { return VersionCheck( versions: versions?.map((version) => Version.parse(version.substring(1).replaceAll('-', '.'))).toBuiltList(), minimumVersion: minVersion, - maximumMajor: null, ); } } diff --git a/packages/nextcloud/lib/src/api/notes/notes_helpers.dart b/packages/nextcloud/lib/src/api/notes/notes_helpers.dart index f31027b8b06..84b0d174634 100644 --- a/packages/nextcloud/lib/src/api/notes/notes_helpers.dart +++ b/packages/nextcloud/lib/src/api/notes/notes_helpers.dart @@ -17,7 +17,6 @@ extension NotesVersionCheck on notes.$Client { return VersionCheck( versions: versions?.map(Version.parse).toBuiltList(), minimumVersion: minVersion, - maximumMajor: null, ); } } diff --git a/packages/nextcloud/lib/src/api/spreed/spreed_helpers.dart b/packages/nextcloud/lib/src/api/spreed/spreed_helpers.dart index ad4858520df..ca7129b934c 100644 --- a/packages/nextcloud/lib/src/api/spreed/spreed_helpers.dart +++ b/packages/nextcloud/lib/src/api/spreed/spreed_helpers.dart @@ -7,9 +7,6 @@ import 'package:version/version.dart'; /// The minimum version of the spreed app that is supported. final minVersion = Version(18, 0, 0); -/// Maximum major of spreed supported -const maxMajor = 19; - /// Extension for checking whether spreed is supported. extension SpreedVersionCheck on spreed.$Client { /// Checks whether the spreed app installed on the server is supported by this client. @@ -20,7 +17,6 @@ extension SpreedVersionCheck on spreed.$Client { return VersionCheck( versions: version != null ? BuiltList([Version.parse(version)]) : null, minimumVersion: minVersion, - maximumMajor: maxMajor, ); } } diff --git a/packages/nextcloud/lib/src/api/tables/tables_helpers.dart b/packages/nextcloud/lib/src/api/tables/tables_helpers.dart index 74eeefbac8c..a1c991e9d88 100644 --- a/packages/nextcloud/lib/src/api/tables/tables_helpers.dart +++ b/packages/nextcloud/lib/src/api/tables/tables_helpers.dart @@ -18,7 +18,6 @@ extension TablesVersionCheck on tables.$Client { return VersionCheck( versions: version != null ? BuiltList([Version.parse(version)]) : null, minimumVersion: minAppVersion, - maximumMajor: null, ); } } diff --git a/packages/nextcloud/lib/src/models/version_check.dart b/packages/nextcloud/lib/src/models/version_check.dart index d8362f48bc1..11b2888594a 100644 --- a/packages/nextcloud/lib/src/models/version_check.dart +++ b/packages/nextcloud/lib/src/models/version_check.dart @@ -2,19 +2,15 @@ import 'package:built_collection/built_collection.dart'; import 'package:meta/meta.dart'; import 'package:version/version.dart'; -/// Holds the [versions], [minimumVersion] and [maximumMajor] of an app. +/// Holds the [versions], [minimumVersion] of an app. @immutable class VersionCheck { /// Creates a new [VersionCheck]. - /// - /// If the [maximumMajor] is `null` the compatibility of the major of the [minimumVersion] is checked. const VersionCheck({ required this.versions, required this.minimumVersion, - required int? maximumMajor, bool? isSupportedOverride, - }) : _maximumMajor = maximumMajor, - _isSupportedOverride = isSupportedOverride; + }) : _isSupportedOverride = isSupportedOverride; /// Current version of the app. final BuiltList? versions; @@ -22,15 +18,10 @@ class VersionCheck { /// Minimum version of the app. final Version minimumVersion; - final int? _maximumMajor; - - /// Maximum major version of the app. - int get maximumMajor => _maximumMajor ?? minimumVersion.major; - /// Overrides the check if the current version is supported. final bool? _isSupportedOverride; - /// Whether the [versions] is allowed by the [minimumVersion] and [maximumMajor]. + /// Whether the [versions] is allowed by the [minimumVersion]. /// /// If [versions] is `null` or empty it is assumed that the app is supported. /// Only one of the [versions] has to be supported to return `true`. @@ -44,7 +35,7 @@ class VersionCheck { } for (final version in versions!) { - if (version >= minimumVersion && version.major <= maximumMajor) { + if (version >= minimumVersion) { return true; } } @@ -57,14 +48,12 @@ class VersionCheck { other is VersionCheck && other.versions == versions && other.minimumVersion == minimumVersion && - other.maximumMajor == maximumMajor && other._isSupportedOverride == _isSupportedOverride; @override int get hashCode => Object.hashAll([ versions, minimumVersion, - maximumMajor, _isSupportedOverride, ]); } diff --git a/packages/nextcloud/test/version_check_test.dart b/packages/nextcloud/test/version_check_test.dart index 69d8205ca2b..fb05f0c6a15 100644 --- a/packages/nextcloud/test/version_check_test.dart +++ b/packages/nextcloud/test/version_check_test.dart @@ -9,14 +9,12 @@ void main() { final check1 = VersionCheck( versions: BuiltList([Version(1, 0, 0)]), minimumVersion: Version(1, 0, 0), - maximumMajor: 1, isSupportedOverride: false, ); final check2 = VersionCheck( versions: BuiltList([Version(1, 0, 0)]), minimumVersion: Version(1, 0, 0), - maximumMajor: 1, isSupportedOverride: false, ); @@ -28,7 +26,6 @@ void main() { versions: null, // Invalid constraints to avoid accidental validation minimumVersion: Version(2, 0, 0), - maximumMajor: 1, ); expect(check.isSupported, isTrue); }); @@ -38,7 +35,6 @@ void main() { versions: BuiltList(), // Invalid constraints to avoid accidental validation minimumVersion: Version(2, 0, 0), - maximumMajor: 1, ); expect(check.isSupported, isTrue); }); @@ -51,69 +47,8 @@ void main() { Version(2, 0, 0), ]), minimumVersion: Version(1, 0, 0), - maximumMajor: 1, ); expect(check.isSupported, isTrue); }); - - test('With maximumMajor', () { - var check = VersionCheck( - versions: BuiltList([Version(0, 9, 9)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: 1, - ); - expect(check.isSupported, isFalse); - - check = VersionCheck( - versions: BuiltList([Version(1, 0, 0)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: 1, - ); - expect(check.isSupported, isTrue); - - check = VersionCheck( - versions: BuiltList([Version(1, 5, 0)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: 1, - ); - expect(check.isSupported, isTrue); - - check = VersionCheck( - versions: BuiltList([Version(1, 9, 9)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: 1, - ); - expect(check.isSupported, isTrue); - - check = VersionCheck( - versions: BuiltList([Version(2, 0, 0)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: 1, - ); - expect(check.isSupported, isFalse); - }); - - test('Without maximumMajor', () { - var check = VersionCheck( - versions: BuiltList([Version(0, 9, 9)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: null, - ); - expect(check.isSupported, isFalse); - - check = VersionCheck( - versions: BuiltList([Version(1, 5, 0)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: null, - ); - expect(check.isSupported, isTrue); - - check = VersionCheck( - versions: BuiltList([Version(2, 0, 0)]), - minimumVersion: Version(1, 0, 0), - maximumMajor: null, - ); - expect(check.isSupported, isFalse); - }); }); } diff --git a/packages/nextcloud_test/bin/generate_presets.dart b/packages/nextcloud_test/bin/generate_presets.dart index 00d45ac9e93..e0cfdcd311c 100644 --- a/packages/nextcloud_test/bin/generate_presets.dart +++ b/packages/nextcloud_test/bin/generate_presets.dart @@ -32,6 +32,9 @@ Future main() async { for (final release in app.releases) { final serverVersion = release.findLatestServerVersion(serverVersions); + if (serverVersion == null) { + continue; + } final buffer = StringBuffer()..writeln('SERVER_VERSION=$serverVersion'); @@ -108,7 +111,7 @@ Future> _getServerVersions(http.Client httpClient) async { final version = Version.parse(tag['name'] as String); final normalizedVersion = Version(version.major, version.minor, 0); - if (version < core.minVersion || version.major > core.maxMajor) { + if (version < core.minVersion) { continue; } @@ -163,9 +166,6 @@ Future> _getApps(List appIDs, http.Client httpClient) async { if (maximumServerVersionRequirement < core.minVersion) { continue; } - if (minimumServerVersionRequirement.major > core.maxMajor) { - continue; - } final download = release['download'] as String; diff --git a/packages/nextcloud_test/lib/src/app.dart b/packages/nextcloud_test/lib/src/app.dart index d16603ee178..3d33ea2ad7b 100644 --- a/packages/nextcloud_test/lib/src/app.dart +++ b/packages/nextcloud_test/lib/src/app.dart @@ -40,7 +40,7 @@ extension AppFindLatestRelease on App { @internal extension AppReleaseFindLatestServerVersion on AppRelease { - Version findLatestServerVersion(List serverVersions) { + Version? findLatestServerVersion(List serverVersions) { final compatibleReleases = serverVersions .where( (serverVersion) => @@ -48,6 +48,6 @@ extension AppReleaseFindLatestServerVersion on AppRelease { ) .toList() ..sort((a, b) => b.compareTo(a)); - return compatibleReleases.first; + return compatibleReleases.firstOrNull; } }