Commit 1decd3ad authored by Vladislav Bogdashkin's avatar Vladislav Bogdashkin 🎣

add network check on start downloading

parent 56000b6a
...@@ -14,6 +14,7 @@ import com.biganto.visual.roompark.base.RoomParkApplication ...@@ -14,6 +14,7 @@ import com.biganto.visual.roompark.base.RoomParkApplication
import com.biganto.visual.roompark.base.RoomParkMainActivity import com.biganto.visual.roompark.base.RoomParkMainActivity
import com.biganto.visual.roompark.conductor.dialogs.change_handler.DialogChangeHandler import com.biganto.visual.roompark.conductor.dialogs.change_handler.DialogChangeHandler
import com.biganto.visual.roompark.data.repository.file.FileModule import com.biganto.visual.roompark.data.repository.file.FileModule
import com.biganto.visual.roompark.data.service.network.INetworkMonitor
import com.biganto.visual.roompark.di.dagger.ActivityModule import com.biganto.visual.roompark.di.dagger.ActivityModule
import com.biganto.visual.roompark.di.dagger.AppComponent import com.biganto.visual.roompark.di.dagger.AppComponent
import com.biganto.visual.roompark.di.dagger.PerScreen import com.biganto.visual.roompark.di.dagger.PerScreen
...@@ -68,6 +69,9 @@ class StartPlansDownloadingDialogController : Controller { ...@@ -68,6 +69,9 @@ class StartPlansDownloadingDialogController : Controller {
@Inject @Inject
lateinit var rpActivity: RoomParkMainActivity lateinit var rpActivity: RoomParkMainActivity
@Inject
lateinit var networkMonitor: INetworkMonitor
override fun onContextAvailable(context: Context) { override fun onContextAvailable(context: Context) {
super.onContextAvailable(context) super.onContextAvailable(context)
...@@ -120,6 +124,13 @@ class StartPlansDownloadingDialogController : Controller { ...@@ -120,6 +124,13 @@ class StartPlansDownloadingDialogController : Controller {
view.findViewById<Button>(R.id.alert_ok_button) view.findViewById<Button>(R.id.alert_ok_button)
.clicks() .clicks()
.map {
if (!networkMonitor.isConnected){
snackbar.showSnackBar(R.string.no_network_error)
return@map null
}
else return@map it
}
.debounce(200, TimeUnit.MILLISECONDS) .debounce(200, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe { .subscribe {
......
...@@ -13,6 +13,7 @@ import com.biganto.visual.roompark.base.BaseRoomParkActivity ...@@ -13,6 +13,7 @@ import com.biganto.visual.roompark.base.BaseRoomParkActivity
import com.biganto.visual.roompark.base.RoomParkApplication import com.biganto.visual.roompark.base.RoomParkApplication
import com.biganto.visual.roompark.base.RoomParkMainActivity import com.biganto.visual.roompark.base.RoomParkMainActivity
import com.biganto.visual.roompark.data.repository.file.FileModule import com.biganto.visual.roompark.data.repository.file.FileModule
import com.biganto.visual.roompark.data.service.network.INetworkMonitor
import com.biganto.visual.roompark.di.dagger.ActivityModule import com.biganto.visual.roompark.di.dagger.ActivityModule
import com.biganto.visual.roompark.di.dagger.AppComponent import com.biganto.visual.roompark.di.dagger.AppComponent
import com.biganto.visual.roompark.di.dagger.PerScreen import com.biganto.visual.roompark.di.dagger.PerScreen
...@@ -64,6 +65,10 @@ class StartToursDownloadingDialogController : Controller { ...@@ -64,6 +65,10 @@ class StartToursDownloadingDialogController : Controller {
@Inject @Inject
lateinit var rpActivity: RoomParkMainActivity lateinit var rpActivity: RoomParkMainActivity
@Inject
lateinit var networkMonitor: INetworkMonitor
override fun onContextAvailable(context: Context) { override fun onContextAvailable(context: Context) {
super.onContextAvailable(context) super.onContextAvailable(context)
...@@ -111,6 +116,13 @@ class StartToursDownloadingDialogController : Controller { ...@@ -111,6 +116,13 @@ class StartToursDownloadingDialogController : Controller {
detachDisposable.add( detachDisposable.add(
view.findViewById<Button>(R.id.alert_ok_button) view.findViewById<Button>(R.id.alert_ok_button)
.clicks() .clicks()
.map {
if (!networkMonitor.isConnected){
snackbar.showSnackBar(R.string.no_network_error)
return@map null
}
else return@map it
}
.debounce(200, TimeUnit.MILLISECONDS) .debounce(200, TimeUnit.MILLISECONDS)
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
.flatMap{ downloader.startToursDownloading()} .flatMap{ downloader.startToursDownloading()}
......
package com.biganto.visual.roompark.data.service.network package com.biganto.visual.roompark.data.service.network
import android.app.Application
import android.content.Context import android.content.Context
import android.net.ConnectivityManager import android.net.ConnectivityManager
import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
...@@ -9,7 +11,7 @@ import javax.inject.Singleton ...@@ -9,7 +11,7 @@ import javax.inject.Singleton
* Created by Vladislav Bogdashkin on 12.10.2018. * Created by Vladislav Bogdashkin on 12.10.2018.
*/ */
@Singleton @Singleton
class LiveNetworkMonitor(val context: Context) : INetworkMonitor { class LiveNetworkMonitor @Inject constructor(val context: Application) : INetworkMonitor {
override val isConnected: Boolean override val isConnected: Boolean
...@@ -23,7 +25,8 @@ class LiveNetworkMonitor(val context: Context) : INetworkMonitor { ...@@ -23,7 +25,8 @@ class LiveNetworkMonitor(val context: Context) : INetworkMonitor {
override val isWifiConnected: Boolean override val isWifiConnected: Boolean
get() { get() {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
return cm.activeNetworkInfo != null && (cm.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI); return cm.activeNetworkInfo != null
&& (cm.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI);
} }
} }
......
...@@ -11,6 +11,7 @@ import com.biganto.visual.roompark.data.repository.db.IDb ...@@ -11,6 +11,7 @@ import com.biganto.visual.roompark.data.repository.db.IDb
import com.biganto.visual.roompark.data.repository.db.requrey.DbModule import com.biganto.visual.roompark.data.repository.db.requrey.DbModule
import com.biganto.visual.roompark.data.repository.file.FileModule import com.biganto.visual.roompark.data.repository.file.FileModule
import com.biganto.visual.roompark.data.service.lifecycle.ForegroundLifecycleObserver import com.biganto.visual.roompark.data.service.lifecycle.ForegroundLifecycleObserver
import com.biganto.visual.roompark.data.service.network.INetworkMonitor
import com.biganto.visual.roompark.data.service.notification.INotificationCenter import com.biganto.visual.roompark.data.service.notification.INotificationCenter
import com.biganto.visual.roompark.domain.contract.* import com.biganto.visual.roompark.domain.contract.*
import dagger.BindsInstance import dagger.BindsInstance
...@@ -72,6 +73,8 @@ interface AppComponent : AndroidInjector<RoomParkApplication>{ ...@@ -72,6 +73,8 @@ interface AppComponent : AndroidInjector<RoomParkApplication>{
fun provideNotifivations(): INotificationCenter fun provideNotifivations(): INotificationCenter
fun provideNetMonitor(): INetworkMonitor
fun provideAppContext():Application fun provideAppContext():Application
......
...@@ -12,6 +12,8 @@ import com.biganto.visual.roompark.data.repository.db.requrey.DbModule ...@@ -12,6 +12,8 @@ import com.biganto.visual.roompark.data.repository.db.requrey.DbModule
import com.biganto.visual.roompark.data.repository.db.requrey.RequeryRepository import com.biganto.visual.roompark.data.repository.db.requrey.RequeryRepository
import com.biganto.visual.roompark.data.service.lifecycle.AppLifecycleListener import com.biganto.visual.roompark.data.service.lifecycle.AppLifecycleListener
import com.biganto.visual.roompark.data.service.lifecycle.ForegroundLifecycleObserver import com.biganto.visual.roompark.data.service.lifecycle.ForegroundLifecycleObserver
import com.biganto.visual.roompark.data.service.network.INetworkMonitor
import com.biganto.visual.roompark.data.service.network.LiveNetworkMonitor
import com.biganto.visual.roompark.data.service.notification.INotificationCenter import com.biganto.visual.roompark.data.service.notification.INotificationCenter
import com.biganto.visual.roompark.data.service.notification.NotificationCenter import com.biganto.visual.roompark.data.service.notification.NotificationCenter
import com.biganto.visual.roompark.domain.contract.* import com.biganto.visual.roompark.domain.contract.*
...@@ -92,4 +94,9 @@ abstract class DataModule { ...@@ -92,4 +94,9 @@ abstract class DataModule {
@Binds @Binds
abstract fun provideDb(db: RequeryRepository) : IDb abstract fun provideDb(db: RequeryRepository) : IDb
@Singleton
@Binds
abstract fun provideNetwork(networkMonitor: LiveNetworkMonitor) : INetworkMonitor
} }
\ No newline at end of file
...@@ -16,6 +16,7 @@ import com.biganto.visual.roompark.conductor.BigantoBaseController ...@@ -16,6 +16,7 @@ import com.biganto.visual.roompark.conductor.BigantoBaseController
import com.biganto.visual.roompark.conductor.dialogs.StartPlansDownloadingDialogController import com.biganto.visual.roompark.conductor.dialogs.StartPlansDownloadingDialogController
import com.biganto.visual.roompark.conductor.dialogs.change_handler.DialogChangeHandler import com.biganto.visual.roompark.conductor.dialogs.change_handler.DialogChangeHandler
import com.biganto.visual.roompark.conductor.dialogs.tour_chooser.StartToursDownloadingDialogController import com.biganto.visual.roompark.conductor.dialogs.tour_chooser.StartToursDownloadingDialogController
import com.biganto.visual.roompark.data.service.network.INetworkMonitor
import com.biganto.visual.roompark.domain.model.SubscriptionModel import com.biganto.visual.roompark.domain.model.SubscriptionModel
import com.biganto.visual.roompark.presentation.screen.settings.util.CahcedListAdapter import com.biganto.visual.roompark.presentation.screen.settings.util.CahcedListAdapter
import com.biganto.visual.roompark.presentation.screen.settings.util.PushListAdapter import com.biganto.visual.roompark.presentation.screen.settings.util.PushListAdapter
...@@ -109,8 +110,15 @@ class SettingsScreenController : ...@@ -109,8 +110,15 @@ class SettingsScreenController :
@BindView(R.id.progress_lock_background) @BindView(R.id.progress_lock_background)
lateinit var progressShame:View lateinit var progressShame:View
@Inject
lateinit var networkMonitor: INetworkMonitor
@OnClick(R.id.downloadFlatCardsIcon) @OnClick(R.id.downloadFlatCardsIcon)
fun onStartTourPlans(){ fun onStartTourPlans(){
if (!networkMonitor.isConnected){
snackbar.showSnackBar(R.string.no_network_error)
return
}
router.pushController(RouterTransaction.with(StartPlansDownloadingDialogController()) router.pushController(RouterTransaction.with(StartPlansDownloadingDialogController())
.pushChangeHandler(DialogChangeHandler()) .pushChangeHandler(DialogChangeHandler())
.popChangeHandler(DialogChangeHandler()) .popChangeHandler(DialogChangeHandler())
...@@ -131,6 +139,10 @@ class SettingsScreenController : ...@@ -131,6 +139,10 @@ class SettingsScreenController :
@OnClick(R.id.downloadToursIcon) @OnClick(R.id.downloadToursIcon)
fun startDownloadingDialog(){ fun startDownloadingDialog(){
if (!networkMonitor.isConnected){
snackbar.showSnackBar(R.string.no_network_error)
return
}
router.pushController(RouterTransaction.with(StartToursDownloadingDialogController()) router.pushController(RouterTransaction.with(StartToursDownloadingDialogController())
.pushChangeHandler(DialogChangeHandler()) .pushChangeHandler(DialogChangeHandler())
.popChangeHandler(DialogChangeHandler()) .popChangeHandler(DialogChangeHandler())
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment