Skip to content

Commit 62a7b15

Browse files
committed
emit network status on subscribe and error if calling getObservable before configure
1 parent b470387 commit 62a7b15

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

aws-datastore/src/main/java/com/amplifyframework/datastore/syncengine/ReachabilityMonitor.kt

+13-2
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,14 @@ public interface ReachabilityMonitor {
5454

5555
private class ReachabilityMonitorImpl constructor(val schedulerProvider: SchedulerProvider) : ReachabilityMonitor {
5656
private val subject = BehaviorSubject.create<Boolean>()
57+
private var connectivityProvider: ConnectivityProvider? = null
58+
5759
override fun configure(context: Context) {
5860
return configure(context, DefaultConnectivityProvider())
5961
}
6062

6163
override fun configure(context: Context, connectivityProvider: ConnectivityProvider) {
64+
this.connectivityProvider = connectivityProvider
6265
connectivityProvider.registerDefaultNetworkCallback(
6366
context,
6467
object : NetworkCallback() {
@@ -74,8 +77,16 @@ private class ReachabilityMonitorImpl constructor(val schedulerProvider: Schedul
7477
}
7578

7679
override fun getObservable(): Observable<Boolean> {
77-
return subject.subscribeOn(schedulerProvider.io())
78-
.debounce(250, TimeUnit.MILLISECONDS, schedulerProvider.computation())
80+
connectivityProvider?.let { connectivityProvider ->
81+
return subject.subscribeOn(schedulerProvider.io())
82+
.doOnSubscribe { subject.onNext(connectivityProvider.hasActiveNetwork) }
83+
.debounce(250, TimeUnit.MILLISECONDS, schedulerProvider.computation())
84+
} ?: run {
85+
throw DataStoreException(
86+
"ReachabilityMonitor has not been configured.",
87+
"Call ReachabilityMonitor.configure() before calling ReachabilityMonitor.getObservable()"
88+
)
89+
}
7990
}
8091
}
8192

0 commit comments

Comments
 (0)