Kaynağa Gözat

Fixed user fab button ui

Vadik Sirekanyan 7 yıl önce
ebeveyn
işleme
c5e6f86eff

+ 4 - 6
app/src/main/java/com/sirekanyan/knigopis/common/utils.kt

@@ -59,21 +59,19 @@ fun View.hide() {
         .withEndAction { visibility = View.GONE }
 }
 
-fun View.showScale() {
+fun View.startExpandAnimation() {
     alpha = 0f
     scaleX = 0f
     scaleY = 0f
     animate().alpha(1f).setDuration(200)
-        .scaleX(1f).scaleY(1f)
         .setInterpolator(LinearOutSlowInInterpolator())
-        .withStartAction { visibility = View.VISIBLE }
+        .scaleX(1f).scaleY(1f)
 }
 
-fun View.hideScale() {
+fun View.startCollapseAnimation() {
     animate().alpha(0f).setDuration(200)
-        .scaleX(0f).scaleY(0f)
         .setInterpolator(FastOutLinearInInterpolator())
-        .withEndAction { visibility = View.GONE }
+        .scaleX(0f).scaleY(0f)
 }
 
 val View.isVisible get() = visibility == View.VISIBLE

+ 23 - 15
app/src/main/java/com/sirekanyan/knigopis/feature/user/UserActivity.kt

@@ -55,15 +55,18 @@ class UserActivity : AppCompatActivity() {
         toolbarImage.setElevationRes(R.dimen.image_view_elevation)
         setSupportActionBar(toolbar)
         fab.setOnClickListener { view ->
-            fab.isSelected = true
-            fab.setImageResource(R.drawable.ic_done)
-            fab.setOnClickListener(null)
             interactor.subscribe(userId)
+                .doOnSubscribe { fab.startCollapseAnimation() }
+                .doFinally { fab.startExpandAnimation() }
                 .subscribe({
-                    view.snackbar(R.string.users_info_subscribed)
+                    fab.setOnClickListener(null)
+                    fab.isSelected = true
+                    fab.setImageResource(R.drawable.ic_done)
                 }, {
-                    fab.showScale()
                     logError("Cannot update subscription", it)
+                    view.snackbar(R.string.common_error_network)
+                    fab.isSelected = false
+                    fab.setImageResource(R.drawable.ic_person_add)
                 })
         }
         supportActionBar?.setDisplayHomeAsUpEnabled(true)
@@ -124,19 +127,10 @@ class UserActivity : AppCompatActivity() {
                 books.clear()
                 books.addAll(it)
                 booksAdapter.submitList(it)
+                onBooksLoaded()
             }, {
                 logError("Cannot load user books", it)
             })
-        interactor.isSubscribed(userId)
-            .subscribe({ isSubscribed ->
-                if (isSubscribed) {
-                    unsubscribeOption.isVisible = true
-                } else {
-                    fab.showScale()
-                }
-            }, {
-                logError("Cannot update subscription", it)
-            })
     }
 
     override fun onCreateOptionsMenu(menu: Menu): Boolean {
@@ -169,6 +163,20 @@ class UserActivity : AppCompatActivity() {
         }
     }
 
+    private fun onBooksLoaded() {
+        interactor.isSubscribed(userId)
+            .subscribe({ isSubscribed ->
+                if (isSubscribed) {
+                    unsubscribeOption.isVisible = true
+                } else {
+                    fab.showNow()
+                    fab.startExpandAnimation()
+                }
+            }, {
+                logError("Cannot check subscription", it)
+            })
+    }
+
     private fun onBookLongClicked(book: BookDataModel) {
         dialogs.showDialog(
             resources.getFullTitleString(book.title, book.author),

+ 0 - 1
app/src/main/res/values-ru/strings.xml

@@ -78,7 +78,6 @@
 
     <!-- 👨 users tab -->
     <string name="users.error.empty">Вы ещё ни на кого не подписаны</string>
-    <string name="users.info.subscribed">Пользователь добавлен в избранное</string>
     <string name="users.info.no_browser">Не найдено приложение для просмотра страницы</string>
 
     <!-- user screen -->

+ 0 - 1
app/src/main/res/values/strings.xml

@@ -77,7 +77,6 @@
 
     <!-- 👨 users tab -->
     <string name="users.error.empty">You don\'t have any subscriptions yet</string>
-    <string name="users.info.subscribed">Successfully subscribed</string>
     <string name="users.info.no_browser">No browser app found</string>
 
     <!-- user screen -->