add sign in option for android client on server

This commit is contained in:
Satindar Dhillon
2022-08-18 18:42:18 -07:00
parent 4bc1173de4
commit 1b46739a0d
8 changed files with 67 additions and 6 deletions

View File

@ -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!!
)
}
}
}
}

View File

@ -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)