diff --git a/CHANGELOG.md b/CHANGELOG.md index dec06e1..7d5a7b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,39 @@ # Change Log Breaking changes and additions to Onfleet SDK will be documented in this file. +## [0.13.0] + +Breaking changes to API + +### Added Features + +- PIN verification requirement on task completion +- Geofence enforcement (warn / block) on task completion +- Bulk pick-up task linking (BULK_PICK_UP child tasks) +- Encrypted media file handling on CoreManager + +### Added + +- PinVerification model added (`PinVerification` with hash + salt) +- Task now exposes `pinVerification` (PinVerification) +- Requirements now exposes `pin` (RequirementState) completion requirement +- TaskCompletionDetails now exposes `pinVerified` +- GeofenceConfig model added (`GeofenceConfig`: requirementLevel, radiusMeters, taskTypes) +- GeofenceRequirementLevel enum added (`OFF`, `WARN`, `BLOCK`) +- GeofenceAttempt model added (`GeofenceAttempt`: type, location, timestamp) +- GeofenceAttemptType enum added (`WARN`, `BLOCK`, with `fromCode()`) +- Organization now exposes `geofence` (GeofenceConfig) settings +- CompletedTask now exposes `geofenceAttempts` and `completedWithGeofenceWarning` +- TaskCompletionDetails now exposes `geofenceAttempts`, `completedWithGeofenceWarning`, `location` +- SyncStatus complete-error variants now carry `geofenceAttempts` +- BulkTask model added (`BulkTask`: taskType, taskId, shortId, orderId, linkedTaskRecipient, linkedTaskDestination) +- Task now exposes `bulkTasks` (List) +- CoreManager has new media file methods: `saveMediaFile()`, `openMediaFileForPreview()`, `encryptInputStreamToFile()`, `deleteMediaFile()`, `isEncryptedMediaFile()` + +### Changed + +- Task/CompletedTask/Organization/Requirements/TaskCompletionDetails public constructor signatures expanded with the fields above (callers passing positional args must update) + ## [0.12.0] Breaking changes to API diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f69fba4..c5159fc 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - compileSdk = 36 + compileSdk = 37 buildToolsVersion = "36.0.0" defaultConfig { @@ -14,7 +14,7 @@ android { minSdk = 26 targetSdk = 36 versionCode = 1 - versionName = "0.12.0" + versionName = "0.13.0" } buildTypes { release { @@ -36,20 +36,20 @@ android { } dependencies { - implementation("com.onfleet:driver:0.12.0") + implementation("com.onfleet:driver:0.13.0") implementation("androidx.appcompat:appcompat:1.7.1") - implementation("org.jetbrains.kotlin:kotlin-stdlib:2.1.0") + implementation("org.jetbrains.kotlin:kotlin-stdlib:2.4.0") implementation("androidx.exifinterface:exifinterface:1.4.2") - implementation(platform("com.google.firebase:firebase-bom:34.11.0")) + implementation(platform("com.google.firebase:firebase-bom:34.16.0")) implementation("com.google.firebase:firebase-messaging") implementation("com.jakewharton.timber:timber:5.0.1") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2") - implementation("androidx.compose.ui:ui:1.10.5") - implementation("androidx.compose.ui:ui-tooling:1.10.5") - implementation("androidx.compose.foundation:foundation:1.10.5") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0") + implementation("androidx.compose.ui:ui:1.11.4") + implementation("androidx.compose.ui:ui-tooling:1.11.4") + implementation("androidx.compose.foundation:foundation:1.11.4") implementation("androidx.activity:activity-compose:1.13.0") - implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0") + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0") implementation("androidx.compose.material3:material3:1.4.0") implementation("com.google.accompanist:accompanist-permissions:0.37.3") } diff --git a/app/src/main/java/com/onfleet/sdk/onfleetclientexample/MainViewModel.kt b/app/src/main/java/com/onfleet/sdk/onfleetclientexample/MainViewModel.kt index d2e8837..322bf67 100644 --- a/app/src/main/java/com/onfleet/sdk/onfleetclientexample/MainViewModel.kt +++ b/app/src/main/java/com/onfleet/sdk/onfleetclientexample/MainViewModel.kt @@ -170,6 +170,7 @@ class MainViewModel : ViewModel() { signatureText = null, attestationAge = null, customRequirements = null, + pinVerified = null, ), ) ) { diff --git a/build.gradle.kts b/build.gradle.kts index bf549db..44ffe60 100755 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,10 +1,10 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "9.1.0" apply false - id("com.android.library") version "9.1.0" apply false - id("com.google.gms.google-services") version "4.4.4" apply false - id("org.jetbrains.kotlin.plugin.compose") version "2.1.0" apply false - id("org.jetbrains.kotlin.plugin.parcelize") version "2.1.0" apply false + id("com.android.application") version "9.2.1" apply false + id("com.android.library") version "9.2.1" apply false + id("com.google.gms.google-services") version "4.5.0" apply false + id("org.jetbrains.kotlin.plugin.compose") version "2.4.0" apply false + id("org.jetbrains.kotlin.plugin.parcelize") version "2.4.0" apply false } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a2ea75a..bc206a4 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-all.zip