커뮤니티 신고하기 추가
This commit is contained in:
parent
6b2e59c09d
commit
6c96c4afe5
|
@ -218,7 +218,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
|||
viewModel { AudioContentNewAllViewModel(get()) }
|
||||
viewModel { AudioContentRankingAllViewModel(get()) }
|
||||
viewModel { RouletteSettingsViewModel(get()) }
|
||||
viewModel { CreatorCommunityAllViewModel(get()) }
|
||||
viewModel { CreatorCommunityAllViewModel(get(), get()) }
|
||||
viewModel { CreatorCommunityCommentListViewModel(get()) }
|
||||
viewModel { CreatorCommunityWriteViewModel(get()) }
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.view.View
|
|||
import android.widget.Toast
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentReportDialog
|
||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||
import kr.co.vividnext.sodalive.base.SodaDialog
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
|
@ -14,6 +15,7 @@ import kr.co.vividnext.sodalive.common.LoadingDialog
|
|||
import kr.co.vividnext.sodalive.databinding.ActivityCreatorCommunityAllBinding
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.comment.CreatorCommunityCommentFragment
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kr.co.vividnext.sodalive.report.ReportType
|
||||
import org.koin.android.ext.android.inject
|
||||
|
||||
class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBinding>(
|
||||
|
@ -82,8 +84,13 @@ class CreatorCommunityAllActivity : BaseActivity<ActivityCreatorCommunityAllBind
|
|||
cancelButtonClick = {}
|
||||
).show(screenWidth)
|
||||
},
|
||||
onClickReport = {
|
||||
|
||||
onClickReport = { postId ->
|
||||
CreatorCommunityReportDialog(this@CreatorCommunityAllActivity, layoutInflater) {
|
||||
viewModel.report(
|
||||
communityPostId = postId,
|
||||
reason = it
|
||||
)
|
||||
}.show(screenWidth)
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -10,11 +10,15 @@ import kr.co.vividnext.sodalive.base.BaseViewModel
|
|||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
|
||||
import kr.co.vividnext.sodalive.report.ReportRepository
|
||||
import kr.co.vividnext.sodalive.report.ReportRequest
|
||||
import kr.co.vividnext.sodalive.report.ReportType
|
||||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
|
||||
class CreatorCommunityAllViewModel(
|
||||
private val repository: CreatorCommunityRepository
|
||||
private val repository: CreatorCommunityRepository,
|
||||
private val reportRepository: ReportRepository
|
||||
) : BaseViewModel() {
|
||||
private val _toastLiveData = MutableLiveData<String?>()
|
||||
val toastLiveData: LiveData<String?>
|
||||
|
@ -179,4 +183,40 @@ class CreatorCommunityAllViewModel(
|
|||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun report(communityPostId: Long, reason: String) {
|
||||
_isLoading.value = true
|
||||
val request = ReportRequest(
|
||||
type = ReportType.COMMUNITY_POST,
|
||||
reason = reason,
|
||||
communityPostId = communityPostId
|
||||
)
|
||||
|
||||
compositeDisposable.add(
|
||||
reportRepository.report(
|
||||
request = request,
|
||||
token = "Bearer ${SharedPreferenceManager.token}"
|
||||
)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{
|
||||
if (it.message != null) {
|
||||
_toastLiveData.postValue(it.message)
|
||||
} else {
|
||||
_toastLiveData.postValue(
|
||||
"신고가 접수되었습니다."
|
||||
)
|
||||
}
|
||||
|
||||
_isLoading.value = false
|
||||
},
|
||||
{
|
||||
_isLoading.value = false
|
||||
it.message?.let { message -> Logger.e(message) }
|
||||
_toastLiveData.postValue("신고가 접수되었습니다.")
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
package kr.co.vividnext.sodalive.explorer.profile.creator_community.all
|
||||
|
||||
import android.app.Activity
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.view.LayoutInflater
|
||||
import android.view.WindowManager
|
||||
import android.widget.RadioButton
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import kr.co.vividnext.sodalive.databinding.DialogCommunityPostReportBinding
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
|
||||
class CreatorCommunityReportDialog(
|
||||
activity: Activity,
|
||||
layoutInflater: LayoutInflater,
|
||||
confirmButtonClick: (String) -> Unit
|
||||
) {
|
||||
private val alertDialog: AlertDialog
|
||||
val dialogView = DialogCommunityPostReportBinding.inflate(layoutInflater)
|
||||
var reason = ""
|
||||
|
||||
init {
|
||||
val dialogBuilder = AlertDialog.Builder(activity)
|
||||
dialogBuilder.setView(dialogView.root)
|
||||
|
||||
alertDialog = dialogBuilder.create()
|
||||
alertDialog.setCancelable(false)
|
||||
alertDialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
|
||||
dialogView.tvCancel.setOnClickListener {
|
||||
alertDialog.dismiss()
|
||||
}
|
||||
|
||||
dialogView.tvReport.setOnClickListener {
|
||||
if (reason.isNotBlank()) {
|
||||
alertDialog.dismiss()
|
||||
confirmButtonClick(reason)
|
||||
} else {
|
||||
Toast.makeText(activity, "신고 이유를 선택하세요.", Toast.LENGTH_LONG).show()
|
||||
}
|
||||
}
|
||||
|
||||
dialogView.radioGroup.setOnCheckedChangeListener { radioGroup, checkedId ->
|
||||
val radioButton = radioGroup.findViewById<RadioButton>(checkedId)
|
||||
reason = radioButton.text.toString()
|
||||
}
|
||||
}
|
||||
|
||||
fun show(width: Int) {
|
||||
alertDialog.show()
|
||||
|
||||
val lp = WindowManager.LayoutParams()
|
||||
lp.copyFrom(alertDialog.window?.attributes)
|
||||
lp.width = width - (26.7f.dpToPx()).toInt()
|
||||
lp.height = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
|
||||
alertDialog.window?.attributes = lp
|
||||
}
|
||||
}
|
|
@ -8,11 +8,13 @@ data class ReportRequest(
|
|||
@SerializedName("reportedMemberId") val reportedMemberId: Long? = null,
|
||||
@SerializedName("cheersId") val cheersId: Long? = null,
|
||||
@SerializedName("audioContentId") val contentId: Long? = null,
|
||||
@SerializedName("communityPostId") val communityPostId: Long? = null,
|
||||
)
|
||||
|
||||
enum class ReportType {
|
||||
@SerializedName("PROFILE") PROFILE,
|
||||
@SerializedName("USER") USER,
|
||||
@SerializedName("CHEERS") CHEERS,
|
||||
@SerializedName("AUDIO_CONTENT") AUDIO_CONTENT
|
||||
@SerializedName("AUDIO_CONTENT") AUDIO_CONTENT,
|
||||
@SerializedName("COMMUNITY_POST") COMMUNITY_POST
|
||||
}
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_round_corner_10_222222"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16.7dp"
|
||||
android:paddingTop="26.7dp"
|
||||
android:paddingBottom="16.7dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:text="게시물 신고"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="18.3sp" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/radio_group"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="21.3dp"
|
||||
android:background="@drawable/bg_round_corner_13_3_303030"
|
||||
android:orientation="vertical"
|
||||
android:padding="13.3dp">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="원치 않는 상업성 콘텐츠 또는 스팸"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="포르노 또는 음란물"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="아동 학대"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="증오심 표현 또는 노골적인 폭력"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="테러 조장"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_6"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="괴롭힘 또는 폭력"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_7"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="자살 또는 자해"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/radio_8"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:buttonTint="@color/color_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="잘못된 정보"
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="14sp" />
|
||||
</RadioGroup>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="21.3dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_cancel"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="6.7dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/bg_round_corner_6_7_13181b_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="15.7dp"
|
||||
android:text="취소"
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="18.3sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_report"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="6.7dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/bg_round_corner_6_7_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="15.7dp"
|
||||
android:text="신고"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="18.3sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -2,15 +2,15 @@
|
|||
<!-- Base application theme. -->
|
||||
<style name="Theme.SodaLive" parent="Theme.Material3.DayNight.NoActionBar">
|
||||
<!-- Primary brand color. -->
|
||||
<item name="colorPrimary">@color/color_9970ff</item>
|
||||
<item name="colorPrimaryVariant">@color/color_9970ff</item>
|
||||
<item name="colorPrimary">@color/color_80d8ff</item>
|
||||
<item name="colorPrimaryVariant">@color/color_80d8ff</item>
|
||||
<item name="colorOnPrimary">@color/white</item>
|
||||
<!-- Secondary brand color. -->
|
||||
<item name="colorSecondary">@color/black</item>
|
||||
<item name="colorSecondaryVariant">@color/black</item>
|
||||
<item name="colorOnSecondary">@color/color_9970ff</item>
|
||||
<item name="colorOnSecondary">@color/color_3bb9f1</item>
|
||||
|
||||
<item name="colorAccent">@color/color_9970ff</item>
|
||||
<item name="colorAccent">@color/color_3bb9f1</item>
|
||||
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:windowLightNavigationBar" tools:targetApi="o_mr1">false</item>
|
||||
|
@ -19,8 +19,8 @@
|
|||
</style>
|
||||
|
||||
<style name="EditTextStyle" parent="Theme.AppCompat.Light">
|
||||
<item name="colorControlNormal">@color/color_9970ff</item>
|
||||
<item name="colorControlActivated">@color/color_9970ff</item>
|
||||
<item name="colorControlNormal">@color/color_3bb9f1</item>
|
||||
<item name="colorControlActivated">@color/color_3bb9f1</item>
|
||||
</style>
|
||||
|
||||
<style name="tabText" parent="@android:style/TextAppearance.Widget.TabWidget">
|
||||
|
@ -28,9 +28,9 @@
|
|||
</style>
|
||||
|
||||
<style name="DatePickerStyle" parent="Theme.AppCompat.Light.Dialog">
|
||||
<item name="colorAccent">@color/color_9970ff</item>
|
||||
<item name="colorAccent">@color/color_3bb9f1</item>
|
||||
<!--selected Item color-->
|
||||
<item name="colorControlActivated">@color/color_9970ff</item>
|
||||
<item name="colorControlActivated">@color/color_3bb9f1</item>
|
||||
<item name="colorControlHighlight">@color/black</item>
|
||||
<!-- Ok Cancel Color-->
|
||||
<item name="android:textColor">@color/white</item>
|
||||
|
@ -47,7 +47,7 @@
|
|||
<style name="TimePickerStyle" parent="Theme.AppCompat.Dialog">
|
||||
<item name="colorAccent">@color/white</item>
|
||||
<item name="android:textColor">@color/white</item>
|
||||
<item name="android:textColorPrimary">@color/color_9970ff</item>
|
||||
<item name="android:textColorPrimary">@color/color_3bb9f1</item>
|
||||
<item name="android:windowBackground">@color/black</item>
|
||||
<item name="android:fontFamily">@font/gmarket_sans_medium</item>
|
||||
</style>
|
||||
|
|
Loading…
Reference in New Issue