Browse Source

nextcloud: Expose the supported versions

pull/325/head
jld3103 2 years ago
parent
commit
93e3b50b17
No known key found for this signature in database
GPG Key ID: 9062417B9E8EB7B3
  1. 47
      packages/nextcloud/lib/src/version_supported.dart
  2. 12
      packages/nextcloud/test/core.dart
  3. 4
      packages/nextcloud/test/news.dart
  4. 4
      packages/nextcloud/test/notes.dart

47
packages/nextcloud/lib/src/version_supported.dart

@ -1,33 +1,56 @@
part of '../nextcloud.dart';
/// Version of core/Server supported
const coreSupportedVersion = 26;
/// API version of the news app supported
const newsSupportedVersion = 'v1-3';
/// API version of the notes app supported
const notesSupportedVersion = 1;
// ignore: public_member_api_docs
extension CoreVersionSupported on NextcloudCoreClient {
/// Checks if the app on the server is supported by the client
Future<bool> isSupported([final NextcloudCoreServerCapabilities_Ocs_Data? capabilities]) async =>
(capabilities ?? (await getCapabilities()).ocs.data).version.major == 26;
/// Check if the core/Server version is supported by this client
///
/// Also returns the supported version number
Future<(bool, int)> isSupported([
final NextcloudCoreServerCapabilities_Ocs_Data? capabilities,
]) async =>
(
(capabilities ?? (await getCapabilities()).ocs.data).version.major == coreSupportedVersion,
coreSupportedVersion,
);
}
// ignore: public_member_api_docs
extension NewsVersionSupported on NextcloudNewsClient {
/// Checks if the app on the server is supported by the client
Future<bool> isSupported() async {
/// Check if the news app version is supported by this client
///
/// Also returns the supported API version number
Future<(bool, String)> isSupported() async {
final versions = await getSupportedApiVersions();
return versions.apiLevels!.contains('v1-3');
return (
versions.apiLevels!.contains(newsSupportedVersion),
newsSupportedVersion,
);
}
}
// ignore: public_member_api_docs
extension NotesVersionSupported on NextcloudNotesClient {
/// Checks if the app on the server is supported by the client
Future<bool> isSupported([final NextcloudCoreServerCapabilities_Ocs_Data? capabilities]) async =>
/// Check if the notes app version is supported by this client
///
/// Also returns the supported API version number
Future<(bool, int)> isSupported([final NextcloudCoreServerCapabilities_Ocs_Data? capabilities]) async => (
(capabilities ?? (await rootClient.core.getCapabilities()).ocs.data)
.capabilities
.notes
?.apiVersion
?.map(Version.parse)
.where((final version) => version.major == 1)
.where((final version) => version.major == notesSupportedVersion)
.isNotEmpty ??
false;
false,
notesSupportedVersion,
);
}
// Notifications, ProvisioningApi, UserStatus and Webdav are shipped with the Nextcloud server, so their supported versions depend on the major version of the Nextcloud instance.

12
packages/nextcloud/test/core.dart

@ -18,8 +18,8 @@ Future run(final DockerImage image) async {
tearDown(() => container.destroy());
test('Is supported', () async {
final response = await client.core.isSupported();
expect(response, isTrue);
final (supported, _) = await client.core.isSupported();
expect(supported, isTrue);
});
test('Get status', () async {
@ -27,8 +27,8 @@ Future run(final DockerImage image) async {
expect(status.installed, true);
expect(status.maintenance, false);
expect(status.needsDbUpgrade, false);
expect(status.version, startsWith('26.0.1'));
expect(status.versionstring, '26.0.1');
expect(status.version, startsWith('$coreSupportedVersion.'));
expect(status.versionstring, startsWith('$coreSupportedVersion.'));
expect(status.edition, '');
expect(status.productname, 'Nextcloud');
expect(status.extendedSupport, false);
@ -36,8 +36,8 @@ Future run(final DockerImage image) async {
test('Get capabilities', () async {
final capabilities = await client.core.getCapabilities();
expect(capabilities.ocs.data.version.major.toString(), '26');
expect(capabilities.ocs.data.version.string, '26.0.1');
expect(capabilities.ocs.data.version.major, coreSupportedVersion);
expect(capabilities.ocs.data.version.string, startsWith('$coreSupportedVersion.'));
expect(capabilities.ocs.data.capabilities.theming!.name, 'Nextcloud');
expect(capabilities.ocs.data.capabilities.theming!.url, 'https://nextcloud.com');
expect(capabilities.ocs.data.capabilities.theming!.slogan, 'a safe home for all your data');

4
packages/nextcloud/test/news.dart

@ -30,8 +30,8 @@ Future run(final DockerImage image) async {
);
test('Is supported', () async {
final response = await client.news.isSupported();
expect(response, isTrue);
final (supported, _) = await client.news.isSupported();
expect(supported, isTrue);
});
test('Add feed', () async {

4
packages/nextcloud/test/notes.dart

@ -18,8 +18,8 @@ Future run(final DockerImage image) async {
tearDown(() => container.destroy());
test('Is supported', () async {
final response = await client.notes.isSupported();
expect(response, isTrue);
final (supported, _) = await client.notes.isSupported();
expect(supported, isTrue);
});
test('Create note favorite', () async {

Loading…
Cancel
Save