Skip to content
This repository was archived by the owner on Jul 16, 2024. It is now read-only.

Commit 06e326a

Browse files
authored
Cleanup generic functions & classes (#58)
* Make some generic types extend Any instead of Any? * Merge custom observers * Cleanup observableFields * Prevent unsafeLazy return nullable value
1 parent 2e08d99 commit 06e326a

File tree

4 files changed

+33
-40
lines changed

4 files changed

+33
-40
lines changed

base/src/main/kotlin/io/goooler/demoapp/base/util/BaseExtensions.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import androidx.core.os.bundleOf
3232
import androidx.core.text.parseAsHtml
3333
import androidx.core.text.toSpannable
3434
import androidx.databinding.DataBindingUtil
35-
import androidx.databinding.ObservableField
3635
import androidx.databinding.ViewDataBinding
3736
import androidx.fragment.app.Fragment
3837
import androidx.fragment.app.FragmentActivity
@@ -91,10 +90,6 @@ typealias MutableStringLiveData = MutableLiveData<String?>
9190

9291
typealias MutableListLiveData<T> = MutableLiveData<List<T>>
9392

94-
typealias ObservableString = ObservableField<String?>
95-
96-
typealias ObservableList<T> = ObservableField<List<T>>
97-
9893
typealias ParamMap = HashMap<String, Any>
9994

10095
// ---------------------Any-------------------------------//
@@ -107,7 +102,8 @@ inline val currentThreadName: String get() = Thread.currentThread().name
107102

108103
inline val isMainThread: Boolean get() = Looper.getMainLooper() == Looper.myLooper()
109104

110-
fun <T> unsafeLazy(initializer: () -> T): Lazy<T> = lazy(LazyThreadSafetyMode.NONE, initializer)
105+
fun <T : Any> unsafeLazy(initializer: () -> T): Lazy<T> =
106+
lazy(LazyThreadSafetyMode.NONE, initializer)
111107

112108
fun <T> MutableLiveData<T>.asLiveData(): LiveData<T> = this
113109

common/src/main/kotlin/io/goooler/demoapp/common/util/CommonExtensions.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,19 +183,19 @@ fun Number.formatMoney(isYuan: Boolean = false, trans2W: Boolean = false, scale:
183183

184184
// ---------------------Rx-------------------------------//
185185

186-
fun <T> Single<T>.subscribeOnIoThread(): Single<T> = subscribeOn(Schedulers.io())
186+
fun <T : Any> Single<T>.subscribeOnIoThread(): Single<T> = subscribeOn(Schedulers.io())
187187

188-
fun <T> Single<T>.observeOnMainThread(): Single<T> = observeOn(AndroidSchedulers.mainThread())
188+
fun <T : Any> Single<T>.observeOnMainThread(): Single<T> = observeOn(AndroidSchedulers.mainThread())
189189

190-
fun <T> Single<T>.subscribeAndObserve(): Single<T> =
190+
fun <T : Any> Single<T>.subscribeAndObserve(): Single<T> =
191191
subscribeOnIoThread().observeOnMainThread()
192192

193-
fun <T> Observable<T>.subscribeOnIoThread(): Observable<T> = subscribeOn(Schedulers.io())
193+
fun <T : Any> Observable<T>.subscribeOnIoThread(): Observable<T> = subscribeOn(Schedulers.io())
194194

195-
fun <T> Observable<T>.observeOnMainThread(): Observable<T> =
195+
fun <T : Any> Observable<T>.observeOnMainThread(): Observable<T> =
196196
observeOn(AndroidSchedulers.mainThread())
197197

198-
fun <T> Observable<T>.subscribeAndObserve(): Observable<T> =
198+
fun <T : Any> Observable<T>.subscribeAndObserve(): Observable<T> =
199199
subscribeOnIoThread().observeOnMainThread()
200200

201201
// ---------------------Res-------------------------------//

test/src/main/kotlin/io/goooler/demoapp/test/network/exception/CustomObservableObserver.kt

Lines changed: 0 additions & 22 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
package io.goooler.demoapp.test.network.exception
22

33
import io.goooler.demoapp.common.network.BaseResponse
4+
import io.reactivex.rxjava3.observers.DisposableObserver
45
import io.reactivex.rxjava3.observers.DisposableSingleObserver
56

6-
abstract class CustomSingleObserver<T : BaseResponse> :
7-
DisposableSingleObserver<T>(),
7+
sealed interface CustomObserver<T : Any> {
8+
9+
fun onCustomSuccess(t: T)
10+
11+
fun onCustomError(e: ResponseException)
12+
}
13+
14+
abstract class CustomObservableObserver<T : BaseResponse> :
15+
DisposableObserver<T>(),
816
CustomObserver<T> {
917

10-
override fun onSuccess(t: T) {
18+
override fun onNext(t: T) {
1119
if (t.code == 200)
1220
onCustomSuccess(t)
1321
else
@@ -17,11 +25,22 @@ abstract class CustomSingleObserver<T : BaseResponse> :
1725
override fun onError(e: Throwable) {
1826
onCustomError(e.toResponseException())
1927
}
28+
29+
override fun onComplete() {}
2030
}
2131

22-
sealed interface CustomObserver<T> {
32+
abstract class CustomSingleObserver<T : BaseResponse> :
33+
DisposableSingleObserver<T>(),
34+
CustomObserver<T> {
2335

24-
fun onCustomSuccess(t: T)
36+
override fun onSuccess(t: T) {
37+
if (t.code == 200)
38+
onCustomSuccess(t)
39+
else
40+
onCustomError((t.message ?: t.code.toString()).toResponseException())
41+
}
2542

26-
fun onCustomError(e: ResponseException)
43+
override fun onError(e: Throwable) {
44+
onCustomError(e.toResponseException())
45+
}
2746
}

0 commit comments

Comments
 (0)