Skip to content

Commit ce323fe

Browse files
author
tanpengcheng
committed
[feat] Fix conflict.
2 parents 3a6b190 + 4f3cde1 commit ce323fe

File tree

59 files changed

+1358
-553
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1358
-553
lines changed

app/build.gradle

Lines changed: 61 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -60,48 +60,70 @@ android {
6060
dependencies {
6161

6262
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
63-
implementation 'androidx.core:core-ktx:1.10.0'
63+
implementation 'androidx.core:core-ktx:1.10.1'
6464
implementation 'androidx.appcompat:appcompat:1.6.1'
65-
implementation 'com.google.android.material:material:1.8.0'
65+
implementation 'com.google.android.material:material:1.9.0'
6666
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
67-
implementation "androidx.fragment:fragment-ktx:1.5.6"
68-
implementation 'androidx.appcompat:appcompat:1.7.0-alpha02'
69-
implementation deps.view.swiperefresh
70-
71-
implementation deps.rxJava.runtime
72-
implementation deps.rxJava.kotlin
73-
implementation deps.rxAndroid.runtime
74-
implementation deps.rxpermissions.runtime
75-
implementation deps.rxbinding.runtime
76-
implementation deps.rxbinding.appcompat
77-
implementation deps.rxbinding.core
78-
implementation deps.rxbinding.swiperefreshlayout
79-
80-
implementation deps.coroutines.runtime
81-
implementation deps.coroutines.android
82-
implementation deps.coroutines.rx
83-
84-
implementation deps.tadapter.runtime
85-
86-
implementation deps.date.runtime
87-
88-
implementation deps.kodein.runtime
89-
implementation deps.kodein.androidx
90-
91-
implementation deps.moshi.runtime
92-
implementation deps.moshi.ktx
93-
implementation deps.moshi.adapters
94-
kapt deps.moshi.ktxCodegen
95-
67+
implementation "androidx.fragment:fragment-ktx:1.5.7"
68+
69+
// RxJava3
70+
implementation "io.reactivex.rxjava3:rxjava:3.1.6"
71+
implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
72+
implementation 'io.reactivex.rxjava3:rxkotlin:3.0.1'
73+
implementation 'com.github.tbruyelle:rxpermissions:0.12'
74+
75+
// RxBinding
76+
implementation 'com.jakewharton.rxbinding4:rxbinding-core:4.0.0'
77+
implementation 'com.jakewharton.rxbinding4:rxbinding-appcompat:4.0.0'
78+
implementation 'com.jakewharton.rxbinding4:rxbinding-swiperefreshlayout:4.0.0'
79+
80+
// Coroutines
81+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1"
82+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1"
83+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.7.1"
84+
85+
// Kodein
86+
implementation "org.kodein.di:kodein-di-framework-android-core:7.2.0"
87+
implementation "org.kodein.di:kodein-di-framework-android-x:7.2.0"
88+
89+
// Moshi
90+
implementation "com.squareup.moshi:moshi:1.14.0"
91+
implementation "com.squareup.moshi:moshi-kotlin:1.14.0"
92+
implementation "com.squareup.moshi:moshi-adapters:1.14.0"
93+
kapt "com.squareup.moshi:moshi-kotlin-codegen:1.14.0"
94+
95+
// Lifecycle
96+
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.6.1"
97+
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
98+
//noinspection LifecycleAnnotationProcessorWithJava8
99+
kapt 'androidx.lifecycle:lifecycle-compiler:2.6.1'
100+
101+
// CameraX
102+
def camerax_version = "1.2.2"
103+
implementation "androidx.camera:camera-core:${camerax_version}"
104+
implementation "androidx.camera:camera-camera2:${camerax_version}"
105+
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
106+
implementation "androidx.camera:camera-video:${camerax_version}"
107+
implementation "androidx.camera:camera-view:${camerax_version}"
108+
implementation "androidx.camera:camera-extensions:${camerax_version}"
109+
110+
// BarcodeScan
111+
implementation 'com.google.mlkit:barcode-scanning:17.1.0'
112+
113+
// QRCode Gen
114+
implementation 'com.github.kenglxn.QRGen:android:3.0.1'
115+
// implementation 'com.github.kenglxn.QRGen:javase:3.0.1'
116+
117+
// Start Result
118+
implementation 'com.afollestad.inline-activity-result:core:0.2.0'
119+
implementation 'com.afollestad.inline-activity-result:coroutines:0.2.0'
120+
121+
// Others
122+
implementation files("libs/tadapter-release.aar")
123+
implementation "com.jakewharton.threetenabp:threetenabp:1.4.6"
96124
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:3.0.0-RC2'
97-
98-
implementation deps.rxutils.runtime
99-
100-
implementation deps.glide.runtime
101-
102-
implementation deps.lifecycle.runtime
103-
implementation deps.lifecycle.viewmodel
104-
kapt deps.lifecycle.compiler
125+
implementation "com.github.Tans5:RxUtils:0.3.2"
126+
implementation "com.github.bumptech.glide:glide:4.15.1"
105127

106128
implementation project(":net")
107129
}

app/libs/tadapter-release.aar

221 KB
Binary file not shown.

app/src/main/AndroidManifest.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
xmlns:tools="http://schemas.android.com/tools"
44
package="com.tans.tfiletransporter">
55

6+
<uses-feature android:name="android.hardware.camera.any" android:required="false"/>
7+
68
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
79
<uses-permission android:name="android.permission.INTERNET" />
810
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
@@ -14,6 +16,8 @@
1416
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
1517
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
1618
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
19+
<uses-permission android:name="android.permission.CAMERA" />
20+
<uses-permission android:name="android.permission.VIBRATE" />
1721

1822
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
1923
android:usesPermissionFlags="neverForLocation"
@@ -53,6 +57,13 @@
5357
android:taskAffinity=".transfer"
5458
android:configChanges="orientation|screenSize"/>
5559

60+
<activity
61+
android:name=".ui.activity.qrcodescan.ScanQrCodeActivity"
62+
android:screenOrientation="portrait"
63+
android:windowSoftInputMode="adjustResize|stateHidden"
64+
android:taskAffinity=".transfer"
65+
android:configChanges="orientation|screenSize"/>
66+
5667
</application>
5768

5869
</manifest>

app/src/main/java/com/tans/tfiletransporter/Settings.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import android.content.Context
44
import android.content.SharedPreferences
55
import android.os.Environment
66
import com.tans.tfiletransporter.core.Stateable
7-
import io.reactivex.Single
8-
import io.reactivex.subjects.BehaviorSubject
9-
import io.reactivex.subjects.Subject
7+
import io.reactivex.rxjava3.core.Single
8+
import io.reactivex.rxjava3.subjects.BehaviorSubject
9+
import io.reactivex.rxjava3.subjects.Subject
1010
import kotlinx.coroutines.Dispatchers
1111
import kotlinx.coroutines.asExecutor
1212
import java.io.File
@@ -33,12 +33,12 @@ object Settings : Stateable<Settings.SettingsData> {
3333

3434
private const val defaultConnectionSize = 4
3535

36-
private const val defaultBufferSize = 1024L * 512L
36+
private const val defaultBufferSize = 1024L * 256L
3737

3838
const val minConnectionSize = 1
3939
const val maxConnectionSize = 8
4040
const val minBufferSize = 1024
41-
const val maxBufferSize = defaultBufferSize
41+
const val maxBufferSize = 1024L * 512L
4242
fun init(context: Context) {
4343
ioExecutor.execute {
4444
val sp = context.getSharedPreferences(SP_FILE_NAME, Context.MODE_PRIVATE)

app/src/main/java/com/tans/tfiletransporter/core/BindLife.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package com.tans.tfiletransporter.core
22

3-
import io.reactivex.Completable
4-
import io.reactivex.Maybe
5-
import io.reactivex.Observable
6-
import io.reactivex.Single
7-
import io.reactivex.disposables.CompositeDisposable
3+
import io.reactivex.rxjava3.core.Completable
4+
import io.reactivex.rxjava3.core.Maybe
5+
import io.reactivex.rxjava3.core.Observable
6+
import io.reactivex.rxjava3.core.Single
7+
import io.reactivex.rxjava3.disposables.CompositeDisposable
8+
89

910
interface BindLife {
1011
val lifeCompositeDisposable: CompositeDisposable
1112

12-
fun <T> Observable<T>.bindLife() {
13+
fun <T : Any> Observable<T>.bindLife() {
1314
lifeCompositeDisposable.add(this.subscribe({
1415
// Log.d([email protected], "Next: ${it.toString()}")
1516
}, {
@@ -27,15 +28,15 @@ interface BindLife {
2728
}))
2829
}
2930

30-
fun <T> Single<T>.bindLife() {
31+
fun <T : Any> Single<T>.bindLife() {
3132
lifeCompositeDisposable.add(this.subscribe({
3233
// Log.d([email protected], it.toString())
3334
}, {
3435
// Log.d([email protected], it.toString())
3536
}))
3637
}
3738

38-
fun <T> Maybe<T>.bindLife() {
39+
fun <T : Any> Maybe<T>.bindLife() {
3940
lifeCompositeDisposable.add(this.subscribe ({
4041
// Log.d([email protected],"Success: $it")
4142
}, {
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11

22
package com.tans.tfiletransporter.core
33

4-
import io.reactivex.Completable
5-
import io.reactivex.Observable
6-
import io.reactivex.Single
7-
import io.reactivex.subjects.BehaviorSubject
8-
import io.reactivex.subjects.Subject
4+
import io.reactivex.rxjava3.core.Completable
5+
import io.reactivex.rxjava3.core.Observable
6+
import io.reactivex.rxjava3.core.Single
7+
import io.reactivex.rxjava3.subjects.BehaviorSubject
8+
import io.reactivex.rxjava3.subjects.Subject
99
import kotlinx.coroutines.CoroutineScope
1010
import kotlinx.coroutines.Dispatchers
11-
import kotlinx.coroutines.rx2.rxSingle
11+
import kotlinx.coroutines.rx3.rxSingle
1212
import kotlinx.coroutines.withContext
1313

14-
interface Stateable<State> {
14+
interface Stateable<State : Any> {
1515

1616
val stateStore: Subject<State>
1717

1818
fun bindState(): Observable<State> = stateStore
1919

2020
fun updateState(newState: (State) -> State): Single<State> = stateStore.firstOrError()
2121
.map(newState)
22-
.doOnSuccess { state: State -> if (state != null) stateStore.onNext(state) }
22+
.doOnSuccess { state: State -> stateStore.onNext(state) }
2323

2424
fun updateStateCompletable(newState: (State) -> State): Completable = updateState(newState).ignoreElement()
2525

26-
fun <T> CoroutineScope.render(mapper: ((State) -> T), handler: suspend (T) -> Unit): Completable = bindState()
26+
fun <T : Any> CoroutineScope.render(mapper: ((State) -> T), handler: suspend (T) -> Unit): Completable = bindState()
2727
.map(mapper)
2828
.distinctUntilChanged()
2929
.switchMapSingle { t ->
@@ -39,6 +39,6 @@ interface Stateable<State> {
3939
.ignoreElements()
4040
}
4141

42-
fun <State> Stateable(defaultState: State) = object : Stateable<State> {
42+
fun <State : Any> Stateable(defaultState: State) = object : Stateable<State> {
4343
override val stateStore: Subject<State> = BehaviorSubject.createDefault(defaultState).toSerialized()
4444
}

app/src/main/java/com/tans/tfiletransporter/logs/AndroidLog.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,6 @@ import android.util.Log
44
import com.tans.tfiletransporter.ILog
55

66
object AndroidLog : ILog {
7-
private const val TAG = "tFileTransfer"
8-
9-
fun d(msg: String) {
10-
d(TAG, msg)
11-
}
12-
13-
fun e(msg: String, throwable: Throwable?) {
14-
e(TAG, msg, throwable)
15-
}
167

178
override fun d(tag: String, msg: String) {
189
Log.d(tag, msg)

app/src/main/java/com/tans/tfiletransporter/ui/activity/BaseActivity.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,24 @@ import androidx.lifecycle.ViewModel
1111
import androidx.lifecycle.ViewModelProvider
1212
import com.tans.tfiletransporter.core.BindLife
1313
import com.tans.tfiletransporter.core.Stateable
14-
import io.reactivex.subjects.Subject
14+
import io.reactivex.rxjava3.subjects.Subject
1515
import kotlinx.coroutines.CoroutineScope
1616
import kotlinx.coroutines.Dispatchers
17-
import kotlinx.coroutines.MainScope
1817
import kotlinx.coroutines.cancel
1918
import org.kodein.di.*
20-
import org.kodein.di.android.di
2119
import org.kodein.di.android.retainedSubDI
2220
import kotlin.coroutines.CoroutineContext
21+
import org.kodein.di.DI
22+
import org.kodein.di.DIAware
23+
import org.kodein.di.android.di
2324

24-
abstract class BaseActivity<Binding : ViewDataBinding, State>(
25+
abstract class BaseActivity<Binding : ViewDataBinding, State : Any>(
2526
@LayoutRes
2627
layoutId: Int,
2728
val defaultState: State
2829
) : AppCompatActivity(), CoroutineScope, Stateable<State>, BindLife by BindLife(), DIAware {
2930

30-
class ActivityViewModel<State>(defaultState: State) : ViewModel(),
31+
class ActivityViewModel<State : Any>(defaultState: State) : ViewModel(),
3132
BindLife by BindLife(),
3233
CoroutineScope by CoroutineScope(Dispatchers.Main),
3334
Stateable<State> by Stateable(defaultState) {

app/src/main/java/com/tans/tfiletransporter/ui/activity/BaseCustomDialog.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import androidx.annotation.LayoutRes
1010
import androidx.appcompat.app.AppCompatDialog
1111
import androidx.databinding.DataBindingUtil
1212
import androidx.databinding.ViewDataBinding
13-
import com.jakewharton.rxbinding3.view.clicks
13+
import com.jakewharton.rxbinding4.view.clicks
1414
import com.tans.tfiletransporter.R
1515
import com.tans.tfiletransporter.core.BindLife
1616
import com.tans.tfiletransporter.core.Stateable
@@ -22,7 +22,7 @@ import org.kodein.di.DI
2222
import org.kodein.di.DIAware
2323
import org.kodein.di.android.closestDI
2424

25-
abstract class BaseCustomDialog<Binding: ViewDataBinding, State>(context: Context, @LayoutRes val layoutId: Int, defaultState: State, private val clearBackground: Boolean = false, private val outSizeCancelable: Boolean = true)
25+
abstract class BaseCustomDialog<Binding: ViewDataBinding, State : Any>(context: Context, @LayoutRes val layoutId: Int, defaultState: State, private val clearBackground: Boolean = false, private val outSizeCancelable: Boolean = true)
2626
: AppCompatDialog(context), BindLife by BindLife(), DIAware, CoroutineScope by CoroutineScope(Dispatchers.Main), Stateable<State> by Stateable(defaultState) {
2727

2828
override val di: DI by closestDI()

app/src/main/java/com/tans/tfiletransporter/ui/activity/BaseFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import org.kodein.di.DIAware
1818
import org.kodein.di.android.subDI
1919
import org.kodein.di.android.x.di
2020

21-
abstract class BaseFragment<Binding: ViewDataBinding, State>(
21+
abstract class BaseFragment<Binding: ViewDataBinding, State : Any>(
2222
@LayoutRes
2323
val layoutId: Int,
2424
default: State

0 commit comments

Comments
 (0)