Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ repositories {
Next, add the dependency to your project's `build.gradle(.kts)` file:

```groovy
implementation("io.appwrite:sdk-for-android:9.0.0")
implementation("io.appwrite:sdk-for-android:10.0.0")
```

### Maven
Expand All @@ -49,7 +49,7 @@ Add this to your project's `pom.xml` file:
<dependency>
<groupId>io.appwrite</groupId>
<artifactId>sdk-for-android</artifactId>
<version>9.0.0</version>
<version>10.0.0</version>
</dependency>
</dependencies>
```
Expand Down
6 changes: 5 additions & 1 deletion docs/examples/java/account/update-prefs.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@ Client client = new Client(context)
Account account = new Account(client);

account.updatePrefs(
mapOf( "a" to "b" ), // prefs
mapOf(
"language" to "en",
"timezone" to "UTC",
"darkTheme" to true
), // prefs
new CoroutineCallback<>((result, error) -> {
if (error != null) {
error.printStackTrace();
Expand Down
8 changes: 7 additions & 1 deletion docs/examples/java/databases/create-document.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ databases.createDocument(
"<DATABASE_ID>", // databaseId
"<COLLECTION_ID>", // collectionId
"<DOCUMENT_ID>", // documentId
mapOf( "a" to "b" ), // data
mapOf(
"username" to "walter.obrien",
"email" to "walter.obrien@example.com",
"fullName" to "Walter O'Brien",
"age" to 30,
"isAdmin" to false
), // data
listOf("read("any")"), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
Expand Down
8 changes: 7 additions & 1 deletion docs/examples/java/tablesdb/create-row.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@ tablesDB.createRow(
"<DATABASE_ID>", // databaseId
"<TABLE_ID>", // tableId
"<ROW_ID>", // rowId
mapOf( "a" to "b" ), // data
mapOf(
"username" to "walter.obrien",
"email" to "walter.obrien@example.com",
"fullName" to "Walter O'Brien",
"age" to 30,
"isAdmin" to false
), // data
listOf("read("any")"), // permissions (optional)
new CoroutineCallback<>((result, error) -> {
if (error != null) {
Expand Down
6 changes: 5 additions & 1 deletion docs/examples/kotlin/account/update-prefs.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,9 @@ val client = Client(context)
val account = Account(client)

val result = account.updatePrefs(
prefs = mapOf( "a" to "b" ),
prefs = mapOf(
"language" to "en",
"timezone" to "UTC",
"darkTheme" to true
),
)
8 changes: 7 additions & 1 deletion docs/examples/kotlin/databases/create-document.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ val result = databases.createDocument(
databaseId = "<DATABASE_ID>",
collectionId = "<COLLECTION_ID>",
documentId = "<DOCUMENT_ID>",
data = mapOf( "a" to "b" ),
data = mapOf(
"username" to "walter.obrien",
"email" to "walter.obrien@example.com",
"fullName" to "Walter O'Brien",
"age" to 30,
"isAdmin" to false
),
permissions = listOf("read("any")"), // (optional)
)
8 changes: 7 additions & 1 deletion docs/examples/kotlin/tablesdb/create-row.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ val result = tablesDB.createRow(
databaseId = "<DATABASE_ID>",
tableId = "<TABLE_ID>",
rowId = "<ROW_ID>",
data = mapOf( "a" to "b" ),
data = mapOf(
"username" to "walter.obrien",
"email" to "walter.obrien@example.com",
"fullName" to "Walter O'Brien",
"age" to 30,
"isAdmin" to false
),
permissions = listOf("read("any")"), // (optional)
)
2 changes: 1 addition & 1 deletion library/src/main/java/io/appwrite/Client.kt
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class Client @JvmOverloads constructor(
"x-sdk-name" to "Android",
"x-sdk-platform" to "client",
"x-sdk-language" to "android",
"x-sdk-version" to "9.0.0",
"x-sdk-version" to "10.0.0",
"x-appwrite-response-format" to "1.8.0"
)
config = mutableMapOf()
Expand Down
134 changes: 134 additions & 0 deletions library/src/main/java/io/appwrite/Query.kt
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,15 @@ class Query(
*/
fun createdAfter(value: String) = Query("createdAfter", null, listOf(value)).toJson()

/**
* Filter resources where document was created between start and end dates (inclusive).
*
* @param start The start date value.
* @param end The end date value.
* @returns The query string.
*/
fun createdBetween(start: String, end: String) = Query("createdBetween", null, listOf(start, end)).toJson()

/**
* Filter resources where document was updated before date.
*
Expand All @@ -270,6 +279,15 @@ class Query(
*/
fun updatedAfter(value: String) = Query("updatedAfter", null, listOf(value)).toJson()

/**
* Filter resources where document was updated between start and end dates (inclusive).
*
* @param start The start date value.
* @param end The end date value.
* @returns The query string.
*/
fun updatedBetween(start: String, end: String) = Query("updatedBetween", null, listOf(start, end)).toJson()

/**
* Combine multiple queries using logical OR operator.
*
Expand All @@ -286,6 +304,122 @@ class Query(
*/
fun and(queries: List<String>) = Query("and", null, queries.map { it.fromJson<Query>() }).toJson()

/**
* Filter resources where attribute is at a specific distance from the given coordinates.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @param distance The distance value.
* @param meters Whether the distance is in meters.
* @returns The query string.
*/
fun distanceEqual(attribute: String, values: List<Any>, distance: Number, meters: Boolean = true) = Query("distanceEqual", attribute, listOf(listOf(values, distance, meters))).toJson()

/**
* Filter resources where attribute is not at a specific distance from the given coordinates.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @param distance The distance value.
* @param meters Whether the distance is in meters.
* @returns The query string.
*/
fun distanceNotEqual(attribute: String, values: List<Any>, distance: Number, meters: Boolean = true) = Query("distanceNotEqual", attribute, listOf(listOf(values, distance, meters))).toJson()

/**
* Filter resources where attribute is at a distance greater than the specified value from the given coordinates.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @param distance The distance value.
* @param meters Whether the distance is in meters.
* @returns The query string.
*/
fun distanceGreaterThan(attribute: String, values: List<Any>, distance: Number, meters: Boolean = true) = Query("distanceGreaterThan", attribute, listOf(listOf(values, distance, meters))).toJson()

/**
* Filter resources where attribute is at a distance less than the specified value from the given coordinates.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @param distance The distance value.
* @param meters Whether the distance is in meters.
* @returns The query string.
*/
fun distanceLessThan(attribute: String, values: List<Any>, distance: Number, meters: Boolean = true) = Query("distanceLessThan", attribute, listOf(listOf(values, distance, meters))).toJson()

/**
* Filter resources where attribute intersects with the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun intersects(attribute: String, values: List<Any>) = Query("intersects", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute does not intersect with the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun notIntersects(attribute: String, values: List<Any>) = Query("notIntersects", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute crosses the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun crosses(attribute: String, values: List<Any>) = Query("crosses", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute does not cross the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun notCrosses(attribute: String, values: List<Any>) = Query("notCrosses", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute overlaps with the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun overlaps(attribute: String, values: List<Any>) = Query("overlaps", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute does not overlap with the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun notOverlaps(attribute: String, values: List<Any>) = Query("notOverlaps", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute touches the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun touches(attribute: String, values: List<Any>) = Query("touches", attribute, listOf(values)).toJson()

/**
* Filter resources where attribute does not touch the given geometry.
*
* @param attribute The attribute to filter on.
* @param values The coordinate values.
* @returns The query string.
*/
fun notTouches(attribute: String, values: List<Any>) = Query("notTouches", attribute, listOf(values)).toJson()

/**
* Parse the value to a list of values.
*
Expand Down
4 changes: 2 additions & 2 deletions library/src/main/java/io/appwrite/enums/CreditCard.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ enum class CreditCard(val value: String) {
NARANJA("naranja"),
@SerializedName("targeta-shopping")
TARJETA_SHOPPING("targeta-shopping"),
@SerializedName("union-china-pay")
UNION_CHINA_PAY("union-china-pay"),
@SerializedName("unionpay")
UNION_PAY("unionpay"),
@SerializedName("visa")
VISA("visa"),
@SerializedName("mir")
Expand Down
4 changes: 3 additions & 1 deletion library/src/main/java/io/appwrite/enums/ExecutionMethod.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ enum class ExecutionMethod(val value: String) {
@SerializedName("DELETE")
DELETE("DELETE"),
@SerializedName("OPTIONS")
OPTIONS("OPTIONS");
OPTIONS("OPTIONS"),
@SerializedName("HEAD")
HEAD("HEAD");

override fun toString() = value
}
6 changes: 4 additions & 2 deletions library/src/main/java/io/appwrite/services/Account.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1408,7 +1408,8 @@ class Account(client: Client) : Service(client) {
* @return [io.appwrite.models.Session]
*/
@Deprecated(
message = "This API has been deprecated."
message = "This API has been deprecated since 1.6.0. Please use `Account.createSession` instead.",
replaceWith = ReplaceWith("io.appwrite.services.Account.createSession")
)
suspend fun updateMagicURLSession(
userId: String,
Expand Down Expand Up @@ -1523,7 +1524,8 @@ class Account(client: Client) : Service(client) {
* @return [io.appwrite.models.Session]
*/
@Deprecated(
message = "This API has been deprecated."
message = "This API has been deprecated since 1.6.0. Please use `Account.createSession` instead.",
replaceWith = ReplaceWith("io.appwrite.services.Account.createSession")
)
suspend fun updatePhoneSession(
userId: String,
Expand Down
2 changes: 1 addition & 1 deletion library/src/main/java/io/appwrite/services/Avatars.kt
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class Avatars(client: Client) : Service(client) {
* When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.
*
*
* @param code Credit Card Code. Possible values: amex, argencard, cabal, cencosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, union-china-pay, visa, mir, maestro, rupay.
* @param code Credit Card Code. Possible values: amex, argencard, cabal, cencosud, diners, discover, elo, hipercard, jcb, mastercard, naranja, targeta-shopping, unionpay, visa, mir, maestro, rupay.
* @param width Image width. Pass an integer between 0 to 2000. Defaults to 100.
* @param height Image height. Pass an integer between 0 to 2000. Defaults to 100.
* @param quality Image quality. Pass an integer between 0 to 100. Defaults to keep existing image quality.
Expand Down
2 changes: 1 addition & 1 deletion library/src/main/java/io/appwrite/services/Functions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class Functions(client: Client) : Service(client) {
* @param body HTTP body of execution. Default value is empty string.
* @param async Execute code in the background. Default value is false.
* @param path HTTP path of execution. Path can include query params. Default value is /
* @param method HTTP method of execution. Default value is GET.
* @param method HTTP method of execution. Default value is POST.
* @param headers HTTP headers of execution. Defaults to empty.
* @param scheduledAt Scheduled execution time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes.
* @return [io.appwrite.models.Execution]
Expand Down