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.
59 lines
2.0 KiB
59 lines
2.0 KiB
import 'package:nextcloud/src/api/core.openapi.dart'; |
|
import 'package:nextcloud/src/api/news.openapi.dart'; |
|
import 'package:nextcloud/src/api/notes.openapi.dart'; |
|
import 'package:version/version.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 CoreClient { |
|
/// Check if the core/Server version is supported by this client |
|
/// |
|
/// Also returns the supported version number |
|
(bool, int) isSupported(final CoreOcsGetCapabilitiesResponseApplicationJson_Ocs_Data capabilities) => ( |
|
capabilities.version.major == coreSupportedVersion, |
|
coreSupportedVersion, |
|
); |
|
} |
|
|
|
// ignore: public_member_api_docs |
|
extension CoreStatusVersionSupported on CoreStatus { |
|
/// Check if the core/Server version is supported |
|
bool get isSupported => version.startsWith('$coreSupportedVersion.'); |
|
} |
|
|
|
// ignore: public_member_api_docs |
|
extension NewsVersionSupported on NewsClient { |
|
/// 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 NotesClient { |
|
/// Check if the notes app version is supported by this client |
|
/// |
|
/// Also returns the supported API version number |
|
(bool, int) isSupported(final CoreOcsGetCapabilitiesResponseApplicationJson_Ocs_Data capabilities) => ( |
|
capabilities.capabilities.notesCapabilities?.notes.apiVersion |
|
?.map(Version.parse) |
|
.where((final version) => version.major == notesSupportedVersion) |
|
.isNotEmpty ?? |
|
false, |
|
notesSupportedVersion, |
|
); |
|
}
|
|
|