diff --git a/README.md b/README.md index cd8042fa..122058ae 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Add this to your package's `pubspec.yaml` file: ```yml dependencies: - appwrite: ^13.1.0 + appwrite: ^13.1.1 ``` You can install packages from the command line: diff --git a/lib/src/client.dart b/lib/src/client.dart index 9faffd2f..61c11787 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -76,6 +76,9 @@ abstract class Client { /// Add headers that should be sent with all API calls. Client addHeader(String key, String value); + /// Sends a "ping" request to Appwrite to verify connectivity. + Future ping(); + /// Send the API request. Future call( HttpMethod method, { diff --git a/lib/src/client_base.dart b/lib/src/client_base.dart index ed751111..108974dd 100644 --- a/lib/src/client_base.dart +++ b/lib/src/client_base.dart @@ -29,6 +29,9 @@ abstract class ClientBase implements Client { @override ClientBase addHeader(String key, String value); + @override + Future ping(); + @override Future call( HttpMethod method, { diff --git a/lib/src/client_browser.dart b/lib/src/client_browser.dart index cbb30342..895a0cfc 100644 --- a/lib/src/client_browser.dart +++ b/lib/src/client_browser.dart @@ -43,7 +43,7 @@ class ClientBrowser extends ClientBase with ClientMixin { 'x-sdk-name': 'Flutter', 'x-sdk-platform': 'client', 'x-sdk-language': 'flutter', - 'x-sdk-version': '13.1.0', + 'x-sdk-version': '13.1.1', 'X-Appwrite-Response-Format': '1.6.0', }; @@ -115,6 +115,15 @@ class ClientBrowser extends ClientBase with ClientMixin { return this; } + @override + Future ping() async { + final String apiPath = '/ping'; + final response = await call(HttpMethod.get, + path: apiPath, responseType: ResponseType.plain); + + return response.data; + } + Future init() async { final cookieFallback = web.window.localStorage['cookieFallback']; if (cookieFallback != null) { diff --git a/lib/src/client_io.dart b/lib/src/client_io.dart index bfd770a3..20fe9572 100644 --- a/lib/src/client_io.dart +++ b/lib/src/client_io.dart @@ -64,7 +64,7 @@ class ClientIO extends ClientBase with ClientMixin { 'x-sdk-name': 'Flutter', 'x-sdk-platform': 'client', 'x-sdk-language': 'flutter', - 'x-sdk-version': '13.1.0', + 'x-sdk-version': '13.1.1', 'X-Appwrite-Response-Format': '1.6.0', }; @@ -147,6 +147,15 @@ class ClientIO extends ClientBase with ClientMixin { return this; } + @override + Future ping() async { + final String apiPath = '/ping'; + final response = await call(HttpMethod.get, + path: apiPath, responseType: ResponseType.plain); + + return response.data; + } + Future init() async { if (_initProgress) return; _initProgress = true; diff --git a/lib/src/models/document.dart b/lib/src/models/document.dart index f8164b61..339bd13b 100644 --- a/lib/src/models/document.dart +++ b/lib/src/models/document.dart @@ -38,7 +38,8 @@ class Document implements Model { $databaseId: map['\$databaseId'].toString(), $createdAt: map['\$createdAt'].toString(), $updatedAt: map['\$updatedAt'].toString(), - $permissions: map['\$permissions'] ?? [], + $permissions: List.from( + map['\$permissions']?.map((x) => x.toString()) ?? []), data: map, ); } diff --git a/lib/src/models/execution.dart b/lib/src/models/execution.dart index 9f9b8917..4ddca35c 100644 --- a/lib/src/models/execution.dart +++ b/lib/src/models/execution.dart @@ -78,7 +78,8 @@ class Execution implements Model { $id: map['\$id'].toString(), $createdAt: map['\$createdAt'].toString(), $updatedAt: map['\$updatedAt'].toString(), - $permissions: map['\$permissions'] ?? [], + $permissions: List.from( + map['\$permissions']?.map((x) => x.toString()) ?? []), functionId: map['functionId'].toString(), trigger: map['trigger'].toString(), status: map['status'].toString(), diff --git a/lib/src/models/file.dart b/lib/src/models/file.dart index 4bca1fe3..84d5a1ac 100644 --- a/lib/src/models/file.dart +++ b/lib/src/models/file.dart @@ -55,7 +55,8 @@ class File implements Model { bucketId: map['bucketId'].toString(), $createdAt: map['\$createdAt'].toString(), $updatedAt: map['\$updatedAt'].toString(), - $permissions: map['\$permissions'] ?? [], + $permissions: List.from( + map['\$permissions']?.map((x) => x.toString()) ?? []), name: map['name'].toString(), signature: map['signature'].toString(), mimeType: map['mimeType'].toString(), diff --git a/lib/src/models/membership.dart b/lib/src/models/membership.dart index 1dd1186d..d06a0798 100644 --- a/lib/src/models/membership.dart +++ b/lib/src/models/membership.dart @@ -71,7 +71,7 @@ class Membership implements Model { joined: map['joined'].toString(), confirm: map['confirm'], mfa: map['mfa'], - roles: map['roles'] ?? [], + roles: List.from(map['roles']?.map((x) => x.toString()) ?? []), ); } diff --git a/lib/src/models/mfa_recovery_codes.dart b/lib/src/models/mfa_recovery_codes.dart index c304de00..376acbc1 100644 --- a/lib/src/models/mfa_recovery_codes.dart +++ b/lib/src/models/mfa_recovery_codes.dart @@ -11,7 +11,8 @@ class MfaRecoveryCodes implements Model { factory MfaRecoveryCodes.fromMap(Map map) { return MfaRecoveryCodes( - recoveryCodes: map['recoveryCodes'] ?? [], + recoveryCodes: List.from( + map['recoveryCodes']?.map((x) => x.toString()) ?? []), ); } diff --git a/lib/src/models/session.dart b/lib/src/models/session.dart index 11732bd1..7d28944b 100644 --- a/lib/src/models/session.dart +++ b/lib/src/models/session.dart @@ -149,7 +149,8 @@ class Session implements Model { countryCode: map['countryCode'].toString(), countryName: map['countryName'].toString(), current: map['current'], - factors: map['factors'] ?? [], + factors: + List.from(map['factors']?.map((x) => x.toString()) ?? []), secret: map['secret'].toString(), mfaUpdatedAt: map['mfaUpdatedAt'].toString(), ); diff --git a/lib/src/models/user.dart b/lib/src/models/user.dart index e5942793..b9f3d8c2 100644 --- a/lib/src/models/user.dart +++ b/lib/src/models/user.dart @@ -92,7 +92,7 @@ class User implements Model { hashOptions: map['hashOptions'], registration: map['registration'].toString(), status: map['status'], - labels: map['labels'] ?? [], + labels: List.from(map['labels']?.map((x) => x.toString()) ?? []), passwordUpdate: map['passwordUpdate'].toString(), email: map['email'].toString(), phone: map['phone'].toString(), diff --git a/pubspec.yaml b/pubspec.yaml index d647dfae..07632898 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: appwrite -version: 13.1.0 +version: 13.1.1 description: Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API homepage: https://appwrite.io repository: https://github.com/appwrite/sdk-for-flutter