Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.done_it.uniscope.ui.channel.quickchannel
- import android.app.AlertDialog
- import android.app.FragmentManager
- import android.os.Bundle
- import android.support.constraint.ConstraintLayout
- import android.support.constraint.ConstraintSet
- import android.support.transition.Fade
- import android.support.transition.TransitionManager
- import android.support.v7.widget.LinearLayoutManager
- import android.support.v7.widget.RecyclerView
- import android.text.TextUtils
- import android.view.LayoutInflater
- import android.view.View
- import android.view.ViewGroup
- import android.widget.Toast
- import com.f2prateek.rx.preferences2.RxSharedPreferences
- import com.google.gson.Gson
- import com.jakewharton.rxbinding2.view.RxView
- import com.jakewharton.rxbinding2.widget.RxCompoundButton
- import eightbitlab.com.blurview.RenderScriptBlur
- import kotlinx.android.synthetic.main.fragment_channel.*
- import kotlinx.android.synthetic.main.fragment_quick_view_dialog.*
- import net.done_it.uniscope.Preferences
- import net.done_it.uniscope.R
- import net.done_it.uniscope.base.BaseInjectFragment
- import net.done_it.uniscope.entity.User
- import net.done_it.uniscope.entity.convertor.UserConverter
- import net.done_it.uniscope.model.MenuItem
- import net.done_it.uniscope.model.network.QuickChannelResponse
- import net.done_it.uniscope.ui.channel.*
- import net.done_it.uniscope.ui.channel.channelitem.*
- import net.done_it.uniscope.ui.channel.common.FadeInUpAnimator
- import net.done_it.uniscope.ui.conversation.ConversationActivity
- import net.done_it.uniscope.ui.dialog.BaseMenuFragment
- import net.done_it.uniscope.ui.send_to.SendToActivity
- import net.done_it.uniscope.utils.CountryUtils
- import net.done_it.uniscope.utils.OnSwipeTouchListener
- import net.doneit.baseproject.extension.hide
- import net.doneit.baseproject.extension.show
- import net.doneit.baseproject.mvp.Presenter
- import net.doneit.baseproject.utils.navigation.Router
- import javax.inject.Inject
- private const val ID = "ID"
- class QuickViewDialog : BaseInjectFragment(), QuickView {
- @Inject
- lateinit var presenter: QuickViewPresenter
- private lateinit var id: String
- private var isBlocked: Boolean = false
- @Inject
- lateinit var pref: RxSharedPreferences
- @Inject
- lateinit var gson: Gson
- companion object {
- fun newInstance(name: String): Router.FragmentTransactionBuilder? {
- val fragment = QuickViewDialog()
- return Router.FragmentTransactionBuilder(fragment)
- .putParam(ID, name)
- .setAnimation(Router.ANIM_ALPHA)
- .addToBackStack(true)
- }
- }
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?): View? {
- // Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_quick_view_dialog, container, false)
- }
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- injectAsync({ it.inject(this) }, {
- presenter.attachToView(this)
- id = arguments!!.getString(ID)
- presenter.getChannel(id)
- })
- }
- override fun chatCreated(id: String) {
- ConversationActivity.route(id).startFrom(this)
- }
- override fun openPost(id: String) {
- ChannelsActivity.route(id).startFrom(this)
- }
- override fun getPresenter(): Presenter<*>? {
- return presenter
- }
- override fun setupChannel(response: QuickChannelResponse) {
- val user = pref.getObject(Preferences.KEY_USER, User(), UserConverter(gson))
- if (user.get().id.equals(response.user_id)) {
- itemPostToSubscribe.visibility = View.GONE
- } else {
- itemPostToSubscribe.visibility = View.VISIBLE
- }
- itemPostToConversation.visibility = View.VISIBLE
- TransitionManager.beginDelayedTransition(view as ViewGroup, Fade())
- quickContainer.apply {
- val manager = LinearLayoutManager(context, RecyclerView.HORIZONTAL, false)
- layoutManager = manager
- response.channel = response.channel.sortedByDescending { channel -> channel.timestamp }
- adapter = QuickViewAdapter(response.channel, presenter)
- itemAnimator = FadeInUpAnimator()
- }
- isBlocked = response.channel.first().is_blocked
- val nameSb = StringBuilder()
- nameSb.append(response.name)
- if ((response.followers == "0").not()) {
- nameSb.append(" • ${response.followers}")
- }
- itemQuickAuthor.text = nameSb
- val locationSb = StringBuilder()
- locationSb.append(response.user_name)
- if (TextUtils.isEmpty(response.location).not()) {
- locationSb.append(" • ${response.location}")
- }
- itemQuickDate.text = locationSb
- itemPostDesctiption.text = response.bio
- RxView.clicks(itemPostToConversation)
- .subscribe({ i -> presenter.createChat(response.user_id) })
- itemPostToSubscribe.isChecked = response.is_subscribed
- RxCompoundButton.checkedChanges(itemPostToSubscribe)
- .skipInitialValue()
- .subscribe {
- if (it) {
- presenter.subscribe(response.user_id)
- } else {
- presenter.unsubscribe(response.user_id)
- }
- }
- val value = object : OnSwipeTouchListener(context!!) {
- override fun onSingleTap() {
- fragmentManager!!.popBackStack()
- }
- override fun onSwipeRight() {
- }
- override fun onSwipeLeft() {
- }
- override fun onSwipeBottom() {
- fragmentManager!!.popBackStack()
- }
- override fun onTouchRight() {
- fragmentManager!!.popBackStackImmediate()
- }
- override fun onTouchLeft() {
- fragmentManager!!.popBackStack()
- }
- override fun onLongPress() {
- }
- override fun onSwipeTop() {
- val list = arrayListOf<MenuItem>()
- list.add(MenuItem(TO_USER, R.drawable.ic_send, "Send Post", order = 0))
- if (!presenter.isMyQuickView()) {
- list.add(MenuItem(BLOCK_USER, R.drawable.ic_block, "Block", R.drawable.ic_unblock, "Unblock", isBlocked.not(), order = 1))
- list.add(MenuItem(REPORT_USER, R.drawable.ic_report, "Report", order = 2))
- }
- BaseMenuFragment.newInstance(list, presenter, rxEventBus = presenter.getEventBus()).setContainerRes(R.id.quickViewRoot/*rootTextView*//*guideline*/)
- .setAnimation(Router.ANIM_MENU_CROPPED)
- .applyTransaction(fragmentManager)
- }
- }
- val swipeListener: OnSwipeTouchListener = value
- cardViewQuick.setOnTouchListener(swipeListener)
- quickScroll.setOnTouchListener(swipeListener)
- quickContainer.setOnTouchListener(swipeListener)
- quickViewRoot.setOnTouchListener(swipeListener)
- // RxView.clicks(quickViewRoot)
- // .subscribe{fragmentManager?.popBackStack()}
- }
- override fun sendTo(objectId: String) {
- SendToActivity.route(objectId, 2).startFrom(this)
- }
- override fun onCloseDialog() {
- fragmentManager?.beginTransaction()?.remove(this)
- ?.commit()
- // fragmentManager?.popBackStack()
- }
- override fun reportUser() {
- val list = arrayListOf<MenuItem>()
- list.add(MenuItem(BLOCK_POST_FIRST, 0, resources.getString(R.string.report_1)))
- list.add(MenuItem(BLOCK_POST_SECOND, 0, resources.getString(R.string.report_2)))
- BaseMenuFragment.newInstance(list, presenter, resources.getString(R.string.report_title)).setContainerRes(R.id.quickViewRoot)
- .setAnimation(Router.ANIM_MENU_CROPPED)
- .applyTransaction(fragmentManager)
- }
- override fun showBlockDialog(userName: String) {
- AlertDialog.Builder(context, R.style.AlertDialog)
- .setTitle("Block $userName")
- .setMessage("They won't able to find your profile or story on Uniscope. Uniscope won't let them know you blocked them")
- .setPositiveButton("Block") { _, _ ->
- presenter.blockUser()
- }
- .setNegativeButton("Cancel") { _, _ -> }
- .show()
- }
- override fun reported() {
- fragmentManager!!.popBackStack()
- }
- override fun showMessage(message: String, tag: Any?) {
- Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement