Move GuardService to main

Users using the gcm flavor without playservice will be able to
use the background sync.
This commit is contained in:
S1m 2021-11-15 21:52:30 +01:00 committed by SpiritCroc
parent c4fd115209
commit cef51619b1
7 changed files with 33 additions and 150 deletions

View file

@ -1,40 +0,0 @@
/*
* Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.di
import android.content.Context
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import im.vector.app.core.services.GuardServiceStarter
import im.vector.app.fdroid.service.FDroidGuardServiceStarter
import im.vector.app.features.settings.VectorPreferences
@Module
@InstallIn(SingletonComponent::class)
abstract class FlavorModule {
companion object {
@Provides
@JvmStatic
fun provideGuardServiceStarter(preferences: VectorPreferences, appContext: Context): GuardServiceStarter {
return FDroidGuardServiceStarter(preferences, appContext)
}
}
}

View file

@ -1,20 +0,0 @@
/*
* Copyright 2019 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Code exclusively used by the FDroid build and not referenced on the main source code
*/
package im.vector.app.fdroid

View file

@ -1,48 +0,0 @@
/*
* Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.fdroid.service
import android.content.Context
import android.content.Intent
import androidx.core.content.ContextCompat
import im.vector.app.core.services.GuardServiceStarter
import im.vector.app.features.settings.VectorPreferences
import timber.log.Timber
import javax.inject.Inject
class FDroidGuardServiceStarter @Inject constructor(
private val preferences: VectorPreferences,
private val appContext: Context
) : GuardServiceStarter {
override fun start() {
if (preferences.isBackgroundSyncEnabled()) {
try {
Timber.i("## Sync: starting GuardService")
val intent = Intent(appContext, GuardService::class.java)
ContextCompat.startForegroundService(appContext, intent)
} catch (ex: Throwable) {
Timber.e("## Sync: ERROR starting GuardService")
}
}
}
override fun stop() {
val intent = Intent(appContext, GuardService::class.java)
appContext.stopService(intent)
}
}

View file

@ -1,37 +0,0 @@
/*
* Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.di
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import im.vector.app.core.services.GuardServiceStarter
@InstallIn(SingletonComponent::class)
@Module
abstract class FlavorModule {
companion object {
@Provides
@JvmStatic
fun provideGuardServiceStarter(): GuardServiceStarter {
return object : GuardServiceStarter {}
}
}
}

View file

@ -382,6 +382,11 @@
</intent-filter>
</service>
<service
android:name=".core.services.GuardService"
android:exported="false"
tools:ignore="Instantiatable" />
<!-- Receivers -->
<receiver

View file

@ -13,12 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package im.vector.app.fdroid.service
package im.vector.app.core.services
import android.content.Intent
import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R
import im.vector.app.core.services.VectorService
import im.vector.app.features.notifications.NotificationUtils
import javax.inject.Inject

View file

@ -16,7 +16,31 @@
package im.vector.app.core.services
interface GuardServiceStarter {
fun start() {}
fun stop() {}
import android.content.Context
import android.content.Intent
import androidx.core.content.ContextCompat
import im.vector.app.features.settings.VectorPreferences
import timber.log.Timber
import javax.inject.Inject
class GuardServiceStarter @Inject constructor(
private val preferences: VectorPreferences,
private val appContext: Context
) {
fun start() {
if (preferences.isBackgroundSyncEnabled()) {
try {
Timber.i("## Sync: starting GuardService")
val intent = Intent(appContext, GuardService::class.java)
ContextCompat.startForegroundService(appContext, intent)
} catch (ex: Throwable) {
Timber.e("## Sync: ERROR starting GuardService")
}
}
}
fun stop() {
val intent = Intent(appContext, GuardService::class.java)
appContext.stopService(intent)
}
}