瀏覽代碼

Added unsubscribe functionality

Vadik Sirekanyan 7 年之前
父節點
當前提交
ea87b9bcfb

+ 13 - 10
app/src/main/java/me/vadik/knigopis/MainActivity.kt

@@ -52,17 +52,10 @@ class MainActivity : AppCompatActivity(), Router {
     private val allBooks = mutableListOf<Book>()
     private val allUsers = mutableListOf<Subscription>()
     private val allNotes = mutableListOf<Note>()
-    private val booksAdapter by lazy {
-        BooksAdapter(
-            bookCoverSearch,
-            api,
-            auth,
-            this,
-            BottomSheetDialogFactory(this)
-        )
-    }
+    private val dialogs by lazy { BottomSheetDialogFactory(this) }
+    private val booksAdapter by lazy { BooksAdapter(bookCoverSearch, api, auth, this, dialogs) }
     private val allBooksAdapter by lazy { booksAdapter.build(allBooks) }
-    private val usersAdapter by lazy { UsersAdapter(allUsers, this) }
+    private val usersAdapter by lazy { UsersAdapter(allUsers, this, dialogs) }
     private val notesAdapter by lazy { NotesAdapter(allNotes, this) }
     private var userLoggedIn = false
     private var booksChanged = false
@@ -180,6 +173,16 @@ class MainActivity : AppCompatActivity(), Router {
         )
     }
 
+    override fun unsubscribe(userId: String) {
+        api.deleteSubscription(userId, auth.getAccessToken())
+            .io2main()
+            .subscribe({
+                refresh(isForce = true)
+            }, {
+                handleNetworkError("Cannot unsubscribe", it)
+            })
+    }
+
     private fun initNavigationView(currentTab: CurrentTab?) {
         val defaultTab = if (auth.isAuthorized()) HOME_TAB else NOTES_TAB
         refresh(currentTab ?: defaultTab)

+ 1 - 0
app/src/main/java/me/vadik/knigopis/Router.kt

@@ -11,4 +11,5 @@ interface Router {
     fun openUserScreen(user: Identity)
     fun openBrowser(uri: Uri)
     fun shareProfile(url: String)
+    fun unsubscribe(userId: String)
 }

+ 13 - 1
app/src/main/java/me/vadik/knigopis/adapters/users/UsersAdapter.kt

@@ -4,12 +4,15 @@ import android.support.v7.widget.RecyclerView
 import android.view.ViewGroup
 import me.vadik.knigopis.R
 import me.vadik.knigopis.Router
+import me.vadik.knigopis.dialog.DialogFactory
+import me.vadik.knigopis.dialog.DialogItem
 import me.vadik.knigopis.inflate
 import me.vadik.knigopis.model.subscription.Subscription
 
 class UsersAdapter(
     private val users: List<Subscription>,
-    private val router: Router
+    private val router: Router,
+    private val dialogs: DialogFactory
 ) : RecyclerView.Adapter<UserViewHolder>() {
 
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
@@ -30,6 +33,15 @@ class UsersAdapter(
         holder.view.setOnClickListener {
             router.openUserScreen(user)
         }
+        holder.view.setOnLongClickListener {
+            dialogs.showDialog(
+                user.subUser.name,
+                DialogItem(R.string.user_option_delete, R.drawable.ic_delete) {
+                    router.unsubscribe(user.subUser.id)
+                }
+            )
+            true
+        }
     }
 
 }

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

@@ -44,6 +44,9 @@
     <!-- following -->
     <string name="user_new_books_count" translatable="false"><![CDATA[<sup><small>+%d</small><sup>]]></string>
 
+    <!-- following menu -->
+    <string name="user_option_delete">Unsubscribe</string>
+
     <!-- notes -->
     <string name="note_date_delimiter" translatable="false">/</string>