add apollo client and make saveURL request
This commit is contained in:
@ -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'
|
||||
}
|
||||
|
||||
10
android/Omnivore/app/src/main/graphql/SaveUrl.graphql
Normal file
10
android/Omnivore/app/src/main/graphql/SaveUrl.graphql
Normal file
@ -0,0 +1,10 @@
|
||||
mutation SaveUrl ($input: SaveUrlInput!) {
|
||||
saveUrl(input:$input){
|
||||
... on SaveSuccess {
|
||||
url
|
||||
}
|
||||
... on SaveError {
|
||||
errorCodes
|
||||
}
|
||||
}
|
||||
}
|
||||
1929
android/Omnivore/app/src/main/graphql/schema.graphqls
Normal file
1929
android/Omnivore/app/src/main/graphql/schema.graphqls
Normal file
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||
}
|
||||
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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()}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user