Add intercom hash to Android
This commit is contained in:
@ -17,8 +17,8 @@ android {
|
||||
applicationId "app.omnivore.omnivore"
|
||||
minSdk 26
|
||||
targetSdk 33
|
||||
versionCode 146
|
||||
versionName "0.0.146"
|
||||
versionCode 152
|
||||
versionName "0.0.152"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables {
|
||||
|
||||
@ -3,6 +3,7 @@ query Viewer {
|
||||
id
|
||||
name
|
||||
isFullUser
|
||||
intercomHash
|
||||
profile {
|
||||
id
|
||||
username
|
||||
|
||||
@ -24,9 +24,12 @@ class EventTracker @Inject constructor(val app: Context) {
|
||||
PostHog.setSingletonInstance(posthog)
|
||||
}
|
||||
|
||||
fun registerUser(userID: String) {
|
||||
fun registerUser(userID: String, intercomHash: String?) {
|
||||
posthog.identify(userID)
|
||||
Intercom.client().loginIdentifiedUser(Registration.create().withUserId(userID))
|
||||
intercomHash?.let { intercomHash ->
|
||||
Intercom.client().setUserHash(intercomHash)
|
||||
}
|
||||
}
|
||||
|
||||
fun track(eventName: String, properties: Properties = Properties()) {
|
||||
|
||||
@ -13,7 +13,8 @@ suspend fun Networker.viewer(): Viewer? {
|
||||
userID = me.id,
|
||||
name = me.name,
|
||||
username = me.profile.username,
|
||||
profileImageURL = me.profile.pictureUrl
|
||||
profileImageURL = me.profile.pictureUrl,
|
||||
intercomHash = me.intercomHash,
|
||||
)
|
||||
} else {
|
||||
null
|
||||
|
||||
@ -13,7 +13,7 @@ import app.omnivore.omnivore.persistence.entities.*
|
||||
SavedItemAndSavedItemLabelCrossRef::class,
|
||||
SavedItemAndHighlightCrossRef::class
|
||||
],
|
||||
version = 12
|
||||
version = 15
|
||||
)
|
||||
abstract class AppDatabase : RoomDatabase() {
|
||||
abstract fun viewerDao(): ViewerDao
|
||||
|
||||
@ -9,6 +9,7 @@ data class Viewer(
|
||||
val name: String,
|
||||
val username: String,
|
||||
val profileImageURL: String?,
|
||||
val intercomHash: String?,
|
||||
)
|
||||
|
||||
@Dao
|
||||
|
||||
@ -131,7 +131,7 @@ class LoginViewModel @Inject constructor(
|
||||
viewModelScope.launch {
|
||||
val viewer = networker.viewer()
|
||||
viewer?.let {
|
||||
eventTracker.registerUser(viewer.userID)
|
||||
eventTracker.registerUser(viewer.userID, viewer.intercomHash)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,9 +16,12 @@ import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.navigation.NavHostController
|
||||
import app.omnivore.omnivore.R
|
||||
import app.omnivore.omnivore.Routes
|
||||
import app.omnivore.omnivore.networking.Networker
|
||||
import app.omnivore.omnivore.networking.viewer
|
||||
import app.omnivore.omnivore.ui.auth.LoginViewModel
|
||||
import app.omnivore.omnivore.ui.settings.LogoutDialog
|
||||
import app.omnivore.omnivore.ui.settings.ManageAccountDialog
|
||||
@ -27,6 +30,7 @@ import com.google.android.gms.auth.api.signin.GoogleSignIn
|
||||
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
|
||||
import io.intercom.android.sdk.Intercom
|
||||
import io.intercom.android.sdk.IntercomSpace
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
@ -106,7 +110,7 @@ fun SettingsViewContent(loginViewModel: LoginViewModel, settingsViewModel: Setti
|
||||
}
|
||||
RowDivider()
|
||||
SettingRow(text = stringResource(R.string.settings_view_setting_row_feedback)) {
|
||||
Intercom.client().present(space = IntercomSpace.Messages)
|
||||
settingsViewModel.presentIntercom()
|
||||
}
|
||||
RowDivider()
|
||||
SettingRow(text = stringResource(R.string.settings_view_setting_row_privacy_policy)) {
|
||||
|
||||
@ -6,7 +6,10 @@ import app.omnivore.omnivore.DatastoreKeys
|
||||
import app.omnivore.omnivore.DatastoreRepository
|
||||
import app.omnivore.omnivore.dataService.DataService
|
||||
import app.omnivore.omnivore.networking.Networker
|
||||
import app.omnivore.omnivore.networking.viewer
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import io.intercom.android.sdk.Intercom
|
||||
import io.intercom.android.sdk.IntercomSpace
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
@ -22,4 +25,16 @@ class SettingsViewModel @Inject constructor(
|
||||
dataService.clearDatabase()
|
||||
}
|
||||
}
|
||||
|
||||
fun presentIntercom() {
|
||||
viewModelScope.launch {
|
||||
val viewer = networker.viewer()
|
||||
viewer?.let { viewer ->
|
||||
viewer?.intercomHash?.let { intercomHash ->
|
||||
Intercom.client().setUserHash(intercomHash)
|
||||
}
|
||||
Intercom.client().present(space = IntercomSpace.Messages)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user