mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
fetch viewer so user id can be passed to segment
This commit is contained in:
parent
faf666d091
commit
3eb11b7a04
4 changed files with 52 additions and 2 deletions
13
android/Omnivore/app/src/main/graphql/Viewer.graphql
Normal file
13
android/Omnivore/app/src/main/graphql/Viewer.graphql
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
query Viewer {
|
||||
me {
|
||||
id
|
||||
name
|
||||
isFullUser
|
||||
profile {
|
||||
id
|
||||
username
|
||||
pictureUrl
|
||||
bio
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package app.omnivore.omnivore.models
|
||||
|
||||
data class Viewer(
|
||||
val id: String,
|
||||
val name: String,
|
||||
val username: String,
|
||||
val pictureUrl: String?,
|
||||
)
|
||||
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue