Skip to content

Commit 2db22f5

Browse files
Merge pull request #388 from appwrite/refactor-on-progress
Refactor on progress
2 parents 82f1fc0 + a6d1168 commit 2db22f5

File tree

17 files changed

+91
-22
lines changed

17 files changed

+91
-22
lines changed

src/SDK/Language/Android.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,12 @@ public function getFiles()
158158
'template' => '/android/library/src/main/java/io/appwrite/models/RealtimeModels.kt.twig',
159159
'minify' => false,
160160
],
161+
[
162+
'scope' => 'default',
163+
'destination' => '/library/src/main/java/{{ sdk.namespace | caseSlash }}/models/UploadProgress.kt',
164+
'template' => '/android/library/src/main/java/io/appwrite/models/UploadProgress.kt.twig',
165+
'minify' => false,
166+
],
161167
[
162168
'scope' => 'default',
163169
'destination' => '/library/src/main/java/{{ sdk.namespace | caseSlash }}/WebAuthComponent.kt',

src/SDK/Language/Kotlin.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,12 @@ public function getFiles()
390390
'template' => '/kotlin/src/main/kotlin/io/appwrite/services/ServiceTemplate.kt.twig',
391391
'minify' => false,
392392
],
393+
[
394+
'scope' => 'default',
395+
'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/models/UploadProgress.kt',
396+
'template' => '/kotlin/src/main/kotlin/io/appwrite/models/UploadProgress.kt.twig',
397+
'minify' => false,
398+
],
393399
[
394400
'scope' => 'definition',
395401
'destination' => '/src/main/kotlin/{{ sdk.namespace | caseSlash }}/models/{{ definition.name | caseUcfirst }}.kt',

src/SDK/Language/Swift.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,12 @@ public function getFiles()
163163
'template' => 'swift/Sources/Models/Query.swift.twig',
164164
'minify' => false,
165165
],
166+
[
167+
'scope' => 'default',
168+
'destination' => '/Sources/{{ spec.title | caseUcfirst}}/Models/UploadProgress.swift',
169+
'template' => 'swift/Sources/Models/UploadProgress.swift.twig',
170+
'minify' => false,
171+
],
166172
[
167173
'scope' => 'default',
168174
'destination' => '/Sources/{{ spec.title | caseUcfirst}}/Extensions/Codable+JSON.swift',

templates/android/library/src/main/java/io/appwrite/Client.kt.twig

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {{ sdk.namespace | caseDot }}.{{ spec.title | caseLower }}.BuildConfig
88
import {{ sdk.namespace | caseDot }}.exceptions.{{ spec.title | caseUcfirst }}Exception
99
import {{ sdk.namespace | caseDot }}.extensions.fromJson
1010
import {{ sdk.namespace | caseDot }}.json.PreciseNumberAdapter
11+
import {{ sdk.namespace | caseDot }}.models.UploadProgress
1112
import kotlinx.coroutines.CoroutineScope
1213
import kotlinx.coroutines.Dispatchers
1314
import kotlinx.coroutines.Job
@@ -317,7 +318,7 @@ class Client @JvmOverloads constructor(
317318
responseType: Class<T>,
318319
convert: ((Map<String, Any,>) -> T),
319320
paramName: String,
320-
onProgress: ((Double) -> Unit)? = null,
321+
onProgress: ((UploadProgress) -> Unit)? = null,
321322
): T {
322323
val file = params[paramName] as File
323324
val size = file.length()
@@ -371,7 +372,13 @@ class Client @JvmOverloads constructor(
371372

372373
offset += CHUNK_SIZE
373374
headers["x-{{ spec.title | caseLower }}-id"] = result!!["\$id"].toString()
374-
onProgress?.invoke(offset.coerceAtMost(size).toDouble()/size * 100)
375+
onProgress?.invoke(UploadProgress(
376+
id = result!!["\$id"].toString(),
377+
progress = offset.coerceAtMost(size).toDouble()/size * 100,
378+
sizeUploaded = offset.coerceAtMost(size),
379+
chunksTotal = result!!["chunksTotal"].toString().toInt(),
380+
chunksUploaded = result!!["chunksUploaded"].toString().toInt(),
381+
))
375382
}
376383

377384
return convert(result as Map<String, Any>)

templates/android/library/src/main/java/io/appwrite/models/Error.kt.twig

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package {{ sdk.namespace | caseDot }}.models
2+
3+
data class UploadProgress(
4+
val id: String,
5+
val progress: Double,
6+
val sizeUploaded: Long,
7+
val chunksTotal: Int,
8+
val chunksUploaded: Int
9+
)

templates/android/library/src/main/java/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% macro parameter(parameter) %}{{ parameter.name | caseCamel }}: {{ parameter.type | typeName }}{% if not parameter.required %}? = null{% endif %}{% endmacro %}
22
{% macro method_parameters(parameters, consumes) %}
3-
{% if parameters.all|length > 0 %}{% for parameter in parameters.all %}{{ '\n\t\t' }}{{ _self.parameter(parameter) }}{% if not loop.last %}{{ ',' }}{% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, onProgress: ((Double) -> Unit)? = null{% endif %}{% endif %}
3+
{% if parameters.all|length > 0 %}{% for parameter in parameters.all %}{{ '\n\t\t' }}{{ _self.parameter(parameter) }}{% if not loop.last %}{{ ',' }}{% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, onProgress: ((UploadProgress) -> Unit)? = null{% endif %}{% endif %}
44
{% endmacro %}
55
{% macro methodNeedsSecurityParameters(method) %}
66
{% if (method.type == "webAuth" or method.type == "location") and method.security|length > 0 %}{{ true }}{% else %}{{false}}{% endif %}

templates/kotlin/src/main/kotlin/io/appwrite/Client.kt.twig

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.google.gson.reflect.TypeToken
55
import {{ sdk.namespace | caseDot }}.exceptions.{{ spec.title | caseUcfirst }}Exception
66
import {{ sdk.namespace | caseDot }}.extensions.fromJson
77
import {{ sdk.namespace | caseDot }}.json.PreciseNumberAdapter
8+
import {{ sdk.namespace | caseDot }}.models.UploadProgress
89
import kotlinx.coroutines.CoroutineScope
910
import kotlinx.coroutines.Dispatchers
1011
import kotlinx.coroutines.Job
@@ -276,7 +277,7 @@ class Client @JvmOverloads constructor(
276277
responseType: Class<T>,
277278
convert: ((Map<String, Any,>) -> T),
278279
paramName: String,
279-
onProgress: ((Double) -> Unit)? = null,
280+
onProgress: ((UploadProgress) -> Unit)? = null,
280281
): T {
281282
val file = params[paramName] as File
282283
val size = file.length()
@@ -330,7 +331,13 @@ class Client @JvmOverloads constructor(
330331

331332
offset += CHUNK_SIZE
332333
headers["x-{{ spec.title | caseLower }}-id"] = result!!["\$id"].toString()
333-
onProgress?.invoke(offset.coerceAtMost(size).toDouble()/size * 100)
334+
onProgress?.invoke(UploadProgress(
335+
id = result!!["\$id"].toString(),
336+
progress = offset.coerceAtMost(size).toDouble()/size * 100,
337+
sizeUploaded = offset.coerceAtMost(size),
338+
chunksTotal = result!!["chunkTotal"].toString().toInt(),
339+
chunksUploaded = result!!["chunkUploaded"].toString().toInt(),
340+
))
334341
}
335342

336343
return convert(result as Map<String, Any>)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package {{ sdk.namespace | caseDot }}.models
2+
3+
data class UploadProgress(
4+
val id: String,
5+
val progress: Double,
6+
val sizeUploaded: Long,
7+
val chunksTotal: Int,
8+
val chunksUploaded: Int
9+
)

templates/kotlin/src/main/kotlin/io/appwrite/services/ServiceTemplate.kt.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{% macro parameter(parameter) %}{{ parameter.name | caseCamel }}: {{ parameter.type | typeName }}{% if not parameter.required %}? = null{% endif %}{% endmacro %}
22
{% macro method_parameters(parameters, consumes) %}
3-
{% if parameters.all|length > 0 %}{% for parameter in parameters.all %}{{ '\n\t\t' }}{{ _self.parameter(parameter) }}{% if not loop.last %}{{ ',' }}{% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, onProgress: ((Double) -> Unit)? = null{% endif %}{% endif %}
3+
{% if parameters.all|length > 0 %}{% for parameter in parameters.all %}{{ '\n\t\t' }}{{ _self.parameter(parameter) }}{% if not loop.last %}{{ ',' }}{% endif %}{% endfor %}{% if 'multipart/form-data' in consumes %}, onProgress: ((UploadProgress) -> Unit)? = null{% endif %}{% endif %}
44
{% endmacro %}
55
{% macro methodNeedsSecurityParameters(method) %}
66
{% if (method.type == "webAuth" or method.type == "location") and method.security|length > 0 %}{{ true }}{% else %}{{false}}{% endif %}

0 commit comments

Comments
 (0)