1
0
mirror of https://github.com/vector-im/riotX-android synced 2025-10-05 15:52:47 +02:00

Implement Mobile Device Manager feature with 3 keys.

This commit is contained in:
Benoit Marty
2023-11-30 18:02:02 +01:00
parent bb9d1fc8d8
commit fb077d5065
12 changed files with 179 additions and 7 deletions

View File

@@ -26,6 +26,8 @@ import im.vector.app.core.pushers.PushParser
import im.vector.app.core.pushers.PushersManager
import im.vector.app.core.pushers.UnifiedPushHelper
import im.vector.app.core.pushers.VectorPushHandler
import im.vector.app.features.mdm.MdmData
import im.vector.app.features.mdm.MdmService
import im.vector.app.features.settings.VectorPreferences
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
@@ -46,6 +48,7 @@ class VectorFirebaseMessagingService : FirebaseMessagingService() {
@Inject lateinit var pushParser: PushParser
@Inject lateinit var vectorPushHandler: VectorPushHandler
@Inject lateinit var unifiedPushHelper: UnifiedPushHelper
@Inject lateinit var mdmService: MdmService
private val scope = CoroutineScope(SupervisorJob())
@@ -53,6 +56,7 @@ class VectorFirebaseMessagingService : FirebaseMessagingService() {
scope.cancel()
super.onDestroy()
}
override fun onNewToken(token: String) {
Timber.tag(loggerTag.value).d("New Firebase token")
fcmHelper.storeFcmToken(token)
@@ -62,7 +66,13 @@ class VectorFirebaseMessagingService : FirebaseMessagingService() {
unifiedPushHelper.isEmbeddedDistributor()
) {
scope.launch {
pushersManager.enqueueRegisterPusher(token, getString(R.string.pusher_http_url))
pushersManager.enqueueRegisterPusher(
pushKey = token,
gateway = mdmService.getData(
mdmData = MdmData.DefaultPushGatewayUrl,
defaultValue = getString(R.string.pusher_http_url),
),
)
}
}
}

View File

@@ -20,6 +20,10 @@
tools:ignore="UnusedAttribute"
tools:replace="android:allowBackup">
<meta-data
android:name="android.content.APP_RESTRICTIONS"
android:resource="@xml/vector_app_restrictions" />
<!-- Activity alias for the launcher Activity (must be declared after the Activity it targets) -->
<!-- exported="true" is required to launch application -->
<activity-alias

View File

@@ -50,6 +50,9 @@ import im.vector.app.features.analytics.metrics.VectorPlugins
import im.vector.app.features.configuration.VectorCustomEventTypesProvider
import im.vector.app.features.invite.AutoAcceptInvites
import im.vector.app.features.invite.CompileTimeAutoAcceptInvites
import im.vector.app.features.mdm.DefaultMdmService
import im.vector.app.features.mdm.MdmData
import im.vector.app.features.mdm.MdmService
import im.vector.app.features.navigation.DefaultNavigator
import im.vector.app.features.navigation.Navigator
import im.vector.app.features.pin.PinCodeStore
@@ -145,6 +148,7 @@ import javax.inject.Singleton
flipperProxy: FlipperProxy,
vectorPlugins: VectorPlugins,
vectorCustomEventTypesProvider: VectorCustomEventTypesProvider,
mdmService: MdmService,
): MatrixConfiguration {
return MatrixConfiguration(
applicationFlavor = BuildConfig.FLAVOR_DESCRIPTION,
@@ -156,6 +160,7 @@ import javax.inject.Singleton
metricPlugins = vectorPlugins.plugins(),
cryptoAnalyticsPlugin = vectorPlugins.cryptoMetricPlugin,
customEventTypesProvider = vectorCustomEventTypesProvider,
clientPermalinkBaseUrl = mdmService.getData(MdmData.PermalinkBaseUrl),
syncConfig = SyncConfig(
syncFilterParams = SyncFilterParams(lazyLoadMembersForStateEvents = true, useThreadNotifications = true)
)
@@ -168,6 +173,11 @@ import javax.inject.Singleton
return Matrix(context, configuration)
}
@Provides
fun providesMdmService(context: Context): MdmService {
return DefaultMdmService(context)
}
@Provides
fun providesCurrentSession(activeSessionHolder: ActiveSessionHolder): Session {
// TODO handle session injection better

View File

@@ -2,4 +2,8 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- The https://github.com/LikeTheSalad/android-stem requires a non empty strings.xml -->
<string name="ignored_placeholder" tools:ignore="UnusedResources">ignored</string>
<string name="restriction_default_homeserver_url_title">Default homeserver URL</string>
<string name="restriction_default_push_gateway_title">Default Push gateway</string>
<string name="restriction_permalink_base_url_title">Permalink base url</string>
</resources>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<restriction
android:key="im.vector.app.serverConfigDefaultHomeserverUrlString"
android:restrictionType="string"
android:title="@string/restriction_default_homeserver_url_title" />
<restriction
android:key="im.vector.app.serverConfigSygnalAPIUrlString"
android:restrictionType="string"
android:title="@string/restriction_default_push_gateway_title" />
<restriction
android:key="im.vector.app.clientPermalinkBaseUrl"
android:restrictionType="string"
android:title="@string/restriction_permalink_base_url_title" />
</restrictions>