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