diff --git a/android/Omnivore/app/build.gradle b/android/Omnivore/app/build.gradle index 5aff54871..0ff0eb597 100644 --- a/android/Omnivore/app/build.gradle +++ b/android/Omnivore/app/build.gradle @@ -91,5 +91,12 @@ dependencies { // optional - Test helpers for Lifecycle runtime // testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version") + + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + +// coroutines + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4' } diff --git a/android/Omnivore/app/src/main/AndroidManifest.xml b/android/Omnivore/app/src/main/AndroidManifest.xml index f8e001890..3bf761e86 100644 --- a/android/Omnivore/app/src/main/AndroidManifest.xml +++ b/android/Omnivore/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ android:supportsRtl="true" android:theme="@style/Theme.Omnivore" tools:targetApi="31"> + + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt index 80b0654aa..2ee230390 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/LoginViewModel.kt @@ -3,9 +3,25 @@ package app.omnivore.omnivore import android.content.ContentValues import android.util.Log import androidx.lifecycle.ViewModel +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch class LoginViewModel: ViewModel() { fun login(email: String, password: String) { - Log.v(ContentValues.TAG, "in view model $email / $password") + val emailLogin = RetrofitHelper.getInstance().create(EmailLoginSubmit::class.java) + + GlobalScope.launch { + val result = emailLogin.submitEmailLogin( + EmailLoginCredentials(email = email, password = password) + ) + + // TODO: parse out result and store auth token + // set some variable that compose can observe + if (result != null) { + Log.d(ContentValues.TAG, result.body().toString()) + } else { + Log.d(ContentValues.TAG, result.body().toString()) + } + } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt new file mode 100644 index 000000000..4336f88ad --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/RESTNetworker.kt @@ -0,0 +1,36 @@ +package app.omnivore.omnivore + +import retrofit2.Response +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory +import retrofit2.http.Body +import retrofit2.http.Headers +import retrofit2.http.POST + + +data class EmailAuthPayload( + val authCookieString: String?, + val authToken: String?, + val pendingEmailVerification: Boolean? +) + +data class EmailLoginCredentials( + val email: String, + val password: String +) + +interface EmailLoginSubmit { + @Headers("Content-Type: application/json") + @POST("/api/mobile-auth/email-sign-in") + suspend fun submitEmailLogin(@Body credentials: EmailLoginCredentials): Response +} + +object RetrofitHelper { + private const val baseUrl = "https://api-demo.omnivore.app" + + fun getInstance(): Retrofit { + return Retrofit.Builder().baseUrl(baseUrl) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } +}