A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.8 KiB

part of '../nextcloud.dart';
/// Version of core/Server supported
const coreSupportedVersion = 27;
/// 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 {
/// 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 {
/// 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(newsSupportedVersion),
newsSupportedVersion,
);
}
}
// ignore: public_member_api_docs
extension NotesVersionSupported on NextcloudNotesClient {
/// 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 == notesSupportedVersion)
.isNotEmpty ??
false,
notesSupportedVersion,
);
}