Skip to content

Commit d308ce3

Browse files
authored
add destructuring declarations to Firebase App Distribution KTX (#3739)
* add destructuring declarations to Firebase App Distribution KTX * generate api information
1 parent d4c251a commit d308ce3

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

firebase-appdistribution-api/ktx/api.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ package com.google.firebase.appdistribution.ktx {
33

44
public final class FirebaseAppDistributionKt {
55
ctor public FirebaseAppDistributionKt();
6+
method @NonNull public static operator com.google.firebase.appdistribution.BinaryType component1(@NonNull com.google.firebase.appdistribution.AppDistributionRelease);
7+
method public static operator long component1(@NonNull com.google.firebase.appdistribution.UpdateProgress);
8+
method @NonNull public static operator String component2(@NonNull com.google.firebase.appdistribution.AppDistributionRelease);
9+
method public static operator long component2(@NonNull com.google.firebase.appdistribution.UpdateProgress);
10+
method public static operator long component3(@NonNull com.google.firebase.appdistribution.AppDistributionRelease);
11+
method @NonNull public static operator com.google.firebase.appdistribution.UpdateStatus component3(@NonNull com.google.firebase.appdistribution.UpdateProgress);
12+
method @Nullable public static operator String component4(@NonNull com.google.firebase.appdistribution.AppDistributionRelease);
613
method @NonNull public static com.google.firebase.appdistribution.FirebaseAppDistribution getAppDistribution(@NonNull com.google.firebase.ktx.Firebase);
714
}
815

firebase-appdistribution-api/ktx/src/androidTest/kotlin/com/google/firebase/app/distribution/ktx/FirebaseAppDistributionTests.kt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
1919
import com.google.common.truth.Truth.assertThat
2020
import com.google.firebase.FirebaseApp
2121
import com.google.firebase.FirebaseOptions
22+
import com.google.firebase.appdistribution.AppDistributionRelease
23+
import com.google.firebase.appdistribution.BinaryType
2224
import com.google.firebase.appdistribution.FirebaseAppDistribution
25+
import com.google.firebase.appdistribution.UpdateProgress
26+
import com.google.firebase.appdistribution.UpdateStatus
2327
import com.google.firebase.ktx.Firebase
2428
import com.google.firebase.ktx.app
2529
import com.google.firebase.ktx.initialize
@@ -70,6 +74,43 @@ class FirebaseAppDistributionTests : BaseTestCase() {
7074
fun appDistribution_default_callsDefaultGetInstance() {
7175
assertThat(Firebase.appDistribution).isSameInstanceAs(FirebaseAppDistribution.getInstance())
7276
}
77+
78+
@Test
79+
fun appDistributionReleaseDestructuringDeclarationsWork() {
80+
val mockAppDistributionRelease = object : AppDistributionRelease {
81+
override fun getDisplayVersion(): String = "1.0.0"
82+
83+
override fun getVersionCode(): Long = 1L
84+
85+
override fun getReleaseNotes(): String = "Changelog..."
86+
87+
override fun getBinaryType(): BinaryType = BinaryType.AAB
88+
}
89+
90+
val (type, displayVersion, versionCode, notes) = mockAppDistributionRelease
91+
92+
assertThat(type).isEqualTo(mockAppDistributionRelease.binaryType)
93+
assertThat(displayVersion).isEqualTo(mockAppDistributionRelease.displayVersion)
94+
assertThat(versionCode).isEqualTo(mockAppDistributionRelease.versionCode)
95+
assertThat(notes).isEqualTo(mockAppDistributionRelease.releaseNotes)
96+
}
97+
98+
@Test
99+
fun updateProgressDestructuringDeclarationsWork() {
100+
val mockUpdateProgress = object : UpdateProgress {
101+
override fun getApkBytesDownloaded(): Long = 1200L
102+
103+
override fun getApkFileTotalBytes(): Long = 9000L
104+
105+
override fun getUpdateStatus(): UpdateStatus = UpdateStatus.DOWNLOADING
106+
}
107+
108+
val (downloaded, total, status) = mockUpdateProgress
109+
110+
assertThat(downloaded).isEqualTo(mockUpdateProgress.apkBytesDownloaded)
111+
assertThat(total).isEqualTo(mockUpdateProgress.apkFileTotalBytes)
112+
assertThat(status).isEqualTo(mockUpdateProgress.updateStatus)
113+
}
73114
}
74115

75116
internal const val LIBRARY_NAME: String = "fire-appdistribution-ktx"

firebase-appdistribution-api/ktx/src/main/kotlin/com/google/firebase/appdistribution/ktx/FirebaseAppDistribution.kt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ package com.google.firebase.appdistribution.ktx
1717
import androidx.annotation.Keep
1818
import com.google.firebase.BuildConfig
1919
import com.google.firebase.FirebaseApp
20+
import com.google.firebase.appdistribution.AppDistributionRelease
2021
import com.google.firebase.appdistribution.FirebaseAppDistribution
22+
import com.google.firebase.appdistribution.UpdateProgress
2123
import com.google.firebase.components.Component
2224
import com.google.firebase.components.ComponentRegistrar
2325
import com.google.firebase.ktx.Firebase
@@ -27,6 +29,55 @@ import com.google.firebase.platforminfo.LibraryVersionComponent
2729
val Firebase.appDistribution: FirebaseAppDistribution
2830
get() = FirebaseAppDistribution.getInstance()
2931

32+
/**
33+
* Destructuring declaration for [AppDistributionRelease] to provide binaryType.
34+
*
35+
* @return the binaryType of the [AppDistributionRelease]
36+
*/
37+
operator fun AppDistributionRelease.component1() = binaryType
38+
39+
/**
40+
* Destructuring declaration for [AppDistributionRelease] to provide displayVersion.
41+
*
42+
* @return the displayVersion of the [AppDistributionRelease]
43+
*/
44+
operator fun AppDistributionRelease.component2() = displayVersion
45+
46+
/**
47+
* Destructuring declaration for [AppDistributionRelease] to provide versionCode.
48+
*
49+
* @return the versionCode of the [AppDistributionRelease]
50+
*/
51+
operator fun AppDistributionRelease.component3() = versionCode
52+
53+
/**
54+
* Destructuring declaration for [AppDistributionRelease] to provide releaseNotes.
55+
*
56+
* @return the releaseNotes of the [AppDistributionRelease]
57+
*/
58+
operator fun AppDistributionRelease.component4() = releaseNotes
59+
60+
/**
61+
* Destructuring declaration for [UpdateProgress] to provide apkBytesDownloaded.
62+
*
63+
* @return the apkBytesDownloaded of the [UpdateProgress]
64+
*/
65+
operator fun UpdateProgress.component1() = apkBytesDownloaded
66+
67+
/**
68+
* Destructuring declaration for [UpdateProgress] to provide apkFileTotalBytes.
69+
*
70+
* @return the apkFileTotalBytes of the [UpdateProgress]
71+
*/
72+
operator fun UpdateProgress.component2() = apkFileTotalBytes
73+
74+
/**
75+
* Destructuring declaration for [UpdateProgress] to provide updateStatus.
76+
*
77+
* @return the updateStatus of the [UpdateProgress]
78+
*/
79+
operator fun UpdateProgress.component3() = updateStatus
80+
3081
internal const val LIBRARY_NAME: String = "fire-appdistribution-ktx"
3182

3283
/** @suppress */

0 commit comments

Comments
 (0)