Skip to content

Commit bcf4fe5

Browse files
committed
Move ActionData into operator
1 parent dcbe856 commit bcf4fe5

File tree

4 files changed

+54
-41
lines changed
  • firebase-auth/src
    • androidMain/kotlin/dev/gitlive/firebase/auth
    • commonMain/kotlin/dev/gitlive/firebase/auth
    • iosMain/kotlin/dev/gitlive/firebase/auth
    • jsMain/kotlin/dev/gitlive/firebase/auth

4 files changed

+54
-41
lines changed

firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/auth.kt

+10-10
Original file line numberDiff line numberDiff line change
@@ -82,28 +82,28 @@ actual class AuthResult internal constructor(val android: com.google.firebase.au
8282
actual class ActionCodeResult(val android: com.google.firebase.auth.ActionCodeResult) {
8383
actual val operation: Operation
8484
get() = when (android.operation) {
85-
com.google.firebase.auth.ActionCodeResult.PASSWORD_RESET -> Operation.PasswordReset
86-
com.google.firebase.auth.ActionCodeResult.VERIFY_EMAIL -> Operation.VerifyEmail
87-
com.google.firebase.auth.ActionCodeResult.RECOVER_EMAIL -> Operation.RecoverEmail
85+
com.google.firebase.auth.ActionCodeResult.PASSWORD_RESET -> Operation.PasswordReset(this)
86+
com.google.firebase.auth.ActionCodeResult.VERIFY_EMAIL -> Operation.VerifyEmail(this)
87+
com.google.firebase.auth.ActionCodeResult.RECOVER_EMAIL -> Operation.RecoverEmail(this)
8888
com.google.firebase.auth.ActionCodeResult.ERROR -> Operation.Error
8989
com.google.firebase.auth.ActionCodeResult.SIGN_IN_WITH_EMAIL_LINK -> Operation.SignInWithEmailLink
90-
com.google.firebase.auth.ActionCodeResult.VERIFY_BEFORE_CHANGE_EMAIL -> Operation.VerifyBeforeChangeEmail
91-
com.google.firebase.auth.ActionCodeResult.REVERT_SECOND_FACTOR_ADDITION -> Operation.RevertSecondFactorAddition
90+
com.google.firebase.auth.ActionCodeResult.VERIFY_BEFORE_CHANGE_EMAIL -> Operation.VerifyBeforeChangeEmail(this)
91+
com.google.firebase.auth.ActionCodeResult.REVERT_SECOND_FACTOR_ADDITION -> Operation.RevertSecondFactorAddition(this)
9292
else -> Operation.Error
9393
}
9494
}
9595

96-
actual sealed class ActionCodeDataType<out T> {
96+
internal actual sealed class ActionCodeDataType<out T> {
9797

98-
internal actual abstract fun dataForResult(result: ActionCodeResult): T?
98+
actual abstract fun dataForResult(result: ActionCodeResult): T
9999

100100
actual object Email : ActionCodeDataType<String>() {
101-
override fun dataForResult(result: ActionCodeResult): String? = result.android.info?.email
101+
override fun dataForResult(result: ActionCodeResult): String = result.android.info!!.email
102102
}
103103
actual object PreviousEmail : ActionCodeDataType<String>() {
104-
override fun dataForResult(result: ActionCodeResult): String? = (result.android.info as? ActionCodeEmailInfo)?.previousEmail
104+
override fun dataForResult(result: ActionCodeResult): String = (result.android.info as ActionCodeEmailInfo).previousEmail
105105
}
106-
actual object MultiFactor : ActionCodeDataType<MultiFactorInfo>() {
106+
actual object MultiFactor : ActionCodeDataType<MultiFactorInfo?>() {
107107
override fun dataForResult(result: ActionCodeResult): MultiFactorInfo? = (result.android.info as? ActionCodeMultiFactorInfo)?.multiFactorInfo?.let { MultiFactorInfo(it) }
108108
}
109109
}

firebase-auth/src/commonMain/kotlin/dev/gitlive/firebase/auth/auth.kt

+24-11
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,36 @@ expect class SignInMethodQueryResult {
5252
val signInMethods: List<String>
5353
}
5454

55-
enum class Operation {
56-
PasswordReset,
57-
VerifyEmail,
58-
RecoverEmail,
59-
Error,
60-
SignInWithEmailLink,
61-
VerifyBeforeChangeEmail,
62-
RevertSecondFactorAddition
55+
sealed class Operation {
56+
class PasswordReset(result: ActionCodeResult) : Operation() {
57+
val email: String = ActionCodeDataType.Email.dataForResult(result)
58+
}
59+
class VerifyEmail(result: ActionCodeResult) : Operation() {
60+
val email: String = ActionCodeDataType.Email.dataForResult(result)
61+
}
62+
class RecoverEmail(result: ActionCodeResult) : Operation() {
63+
val email: String = ActionCodeDataType.Email.dataForResult(result)
64+
val previousEmail: String = ActionCodeDataType.PreviousEmail.dataForResult(result)
65+
}
66+
object Error : Operation()
67+
object SignInWithEmailLink : Operation()
68+
class VerifyBeforeChangeEmail(result: ActionCodeResult) : Operation() {
69+
val email: String = ActionCodeDataType.Email.dataForResult(result)
70+
val previousEmail: String = ActionCodeDataType.PreviousEmail.dataForResult(result)
71+
}
72+
class RevertSecondFactorAddition(result: ActionCodeResult) : Operation() {
73+
val email: String = ActionCodeDataType.Email.dataForResult(result)
74+
val multiFactorInfo: MultiFactorInfo? = ActionCodeDataType.MultiFactor.dataForResult(result)
75+
}
6376
}
6477

65-
expect sealed class ActionCodeDataType<out T> {
78+
internal expect sealed class ActionCodeDataType<out T> {
6679

67-
internal abstract fun dataForResult(result: ActionCodeResult): T?
80+
abstract fun dataForResult(result: ActionCodeResult): T
6881

6982
object Email : ActionCodeDataType<String>
7083
object PreviousEmail : ActionCodeDataType<String>
71-
object MultiFactor : ActionCodeDataType<MultiFactorInfo>
84+
object MultiFactor : ActionCodeDataType<MultiFactorInfo?>
7285
}
7386

7487
expect class ActionCodeSettings {

firebase-auth/src/iosMain/kotlin/dev/gitlive/firebase/auth/auth.kt

+10-10
Original file line numberDiff line numberDiff line change
@@ -84,28 +84,28 @@ actual class AuthResult internal constructor(val ios: FIRAuthDataResult) {
8484
actual class ActionCodeResult(val ios: FIRActionCodeInfo) {
8585
actual val operation: Operation
8686
get() = when (ios.operation) {
87-
FIRActionCodeOperationPasswordReset -> Operation.PasswordReset
88-
FIRActionCodeOperationVerifyEmail -> Operation.VerifyEmail
89-
FIRActionCodeOperationRecoverEmail -> Operation.RecoverEmail
87+
FIRActionCodeOperationPasswordReset -> Operation.PasswordReset(this)
88+
FIRActionCodeOperationVerifyEmail -> Operation.VerifyEmail(this)
89+
FIRActionCodeOperationRecoverEmail -> Operation.RecoverEmail(this)
9090
FIRActionCodeOperationUnknown-> Operation.Error
9191
FIRActionCodeOperationEmailLink -> Operation.SignInWithEmailLink
92-
FIRActionCodeOperationVerifyAndChangeEmail -> Operation.VerifyBeforeChangeEmail
93-
FIRActionCodeOperationRevertSecondFactorAddition -> Operation.RevertSecondFactorAddition
92+
FIRActionCodeOperationVerifyAndChangeEmail -> Operation.VerifyBeforeChangeEmail(this)
93+
FIRActionCodeOperationRevertSecondFactorAddition -> Operation.RevertSecondFactorAddition(this)
9494
else -> Operation.Error
9595
}
9696
}
9797

98-
actual sealed class ActionCodeDataType<out T> {
98+
internal actual sealed class ActionCodeDataType<out T> {
9999

100-
internal actual abstract fun dataForResult(result: ActionCodeResult): T?
100+
actual abstract fun dataForResult(result: ActionCodeResult): T
101101

102102
actual object Email : ActionCodeDataType<String>() {
103-
override fun dataForResult(result: ActionCodeResult): String? = result.ios.email
103+
override fun dataForResult(result: ActionCodeResult): String = result.ios.email!!
104104
}
105105
actual object PreviousEmail : ActionCodeDataType<String>() {
106-
override fun dataForResult(result: ActionCodeResult): String? = result.ios.previousEmail
106+
override fun dataForResult(result: ActionCodeResult): String = result.ios.previousEmail!!
107107
}
108-
actual object MultiFactor : ActionCodeDataType<MultiFactorInfo>() {
108+
actual object MultiFactor : ActionCodeDataType<MultiFactorInfo?>() {
109109
override fun dataForResult(result: ActionCodeResult): MultiFactorInfo? = null
110110
}
111111
}

firebase-auth/src/jsMain/kotlin/dev/gitlive/firebase/auth/auth.kt

+10-10
Original file line numberDiff line numberDiff line change
@@ -86,27 +86,27 @@ actual class AuthResult internal constructor(val js: firebase.auth.AuthResult) {
8686
actual class ActionCodeResult(val js: firebase.auth.ActionCodeInfo) {
8787
actual val operation: Operation
8888
get() = when (js.operation) {
89-
"PASSWORD_RESET" -> Operation.PasswordReset
90-
"VERIFY_EMAIL" -> Operation.VerifyEmail
91-
"RECOVER_EMAIL" -> Operation.RecoverEmail
89+
"PASSWORD_RESET" -> Operation.PasswordReset(this)
90+
"VERIFY_EMAIL" -> Operation.VerifyEmail(this)
91+
"RECOVER_EMAIL" -> Operation.RecoverEmail(this)
9292
"EMAIL_SIGNIN" -> Operation.SignInWithEmailLink
93-
"VERIFY_AND_CHANGE_EMAIL" -> Operation.VerifyBeforeChangeEmail
94-
"REVERT_SECOND_FACTOR_ADDITION" -> Operation.RevertSecondFactorAddition
93+
"VERIFY_AND_CHANGE_EMAIL" -> Operation.VerifyBeforeChangeEmail(this)
94+
"REVERT_SECOND_FACTOR_ADDITION" -> Operation.RevertSecondFactorAddition(this)
9595
else -> Operation.Error
9696
}
9797
}
9898

99-
actual sealed class ActionCodeDataType<out T> {
99+
internal actual sealed class ActionCodeDataType<out T> {
100100

101-
internal actual abstract fun dataForResult(result: ActionCodeResult): T?
101+
actual abstract fun dataForResult(result: ActionCodeResult): T
102102

103103
actual object Email : ActionCodeDataType<String>() {
104-
override fun dataForResult(result: ActionCodeResult): String? = result.js.data.email
104+
override fun dataForResult(result: ActionCodeResult): String = result.js.data.email!!
105105
}
106106
actual object PreviousEmail : ActionCodeDataType<String>() {
107-
override fun dataForResult(result: ActionCodeResult): String? = result.js.data.previousEmail
107+
override fun dataForResult(result: ActionCodeResult): String = result.js.data.previousEmail!!
108108
}
109-
actual object MultiFactor : ActionCodeDataType<MultiFactorInfo>() {
109+
actual object MultiFactor : ActionCodeDataType<MultiFactorInfo?>() {
110110
override fun dataForResult(result: ActionCodeResult): MultiFactorInfo? = result.js.data.multiFactorInfo?.let { MultiFactorInfo(it) }
111111
}
112112
}

0 commit comments

Comments
 (0)