lmw
2025-01-10 601f14db94013373df700e007095f7f2f5ecbe24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.sinata.xqmuse.dialog
 
import android.content.DialogInterface
import android.view.Gravity
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.utils.showAllowingStateLoss
import com.sinata.xqmuse.R
import com.sinata.xqmuse.network.HttpManager
import com.sinata.xqmuse.network.entity.Comment
import com.sinata.xqmuse.network.request
import com.sinata.xqmuse.ui.discovery.adapter.CommentAdapter
import com.sinata.xqmuse.utils.interfaces.StringCallback
import kotlinx.android.synthetic.main.dialog_comment.*
import org.jetbrains.anko.support.v4.toast
 
class CommentDialog:BaseDialogFragment() {
    override fun setContentView() = R.layout.dialog_comment
 
    override fun setGravity() = Gravity.BOTTOM
    private val voiceId by lazy { arguments?.getString("id")?:"" }
    private var page = 1
    private val list = arrayListOf<Comment>()
    private val adapter by lazy { CommentAdapter(list,requireActivity() as BaseActivity) }
    var callback:StringCallback? = null
    private var dismissed = false
 
    override fun initView() {
        iv_close.setOnClickListener { dismissAllowingStateLoss() }
        rv_list.layoutManager = LinearLayoutManager(requireContext())
        rv_list.adapter = adapter
        adapter.callback = object :StringCallback{
            override fun onResult(rst: String) {
                val commentLongClickDialog = CommentLongClickDialog()
                commentLongClickDialog.callback = object :StringCallback{
                    override fun onResult(_rst: String) {
                        report(list[rst.toInt()].id)
                    }
                }
                commentLongClickDialog.showAllowingStateLoss((requireContext() as BaseActivity).supportFragmentManager,"long")
            }
        }
        refreshLayout.setOnRefreshListener {
            page = 1
            getData()
        }
        refreshLayout.setOnLoadMoreListener {
            page++
            getData()
        }
        tv_action.setOnClickListener {
            val content = et_content.text.toString()
            if (content.isNullOrEmpty())
                toast("请输入内容")
            else{
                tv_action.isEnabled = false
                HttpManager.addQuestion(voiceId,content).request(requireActivity() as BaseActivity,success = {_,_->
                    et_content.setText("")
                    tv_action.isEnabled = true
                    refreshLayout.autoRefresh()
                }){_,_->
                    tv_action.isEnabled = true
                }
            }
        }
        getData()
    }
 
 
    fun report(id:String){
        val reportDialog = ReportDialog()
        reportDialog.callback = object :StringCallback{
            override fun onResult(rst: String) {
                HttpManager.report(id,rst).request(context as BaseActivity){_,_->
                    val successDialog = SuccessDialog()
                    successDialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager,"suc")
                }
            }
        }
        reportDialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager,"report")
    }
 
    private fun getData(){
        HttpManager.getMeditationQuestionPage(voiceId,page).request(requireActivity() as BaseActivity,success = { _, data->
            if (!dismissed){
                tv_count.text = "${data?.total}条提问"
                if (page == 1)
                    list.clear()
                list.addAll(data?.list?: arrayListOf())
                adapter.notifyDataSetChanged()
                if (list.isEmpty()){
                    refreshLayout.finishRefreshWithNoMoreData()
                } else if (data?.list.isNullOrEmpty())
                    refreshLayout.finishLoadMoreWithNoMoreData()
                else if (page == 1)
                    refreshLayout.finishRefresh()
                else
                    refreshLayout.finishLoadMore()
            }
        }){_,_->
            if (!dismissed){
                if (page == 1)
                    refreshLayout.finishRefresh(false)
                else
                    refreshLayout.finishLoadMore(false)
            }
        }
    }
 
    override fun onDismiss(dialog: DialogInterface) {
        super.onDismiss(dialog)
        dismissed = true
    }
}