add apollo client and make saveURL request

This commit is contained in:
Satindar Dhillon
2022-08-14 07:20:22 -07:00
parent 81e78749ca
commit 4f16e9ef30
7 changed files with 1980 additions and 2 deletions

View File

@ -3,6 +3,7 @@ plugins {
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
id 'com.apollographql.apollo3' version '3.5.0'
}
android {
@ -113,5 +114,10 @@ dependencies {
//Dagger - Hilt
implementation 'com.google.dagger:hilt-android:2.42'
kapt 'com.google.dagger:hilt-compiler:2.42'
implementation 'com.apollographql.apollo3:apollo-runtime:3.5.0'
}
apollo {
packageName.set 'app.omnivore.omnivore.graphql.generated'
}

View File

@ -0,0 +1,10 @@
mutation SaveUrl ($input: SaveUrlInput!) {
saveUrl(input:$input){
... on SaveSuccess {
url
}
... on SaveError {
errorCodes
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
package app.omnivore.omnivore
object Constants {
const val serverProdURL = "https://api-demo.omnivore.app"
const val demoProdURL = "https://api-demo.omnivore.app"
const val dataStoreName = "omnivore-datastore"
}

View File

@ -27,7 +27,7 @@ interface EmailLoginSubmit {
object RetrofitHelper {
fun getInstance(): Retrofit {
return Retrofit.Builder().baseUrl(Constants.serverProdURL)
return Retrofit.Builder().baseUrl(Constants.demoProdURL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}

View File

@ -30,6 +30,7 @@ class SaveActivity : ComponentActivity() {
if (intent.type?.startsWith("text/plain") == true) {
intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
extractedText = it
viewModel.saveURL(it)
}
}

View File

@ -1,8 +1,16 @@
package app.omnivore.omnivore
import android.content.ContentValues
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import app.omnivore.omnivore.graphql.generated.SaveUrlMutation
import app.omnivore.omnivore.graphql.generated.type.SaveUrlInput
import com.apollographql.apollo3.ApolloClient
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import java.util.*
import javax.inject.Inject
@HiltViewModel
@ -12,4 +20,28 @@ class SaveViewModel @Inject constructor(
fun getAuthToken(): String? = runBlocking {
datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken)
}
fun saveURL(url: String) {
viewModelScope.launch {
val apiKey = getAuthToken() ?: ""
val apolloClient = ApolloClient.Builder()
.serverUrl("${Constants.demoProdURL}/api/graphql")
.addHttpHeader("Authorization", value = apiKey)
.build()
val response = apolloClient.mutation(
SaveUrlMutation(
SaveUrlInput(
clientRequestId = UUID.randomUUID().toString(),
source = "android",
url = url
)
)
).execute()
val success = (response.data?.saveUrl?.onSaveSuccess?.url != null)
Log.d(ContentValues.TAG, "Saved URL?: ${success.toString()}")
}
}
}