Эх сурвалжийг харах

Added common view with toast and snackbar extensions

Vadik Sirekanyan 7 жил өмнө
parent
commit
4ba56a6039

+ 7 - 0
app/src/main/java/com/sirekanyan/knigopis/common/android/toast/CommonView.kt

@@ -0,0 +1,7 @@
+package com.sirekanyan.knigopis.common.android.toast
+
+import android.view.View
+
+interface CommonView {
+    val containerView: View
+}

+ 16 - 0
app/src/main/java/com/sirekanyan/knigopis/common/extensions/CommonView.kt

@@ -0,0 +1,16 @@
+package com.sirekanyan.knigopis.common.extensions
+
+import android.support.design.widget.Snackbar
+import com.sirekanyan.knigopis.common.android.toast.CommonView
+
+fun CommonView.toast(messageId: Int, vararg args: Any) {
+    containerView.context.showToast(messageId, *args)
+}
+
+fun CommonView.toast(messageId: Int) {
+    containerView.context.showToast(messageId)
+}
+
+fun CommonView.snackbar(messageId: Int) {
+    Snackbar.make(containerView, messageId, Snackbar.LENGTH_LONG).show()
+}

+ 2 - 2
app/src/main/java/com/sirekanyan/knigopis/common/extensions/Context.kt

@@ -25,11 +25,11 @@ fun Context.startActivityOrNull(intent: Intent): Unit? =
         startActivity(intent)
     }
 
