fetch viewer so user id can be passed to segment

This commit is contained in:
Satindar Dhillon 2022-12-13 18:29:49 -08:00
parent faf666d091
commit 3eb11b7a04
4 changed files with 52 additions and 2 deletions

View file

@ -0,0 +1,13 @@
query Viewer {
me {
id
name
isFullUser
profile {
id
username
pictureUrl
bio
}
}
}

View file

@ -0,0 +1,9 @@
package app.omnivore.omnivore.models
data class Viewer(
val id: String,
val name: String,
val username: String,
val pictureUrl: String?,
)

View file

@ -0,0 +1,20 @@
package app.omnivore.omnivore.networking
import app.omnivore.omnivore.graphql.generated.ViewerQuery
import app.omnivore.omnivore.models.Viewer
suspend fun Networker.viewer(): Viewer? {
val result = authenticatedApolloClient().query(ViewerQuery()).execute()
val me = result.data?.me
return if (me != null) {
Viewer(
id = me.id,
name = me.name,
username = me.profile.username,
pictureUrl = me.profile.pictureUrl
)
} else {
null
}
}

View file

@ -8,6 +8,8 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import app.omnivore.omnivore.*
import app.omnivore.omnivore.graphql.generated.SearchQuery
import app.omnivore.omnivore.graphql.generated.ValidateUsernameQuery
import app.omnivore.omnivore.networking.Networker
import app.omnivore.omnivore.networking.viewer
import com.apollographql.apollo3.ApolloClient
import com.apollographql.apollo3.api.Optional
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
@ -37,7 +39,8 @@ data class PendingEmailUserCreds(
@HiltViewModel
class LoginViewModel @Inject constructor(
private val datastoreRepo: DatastoreRepository,
private val eventTracker: EventTracker
private val eventTracker: EventTracker,
private val networker: Networker
): ViewModel() {
private var validateUsernameJob: Job? = null
@ -92,7 +95,12 @@ class LoginViewModel @Inject constructor(
}
fun registerUser() {
// TODO: eventTracker.registerUser()
viewModelScope.launch {
val viewer = networker.viewer()
viewer?.let {
eventTracker.registerUser(viewer.id)
}
}
}
private fun resetState() {