add sign in option for android client on server
This commit is contained in:
@ -76,5 +76,36 @@ class LoginViewModel @Inject constructor(
|
||||
Log.d(ContentValues.TAG, "Google Result?: $googleIdToken")
|
||||
// TODO: submit id token to backend
|
||||
// If token is missing then set the error message
|
||||
|
||||
if (googleIdToken == null) {
|
||||
return
|
||||
}
|
||||
|
||||
val login = RetrofitHelper.getInstance().create(AuthProviderLoginSubmit::class.java)
|
||||
|
||||
viewModelScope.launch {
|
||||
isLoading = true
|
||||
errorMessage = null
|
||||
|
||||
val result = login.submitAuthProviderLogin(
|
||||
SignInParams(token = googleIdToken, provider = "GOOGLE")
|
||||
)
|
||||
|
||||
isLoading = false
|
||||
|
||||
if (result.body()?.authToken != null) {
|
||||
datastoreRepo.putString(DatastoreKeys.omnivoreAuthToken, result.body()?.authToken!!)
|
||||
} else {
|
||||
errorMessage = "Something went wrong. Please check your email/password and try again"
|
||||
}
|
||||
|
||||
if (result.body()?.authCookieString != null) {
|
||||
datastoreRepo.putString(
|
||||
DatastoreKeys.omnivoreAuthCookieString, result.body()?.authCookieString!!
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -7,6 +7,17 @@ import retrofit2.http.Body
|
||||
import retrofit2.http.Headers
|
||||
import retrofit2.http.POST
|
||||
|
||||
data class AuthPayload(
|
||||
val authCookieString: String,
|
||||
val authToken: String
|
||||
)
|
||||
|
||||
data class SignInParams(
|
||||
val token: String,
|
||||
val provider: String, // APPLE or GOOGLE
|
||||
val source: String = "ANDROID"
|
||||
)
|
||||
|
||||
data class EmailAuthPayload(
|
||||
val authCookieString: String?,
|
||||
val authToken: String?,
|
||||
@ -24,6 +35,12 @@ interface EmailLoginSubmit {
|
||||
suspend fun submitEmailLogin(@Body credentials: EmailLoginCredentials): Response<EmailAuthPayload>
|
||||
}
|
||||
|
||||
interface AuthProviderLoginSubmit {
|
||||
@Headers("Content-Type: application/json")
|
||||
@POST("/api/mobile-auth/sign-in")
|
||||
suspend fun submitAuthProviderLogin(@Body params: SignInParams): Response<AuthPayload>
|
||||
}
|
||||
|
||||
object RetrofitHelper {
|
||||
fun getInstance(): Retrofit {
|
||||
return Retrofit.Builder().baseUrl(Constants.demoProdURL)
|
||||
|
||||
Reference in New Issue
Block a user