-fun Context.toast(@StringRes messageId: Int, vararg args: Any) {
+fun Context.showToast(@StringRes messageId: Int, vararg args: Any) {
     Toast.makeText(this, getString(messageId, *args), Toast.LENGTH_SHORT).show()
 }
 
-fun Context.toast(@StringRes messageId: Int) {
+fun Context.showToast(@StringRes messageId: Int) {
     Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show()
 }
 

+ 0 - 6
app/src/main/java/com/sirekanyan/knigopis/common/extensions/View.kt

@@ -1,8 +1,6 @@
 package com.sirekanyan.knigopis.common.extensions
 
 import android.support.annotation.DimenRes
-import android.support.annotation.StringRes
-import android.support.design.widget.Snackbar
 import android.support.v4.view.ViewCompat
 import android.support.v4.view.animation.FastOutLinearInInterpolator
 import android.support.v4.view.animation.LinearOutSlowInInterpolator
@@ -36,10 +34,6 @@ fun View.hide() {
         .withEndAction { visibility = View.GONE }
 }
 
-fun View.snackbar(@StringRes messageId: Int) {
-    Snackbar.make(this, messageId, Snackbar.LENGTH_LONG).show()
-}
-
 fun View.setElevationRes(@DimenRes elevation: Int) {
     ViewCompat.setElevation(this, resources.getDimensionPixelSize(elevation).toFloat())
 }

+ 2 - 2
app/src/main/java/com/sirekanyan/knigopis/common/functions/ErrorHandler.kt

@@ -6,7 +6,7 @@ import android.widget.TextView
 import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.common.extensions.isVisible
 import com.sirekanyan.knigopis.common.extensions.show
-import com.sirekanyan.knigopis.common.extensions.toast
+import com.sirekanyan.knigopis.common.extensions.showToast
 import retrofit2.HttpException
 
 fun handleError(
@@ -16,7 +16,7 @@ fun handleError(
     adapter: RecyclerView.Adapter<*>
 ) {
     if (emptyPlaceholder.isVisible || adapter.itemCount > 0) {
-        emptyPlaceholder.context.toast(throwable.messageRes)
+        emptyPlaceholder.context.showToast(throwable.messageRes)
     } else {
         errorPlaceholder.setText(throwable.messageRes)
         errorPlaceholder.show()

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/feature/MainActivity.kt

@@ -143,7 +143,7 @@ class MainActivity : BaseActivity(),
     }
 
     override fun openWebPage(uri: Uri) {
-        startActivityOrNull(Intent(ACTION_VIEW, uri)) ?: toast(R.string.users_info_no_browser)
+        startActivityOrNull(Intent(ACTION_VIEW, uri)) ?: showToast(R.string.users_info_no_browser)
     }
 
     override fun reopenScreen() {

+ 2 - 1
app/src/main/java/com/sirekanyan/knigopis/feature/book/BookPresenter.kt

@@ -5,6 +5,7 @@ import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.common.BasePresenter
 import com.sirekanyan.knigopis.common.Presenter
 import com.sirekanyan.knigopis.common.extensions.io2main
+import com.sirekanyan.knigopis.common.extensions.toast
 import com.sirekanyan.knigopis.common.functions.createBookImageUrl
 import com.sirekanyan.knigopis.common.functions.logError
 import com.sirekanyan.knigopis.model.BookAction
@@ -66,7 +67,7 @@ class BookPresenterImpl(
             .bind({
                 router.exit(ok = true)
             }, {
-                view.showSaveError()
+                view.toast(R.string.book_error_save)
                 logError("cannot post planned book", it)
             })
     }

+ 2 - 6
app/src/main/java/com/sirekanyan/knigopis/feature/book/BookView.kt

@@ -5,6 +5,7 @@ import android.view.MenuItem
 import android.view.View
 import android.widget.SeekBar
 import com.sirekanyan.knigopis.R
+import com.sirekanyan.knigopis.common.android.toast.CommonView
 import com.sirekanyan.knigopis.common.extensions.*
 import com.sirekanyan.knigopis.common.functions.createBookImageUrl
 import com.sirekanyan.knigopis.model.DateModel
@@ -12,7 +13,7 @@ import com.sirekanyan.knigopis.model.EditBookModel
 import kotlinx.android.extensions.LayoutContainer
 import kotlinx.android.synthetic.main.book_edit.*
 
-interface BookView {
+interface BookView : CommonView {
 
     fun setTitle(@StringRes title: Int)
     fun setBook(book: EditBookModel)
@@ -22,7 +23,6 @@ interface BookView {
     fun showBookDate(isVisible: Boolean)
     fun showSaveOption(isVisible: Boolean)
     fun showSaveProgress(isVisible: Boolean)
-    fun showSaveError()
     fun showKeyboard()
 
     interface Callbacks {
@@ -133,10 +133,6 @@ class BookViewImpl(
         progressMenuItem.actionView.show(isVisible)
     }
 
-    override fun showSaveError() {
-        context.toast(R.string.book_error_save)
-    }
-
     override fun showKeyboard() {
         titleEditText.requestFocus()
     }

+ 3 - 1
app/src/main/java/com/sirekanyan/knigopis/feature/books/BooksPresenter.kt

@@ -1,8 +1,10 @@
 package com.sirekanyan.knigopis.feature.books
 
+import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.common.BasePresenter
 import com.sirekanyan.knigopis.common.extensions.io2main
 import com.sirekanyan.knigopis.common.extensions.showProgressBar
+import com.sirekanyan.knigopis.common.extensions.toast
 import com.sirekanyan.knigopis.common.functions.logError
 import com.sirekanyan.knigopis.feature.PagePresenter
 import com.sirekanyan.knigopis.feature.PagesPresenter
@@ -66,7 +68,7 @@ class BooksPresenterImpl(
             .bind({
                 refresh()
             }, {
-                view.showBookDeleteError()
+                view.toast(R.string.books_error_delete)
                 logError("cannot delete finished book", it)
             })
     }

+ 2 - 7
app/src/main/java/com/sirekanyan/knigopis/feature/books/BooksView.kt

@@ -7,10 +7,10 @@ import com.sirekanyan.knigopis.common.android.dialog.DialogFactory
 import com.sirekanyan.knigopis.common.android.dialog.createDialogItem
 import com.sirekanyan.knigopis.common.android.header.HeaderItemDecoration
 import com.sirekanyan.knigopis.common.android.header.StickyHeaderImpl
+import com.sirekanyan.knigopis.common.android.toast.CommonView
 import com.sirekanyan.knigopis.common.extensions.getFullTitleString
 import com.sirekanyan.knigopis.common.extensions.hide
 import com.sirekanyan.knigopis.common.extensions.show
-import com.sirekanyan.knigopis.common.extensions.toast
 import com.sirekanyan.knigopis.common.functions.handleError
 import com.sirekanyan.knigopis.feature.ProgressView
 import com.sirekanyan.knigopis.model.BookDataModel
@@ -18,13 +18,12 @@ import com.sirekanyan.knigopis.model.BookModel
 import kotlinx.android.extensions.LayoutContainer
 import kotlinx.android.synthetic.main.books_page.*
 
-interface BooksView : ProgressView {
+interface BooksView : CommonView, ProgressView {
 
     fun updateBooks(books: List<BookModel>)
     fun showBooksError(throwable: Throwable)
     fun showBookActions(book: BookDataModel)
     fun showBookDeleteDialog(book: BookDataModel)
-    fun showBookDeleteError()
 
     interface Callbacks {
         fun onAddBookClicked()
@@ -93,8 +92,4 @@ class BooksViewImpl(
             .show()
     }
 
-    override fun showBookDeleteError() {
-        context.toast(R.string.books_error_delete)
-    }
-
 }

+ 3 - 1
app/src/main/java/com/sirekanyan/knigopis/feature/profile/ProfilePresenter.kt

@@ -1,8 +1,10 @@
 package com.sirekanyan.knigopis.feature.profile
 
+import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.common.BasePresenter
 import com.sirekanyan.knigopis.common.Presenter
 import com.sirekanyan.knigopis.common.extensions.io2main
+import com.sirekanyan.knigopis.common.extensions.toast
 import com.sirekanyan.knigopis.common.functions.logError
 import com.sirekanyan.knigopis.model.BookDataModel
 import com.sirekanyan.knigopis.model.dto.Profile
@@ -155,7 +157,7 @@ class ProfilePresenterImpl(
                 view.quitEditMode()
                 refreshProfile()
             }, {
-                view.showSaveError()
+                view.toast(R.string.profile_error_save)
                 logError("cannot update profile", it)
             })
     }

+ 2 - 6
app/src/main/java/com/sirekanyan/knigopis/feature/profile/ProfileView.kt

@@ -6,13 +6,14 @@ import android.view.View
 import android.view.animation.AccelerateInterpolator
 import android.view.inputmethod.EditorInfo
 import com.sirekanyan.knigopis.R
+import com.sirekanyan.knigopis.common.android.toast.CommonView
 import com.sirekanyan.knigopis.common.extensions.*
 import com.sirekanyan.knigopis.model.BookDataModel
 import kotlinx.android.extensions.LayoutContainer
 import kotlinx.android.synthetic.main.profile_activity.*
 import java.util.*
 
-interface ProfileView {
+interface ProfileView : CommonView {
 
     val isEditMode: Boolean
     val isNicknameChanged: Boolean
@@ -24,7 +25,6 @@ interface ProfileView {
     fun setDoneCount(count: Int)
     fun enterEditMode()
     fun quitEditMode()
-    fun showSaveError()
     fun setBooks(
         todo: Stack<BookDataModel>,
         doing: Stack<BookDataModel>,
@@ -111,10 +111,6 @@ class ProfileViewImpl(
         profileNicknameSwitcher.displayedChild = 0
     }
 
-    override fun showSaveError() {
-        context.toast(R.string.profile_error_save)
-    }
-
     override fun setBooks(
         todo: Stack<BookDataModel>,
         doing: Stack<BookDataModel>,