Advertisement
andyshon

QuickViewDialog

Nov 5th, 2018
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 8.84 KB | None | 0 0
  1. package net.done_it.uniscope.ui.channel.quickchannel
  2.  
  3.  
  4. import android.app.AlertDialog
  5. import android.app.FragmentManager
  6. import android.os.Bundle
  7. import android.support.constraint.ConstraintLayout
  8. import android.support.constraint.ConstraintSet
  9. import android.support.transition.Fade
  10. import android.support.transition.TransitionManager
  11. import android.support.v7.widget.LinearLayoutManager
  12. import android.support.v7.widget.RecyclerView
  13. import android.text.TextUtils
  14. import android.view.LayoutInflater
  15. import android.view.View
  16. import android.view.ViewGroup
  17. import android.widget.Toast
  18. import com.f2prateek.rx.preferences2.RxSharedPreferences
  19. import com.google.gson.Gson
  20. import com.jakewharton.rxbinding2.view.RxView
  21. import com.jakewharton.rxbinding2.widget.RxCompoundButton
  22. import eightbitlab.com.blurview.RenderScriptBlur
  23. import kotlinx.android.synthetic.main.fragment_channel.*
  24. import kotlinx.android.synthetic.main.fragment_quick_view_dialog.*
  25. import net.done_it.uniscope.Preferences
  26. import net.done_it.uniscope.R
  27. import net.done_it.uniscope.base.BaseInjectFragment
  28. import net.done_it.uniscope.entity.User
  29. import net.done_it.uniscope.entity.convertor.UserConverter
  30. import net.done_it.uniscope.model.MenuItem
  31. import net.done_it.uniscope.model.network.QuickChannelResponse
  32. import net.done_it.uniscope.ui.channel.*
  33. import net.done_it.uniscope.ui.channel.channelitem.*
  34. import net.done_it.uniscope.ui.channel.common.FadeInUpAnimator
  35. import net.done_it.uniscope.ui.conversation.ConversationActivity
  36. import net.done_it.uniscope.ui.dialog.BaseMenuFragment
  37. import net.done_it.uniscope.ui.send_to.SendToActivity
  38. import net.done_it.uniscope.utils.CountryUtils
  39. import net.done_it.uniscope.utils.OnSwipeTouchListener
  40. import net.doneit.baseproject.extension.hide
  41. import net.doneit.baseproject.extension.show
  42. import net.doneit.baseproject.mvp.Presenter
  43. import net.doneit.baseproject.utils.navigation.Router
  44. import javax.inject.Inject
  45.  
  46. private const val ID = "ID"
  47.  
  48. class QuickViewDialog : BaseInjectFragment(), QuickView {
  49.  
  50.  
  51.     @Inject
  52.     lateinit var presenter: QuickViewPresenter
  53.     private lateinit var id: String
  54.     private var isBlocked: Boolean = false
  55.  
  56.     @Inject
  57.     lateinit var pref: RxSharedPreferences
  58.     @Inject
  59.     lateinit var gson: Gson
  60.  
  61.  
  62.     companion object {
  63.         fun newInstance(name: String): Router.FragmentTransactionBuilder? {
  64.             val fragment = QuickViewDialog()
  65.             return Router.FragmentTransactionBuilder(fragment)
  66.                     .putParam(ID, name)
  67.                     .setAnimation(Router.ANIM_ALPHA)
  68.                     .addToBackStack(true)
  69.         }
  70.     }
  71.  
  72.     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
  73.                               savedInstanceState: Bundle?): View? {
  74.         // Inflate the layout for this fragment
  75.         return inflater.inflate(R.layout.fragment_quick_view_dialog, container, false)
  76.     }
  77.  
  78.     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
  79.         super.onViewCreated(view, savedInstanceState)
  80.         injectAsync({ it.inject(this) }, {
  81.             presenter.attachToView(this)
  82.             id = arguments!!.getString(ID)
  83.             presenter.getChannel(id)
  84.         })
  85.  
  86.     }
  87.  
  88.     override fun chatCreated(id: String) {
  89.         ConversationActivity.route(id).startFrom(this)
  90.     }
  91.  
  92.     override fun openPost(id: String) {
  93.         ChannelsActivity.route(id).startFrom(this)
  94.     }
  95.  
  96.     override fun getPresenter(): Presenter<*>? {
  97.         return presenter
  98.     }
  99.  
  100.     override fun setupChannel(response: QuickChannelResponse) {
  101.  
  102.         val user = pref.getObject(Preferences.KEY_USER, User(), UserConverter(gson))
  103.         if (user.get().id.equals(response.user_id)) {
  104.             itemPostToSubscribe.visibility = View.GONE
  105.         } else {
  106.             itemPostToSubscribe.visibility = View.VISIBLE
  107.         }
  108.         itemPostToConversation.visibility = View.VISIBLE
  109.  
  110.         TransitionManager.beginDelayedTransition(view as ViewGroup, Fade())
  111.         quickContainer.apply {
  112.             val manager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
  113.             layoutManager = manager
  114.             response.channel = response.channel.sortedByDescending { channel -> channel.timestamp }
  115.             adapter = QuickViewAdapter(response.channel, presenter)
  116.             itemAnimator = FadeInUpAnimator()
  117.         }
  118.         isBlocked = response.channel.first().is_blocked
  119.         val nameSb = StringBuilder()
  120.         nameSb.append(response.name)
  121.         if ((response.followers == "0").not()) {
  122.             nameSb.append(" • ${response.followers}")
  123.         }
  124.         itemQuickAuthor.text = nameSb
  125.         val locationSb = StringBuilder()
  126.         locationSb.append(response.user_name)
  127.         if (TextUtils.isEmpty(response.location).not()) {
  128.             locationSb.append(" • ${response.location}")
  129.         }
  130.         itemQuickDate.text = locationSb
  131.         itemPostDesctiption.text = response.bio
  132.  
  133.         RxView.clicks(itemPostToConversation)
  134.                 .subscribe({ i -> presenter.createChat(response.user_id) })
  135.  
  136.         itemPostToSubscribe.isChecked = response.is_subscribed
  137.  
  138.  
  139.         RxCompoundButton.checkedChanges(itemPostToSubscribe)
  140.                 .skipInitialValue()
  141.                 .subscribe {
  142.                     if (it) {
  143.                         presenter.subscribe(response.user_id)
  144.                     } else {
  145.                         presenter.unsubscribe(response.user_id)
  146.                     }
  147.                 }
  148.         val value = object : OnSwipeTouchListener(context!!) {
  149.             override fun onSingleTap() {
  150.                 fragmentManager!!.popBackStack()
  151.             }
  152.  
  153.             override fun onSwipeRight() {
  154.  
  155.             }
  156.  
  157.             override fun onSwipeLeft() {
  158.  
  159.             }
  160.  
  161.             override fun onSwipeBottom() {
  162.                 fragmentManager!!.popBackStack()
  163.             }
  164.  
  165.             override fun onTouchRight() {
  166.                 fragmentManager!!.popBackStackImmediate()
  167.             }
  168.  
  169.             override fun onTouchLeft() {
  170.                 fragmentManager!!.popBackStack()
  171.             }
  172.  
  173.             override fun onLongPress() {
  174.  
  175.             }
  176.  
  177.             override fun onSwipeTop() {
  178.  
  179.                 val list = arrayListOf<MenuItem>()
  180.                 list.add(MenuItem(TO_USER, R.drawable.ic_send, "Send Post", order = 0))
  181.                 if (!presenter.isMyQuickView()) {
  182.                     list.add(MenuItem(BLOCK_USER, R.drawable.ic_block, "Block", R.drawable.ic_unblock, "Unblock", isBlocked.not(), order = 1))
  183.                     list.add(MenuItem(REPORT_USER, R.drawable.ic_report, "Report", order = 2))
  184.                 }
  185.                 BaseMenuFragment.newInstance(list, presenter, rxEventBus = presenter.getEventBus()).setContainerRes(R.id.quickViewRoot/*rootTextView*//*guideline*/)
  186.                         .setAnimation(Router.ANIM_MENU_CROPPED)
  187.                         .applyTransaction(fragmentManager)
  188.             }
  189.  
  190.  
  191.         }
  192.         val swipeListener: OnSwipeTouchListener = value
  193.  
  194.         cardViewQuick.setOnTouchListener(swipeListener)
  195.         quickScroll.setOnTouchListener(swipeListener)
  196.         quickContainer.setOnTouchListener(swipeListener)
  197.         quickViewRoot.setOnTouchListener(swipeListener)
  198. //        RxView.clicks(quickViewRoot)
  199. //                .subscribe{fragmentManager?.popBackStack()}
  200.     }
  201.  
  202.     override fun sendTo(objectId: String) {
  203.         SendToActivity.route(objectId, 2).startFrom(this)
  204.     }
  205.  
  206.     override fun onCloseDialog() {
  207.         fragmentManager?.beginTransaction()?.remove(this)
  208.                 ?.commit()
  209.         // fragmentManager?.popBackStack()
  210.     }
  211.  
  212.     override fun reportUser() {
  213.         val list = arrayListOf<MenuItem>()
  214.         list.add(MenuItem(BLOCK_POST_FIRST, 0, resources.getString(R.string.report_1)))
  215.         list.add(MenuItem(BLOCK_POST_SECOND, 0, resources.getString(R.string.report_2)))
  216.         BaseMenuFragment.newInstance(list, presenter, resources.getString(R.string.report_title)).setContainerRes(R.id.quickViewRoot)
  217.                 .setAnimation(Router.ANIM_MENU_CROPPED)
  218.                 .applyTransaction(fragmentManager)
  219.  
  220.     }
  221.  
  222.     override fun showBlockDialog(userName: String) {
  223.         AlertDialog.Builder(context, R.style.AlertDialog)
  224.                 .setTitle("Block $userName")
  225.                 .setMessage("They won't able to find your profile or story on  Uniscope. Uniscope won't let them know you blocked them")
  226.                 .setPositiveButton("Block") { _, _ ->
  227.                     presenter.blockUser()
  228.                 }
  229.                 .setNegativeButton("Cancel") { _, _ -> }
  230.                 .show()
  231.     }
  232.     override fun reported() {
  233.         fragmentManager!!.popBackStack()
  234.     }
  235.     override fun showMessage(message: String, tag: Any?) {
  236.         Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
  237.     }
  238.  
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement