diff --git a/android/Omnivore/app/src/main/graphql/Viewer.graphql b/android/Omnivore/app/src/main/graphql/Viewer.graphql new file mode 100644 index 000000000..9bfe75182 --- /dev/null +++ b/android/Omnivore/app/src/main/graphql/Viewer.graphql @@ -0,0 +1,13 @@ +query Viewer { + me { + id + name + isFullUser + profile { + id + username + pictureUrl + bio + } + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/models/Viewer.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/models/Viewer.kt new file mode 100644 index 000000000..505068dd4 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/models/Viewer.kt @@ -0,0 +1,9 @@ +package app.omnivore.omnivore.models + +data class Viewer( + val id: String, + val name: String, + val username: String, + val pictureUrl: String?, +) + diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/ViewerQuery.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/ViewerQuery.kt new file mode 100644 index 000000000..f187362ee --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/ViewerQuery.kt @@ -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 + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt index 84c29d34f..a337bcbaf 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/auth/LoginViewModel.kt @@ -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() {