From 45f77c42d8f6a6d7e9000f3374c85db2bea431f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petrus=20Nguy=E1=BB=85n=20Th=C3=A1i=20H=E1=BB=8Dc?= Date: Tue, 16 Jun 2020 01:01:44 +0700 Subject: [PATCH] update --- .idea/codeStyles/Project.xml | 5 ----- app/build.gradle | 14 +++++++------- app/src/main/AndroidManifest.xml | 4 +++- .../hoc/flowmvi/data/UserRepositoryImpl.kt | 2 ++ .../com/hoc/flowmvi/ui/add/AddActivity.kt | 19 +++++++++++++------ .../com/hoc/flowmvi/ui/main/MainActivity.kt | 9 +++++---- .../java/com/hoc/flowmvi/ui/main/MainVM.kt | 2 +- app/src/main/res/layout/activity_add.xml | 19 +++++++++---------- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 10 files changed, 43 insertions(+), 37 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 1b4a611a..88ea3aa1 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -117,11 +117,6 @@ \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4d62f1ed..730f4f22 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,8 +31,8 @@ android { jvmTarget = "1.8" } - viewBinding { - enabled = true + buildFeatures { + viewBinding = true } } @@ -40,18 +40,18 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.2.0-beta01' - implementation 'androidx.core:core-ktx:1.3.0-rc01' + implementation 'androidx.appcompat:appcompat:1.3.0-alpha01' + implementation 'androidx.core:core-ktx:1.4.0-alpha01' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha03' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-rc01' - implementation 'com.google.android.material:material:1.2.0-alpha06' + implementation 'com.google.android.material:material:1.3.0-alpha01' // viewModelScope - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0-alpha02' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0-alpha03' // lifecycleScope - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0-alpha02' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.0-alpha03' // retrofit2 implementation 'com.squareup.retrofit2:retrofit:2.8.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 91f2f3ff..c1691e43 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,9 @@ - + { return merge( diff --git a/app/src/main/java/com/hoc/flowmvi/ui/main/MainActivity.kt b/app/src/main/java/com/hoc/flowmvi/ui/main/MainActivity.kt index 29df82e3..3cae19dd 100644 --- a/app/src/main/java/com/hoc/flowmvi/ui/main/MainActivity.kt +++ b/app/src/main/java/com/hoc/flowmvi/ui/main/MainActivity.kt @@ -18,6 +18,7 @@ import com.hoc.flowmvi.ui.add.AddActivity import com.hoc.flowmvi.ui.main.MainContract.* import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.channels.BroadcastChannel import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.* import org.koin.androidx.viewmodel.ext.android.viewModel @@ -31,14 +32,14 @@ class MainActivity : AppCompatActivity(), View { private val userAdapter = UserAdapter() private val mainBinding by lazy(NONE) { ActivityMainBinding.inflate(layoutInflater) } - private val removeChannel = Channel(Channel.UNLIMITED) + private val removeChannel = BroadcastChannel(Channel.BUFFERED) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(mainBinding.root) setupViews() - bindVM() + bindVM(mainVM) } override fun onOptionsItemSelected(item: MenuItem): Boolean { @@ -72,7 +73,7 @@ class MainActivity : AppCompatActivity(), View { } } - private fun bindVM() { + private fun bindVM(mainVM: MainVM) { // observe view model lifecycleScope.launchWhenStarted { mainVM.viewState @@ -97,7 +98,7 @@ class MainActivity : AppCompatActivity(), View { flowOf(ViewIntent.Initial), mainBinding.swipeRefreshLayout.refreshes().map { ViewIntent.Refresh }, mainBinding.retryButton.clicks().map { ViewIntent.Retry }, - removeChannel.consumeAsFlow().map { ViewIntent.RemoveUser(it) } + removeChannel.asFlow().map { ViewIntent.RemoveUser(it) } ) private fun handleSingleEvent(event: SingleEvent) { diff --git a/app/src/main/java/com/hoc/flowmvi/ui/main/MainVM.kt b/app/src/main/java/com/hoc/flowmvi/ui/main/MainVM.kt index 972fbda9..25f97a0d 100644 --- a/app/src/main/java/com/hoc/flowmvi/ui/main/MainVM.kt +++ b/app/src/main/java/com/hoc/flowmvi/ui/main/MainVM.kt @@ -23,7 +23,7 @@ class MainVM( private val removeUser: RemoveUserUseCase, ) : ViewModel() { private val _eventChannel = BroadcastChannel(capacity = Channel.BUFFERED) - private val _intentChannel = BroadcastChannel(capacity = Channel.CONFLATED) + private val _intentChannel = BroadcastChannel(capacity = Channel.BUFFERED) val viewState: StateFlow diff --git a/app/src/main/res/layout/activity_add.xml b/app/src/main/res/layout/activity_add.xml index 8b490a41..ab213994 100644 --- a/app/src/main/res/layout/activity_add.xml +++ b/app/src/main/res/layout/activity_add.xml @@ -40,7 +40,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="8dp" + android:layout_marginTop="4dp" android:layout_marginEnd="16dp" android:hint="First name" app:errorEnabled="true" @@ -70,13 +70,13 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" - android:layout_marginTop="8dp" + android:layout_marginTop="4dp" android:layout_marginEnd="16dp" android:hint="Last name" app:errorEnabled="true" app:hintAnimationEnabled="true" app:hintEnabled="true" - app:layout_constraintBottom_toTopOf="@+id/progressBar" + app:layout_constraintBottom_toTopOf="@+id/addButton" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" @@ -90,6 +90,7 @@ android:layout_marginTop="8dp" android:layout_marginEnd="16dp" android:fontFamily="@font/noto_sans" + android:imeOptions="actionDone" android:inputType="textPersonName" android:singleLine="true" android:textSize="16sp" /> @@ -104,9 +105,9 @@ android:elevation="12dp" android:fontFamily="@font/noto_sans" android:paddingStart="32dp" - android:paddingTop="16dp" + android:paddingTop="12dp" android:paddingEnd="32dp" - android:paddingBottom="16dp" + android:paddingBottom="12dp" android:text="Add" android:textColor="@android:color/white" android:textSize="16sp" @@ -115,17 +116,15 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/progressBar" /> + app:layout_constraintTop_toBottomOf="@+id/lastNameEditText" /> + app:layout_constraintTop_toTopOf="@id/addButton" /> \ No newline at end of file diff --git a/build.gradle b/build.gradle index 1c7e5dea..105b55c4 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } } dependencies { - classpath 'com.android.tools.build:gradle:3.6.3' + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 477f6ad3..339e6353 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Feb 08 09:17:34 ICT 2020 +#Sat Jun 13 00:43:17 ICT 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-milestone-2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip