Skip to content

Commit 2bffe3f

Browse files
amulyagaurhuewu
andauthored
Update EngageWorker snippet to use V2 isServiceAvailable API (#980)
* Update EngageWorker.kt * Update EngageWorker.kt * Update EngageWorker.ktFix EngageWorker: Remove incorrect else block in availability check * Define companion object TAG for EngageWorker loggingUpdate EngageWorker.kt * Update EngageWorker.kt * Update EngageWorker.kt * Update EngageWorker.ktMap PUBLISH_TYPE_USER_ACCOUNT_MANAGEMENT to ClusterType.TYPE_ENGAGEMENT in intendedClusterType * Update EngageWorker.kt * Update EngageWorker.kt * Update libs.versions.tomlBump engageCore dependency to 1.6.0 --------- Co-authored-by: Chansuk Yang <chansuk@google.com>
1 parent d93a416 commit 2bffe3f

2 files changed

Lines changed: 19 additions & 7 deletions

File tree

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ dataStore = "1.2.1"
5454
datastoreCore = "1.2.1"
5555
datastorePreferencesRxjava2 = "1.2.1"
5656
datastorePreferencesRxjava3 = "1.2.1"
57-
engageCore = "1.5.12"
57+
engageCore = "1.6.0"
5858
firebase-ai = "17.13.0"
5959
firebase-bom = "34.15.0"
6060
firebase-ondevice = "16.0.0-beta03"

misc/src/main/java/com/example/snippets/engage/EngageWorker.kt

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ import android.content.Context
2121
import android.util.Log
2222
import androidx.work.CoroutineWorker
2323
import androidx.work.WorkerParameters
24+
import com.google.android.engage.common.datamodel.ClusterType
2425
import com.google.android.engage.service.AppEngageErrorCode
2526
import com.google.android.engage.service.AppEngageException
2627
import com.google.android.engage.service.AppEngagePublishClient
2728
import com.google.android.engage.service.AppEngagePublishStatusCode
2829
import com.google.android.engage.service.PublishStatusRequest
30+
import com.google.android.engage.service.ServiceAvailabilityRequest
2931
import com.google.android.gms.tasks.Task
3032
import kotlinx.coroutines.tasks.await
3133

@@ -47,15 +49,25 @@ class EngageWorker(context: Context, workerParams: WorkerParameters) : Coroutine
4749
return Result.failure()
4850
}
4951

50-
// Check if engage service is available before publishing.
51-
val isAvailable = client.isServiceAvailable.await()
52+
val publishType = inputData.getString(Constants.PUBLISH_TYPE_KEY)
53+
val intendedClusterType = when (publishType) {
54+
Constants.PUBLISH_TYPE_RECOMMENDATIONS -> ClusterType.TYPE_RECOMMENDATION
55+
Constants.PUBLISH_TYPE_FEATURED -> ClusterType.TYPE_FEATURED
56+
Constants.PUBLISH_TYPE_CONTINUATION -> ClusterType.TYPE_CONTINUATION
57+
Constants.PUBLISH_TYPE_USER_ACCOUNT_MANAGEMENT -> ClusterType.TYPE_ENGAGEMENT
58+
else -> ClusterType.TYPE_UNKNOWN
59+
}
5260

53-
// If the service is not available, do not attempt to publish and indicate failure.
54-
if (!isAvailable) {
55-
return Result.failure()
61+
if (intendedClusterType != ClusterType.TYPE_UNKNOWN) {
62+
val request = ServiceAvailabilityRequest.Builder()
63+
.addIntendedClusterType(intendedClusterType)
64+
.build()
65+
val availabilityMap = client.isServiceAvailable(request).await()
66+
if (availabilityMap[intendedClusterType] != true) {
67+
return Result.failure()
68+
}
5669
}
5770

58-
val publishType = inputData.getString(Constants.PUBLISH_TYPE_KEY)
5971
return when (publishType) {
6072
Constants.PUBLISH_TYPE_RECOMMENDATIONS -> publishRecommendations()
6173
// Constants.PUBLISH_TYPE_FEATURED -> publishFeatured()

0 commit comments

Comments
 (0)