feat(creator): 채널 신고 차단 동작을 연결한다
This commit is contained in:
@@ -463,7 +463,7 @@ class AppDI(private val context: Context, isDebugMode: Boolean) {
|
||||
factory { DmChatRepository(api = get(), realtimeClient = get()) }
|
||||
factory { HomeCreatorRankingRepository(get()) }
|
||||
factory { HomeRecommendationRepository(get()) }
|
||||
factory { CreatorChannelHomeRepository(api = get(), userRepository = get(), talkApi = get()) }
|
||||
factory { CreatorChannelHomeRepository(api = get(), userRepository = get(), talkApi = get(), reportRepository = get()) }
|
||||
factory { CharacterTabRepository(get()) }
|
||||
factory { CharacterDetailRepository(get(), get()) }
|
||||
factory { CharacterGalleryRepository(get()) }
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.base.BaseViewModel
|
||||
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
|
||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.common.ToastMessage
|
||||
import kr.co.vividnext.sodalive.v2.creator.channel.data.CreatorChannelHomeRepository
|
||||
@@ -48,7 +49,7 @@ class CreatorChannelHomeViewModel(
|
||||
{
|
||||
val data = it.data
|
||||
if (it.success && data != null) {
|
||||
_homeStateLiveData.value = data.toUiContent()
|
||||
_homeStateLiveData.value = data.toUiContent(currentMemberId = SharedPreferenceManager.userId)
|
||||
} else {
|
||||
showUnknownError(it.message)
|
||||
}
|
||||
@@ -84,6 +85,11 @@ class CreatorChannelHomeViewModel(
|
||||
_homeStateLiveData.value = content.copy(
|
||||
header = content.header.copy(isFollow = follow, isNotify = notify)
|
||||
)
|
||||
if (!follow) {
|
||||
_toastLiveData.value = CreatorChannelEvent(
|
||||
ToastMessage(resId = R.string.creator_channel_unfollow_success)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
@@ -125,6 +131,78 @@ class CreatorChannelHomeViewModel(
|
||||
)
|
||||
}
|
||||
|
||||
fun blockUser() {
|
||||
val content = _homeStateLiveData.value as? CreatorChannelHomeUiState.Content ?: return
|
||||
|
||||
compositeDisposable.add(
|
||||
repository.blockUser(content.header.creatorId, authToken())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{
|
||||
if (it.success) {
|
||||
_toastLiveData.value = CreatorChannelEvent(
|
||||
ToastMessage(resId = R.string.creator_channel_block_success)
|
||||
)
|
||||
} else {
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
},
|
||||
{
|
||||
it.message?.let { message -> Logger.e(message) }
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun reportUser(reason: String) {
|
||||
val content = _homeStateLiveData.value as? CreatorChannelHomeUiState.Content ?: return
|
||||
|
||||
compositeDisposable.add(
|
||||
repository.reportUser(content.header.creatorId, reason, authToken())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{
|
||||
if (it.success) {
|
||||
showReportSubmittedToast()
|
||||
} else {
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
},
|
||||
{
|
||||
it.message?.let { message -> Logger.e(message) }
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun reportProfile() {
|
||||
val content = _homeStateLiveData.value as? CreatorChannelHomeUiState.Content ?: return
|
||||
val reason = SodaLiveApplicationHolder.get().getString(R.string.dialog_member_profile_report_profile)
|
||||
|
||||
compositeDisposable.add(
|
||||
repository.reportProfile(content.header.creatorId, reason, authToken())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{
|
||||
if (it.success) {
|
||||
showReportSubmittedToast()
|
||||
} else {
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
},
|
||||
{
|
||||
it.message?.let { message -> Logger.e(message) }
|
||||
showUnknownErrorToast()
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun showUnknownError(message: String?) {
|
||||
_homeStateLiveData.value = CreatorChannelHomeUiState.Error(message = message)
|
||||
showUnknownErrorToast()
|
||||
@@ -134,6 +212,10 @@ class CreatorChannelHomeViewModel(
|
||||
_toastLiveData.value = CreatorChannelEvent(ToastMessage(resId = R.string.common_error_unknown))
|
||||
}
|
||||
|
||||
private fun showReportSubmittedToast() {
|
||||
_toastLiveData.value = CreatorChannelEvent(ToastMessage(resId = R.string.character_comment_report_submitted))
|
||||
}
|
||||
|
||||
private fun authToken(): String = "Bearer ${SharedPreferenceManager.token}"
|
||||
}
|
||||
|
||||
|
||||
@@ -2,12 +2,16 @@ package kr.co.vividnext.sodalive.v2.creator.channel.data
|
||||
|
||||
import kr.co.vividnext.sodalive.chat.talk.TalkApi
|
||||
import kr.co.vividnext.sodalive.chat.talk.room.CreateChatRoomRequest
|
||||
import kr.co.vividnext.sodalive.report.ReportRepository
|
||||
import kr.co.vividnext.sodalive.report.ReportRequest
|
||||
import kr.co.vividnext.sodalive.report.ReportType
|
||||
import kr.co.vividnext.sodalive.user.UserRepository
|
||||
|
||||
class CreatorChannelHomeRepository(
|
||||
private val api: CreatorChannelHomeApi,
|
||||
private val userRepository: UserRepository,
|
||||
private val talkApi: TalkApi
|
||||
private val talkApi: TalkApi,
|
||||
private val reportRepository: ReportRepository
|
||||
) {
|
||||
fun getHome(creatorId: Long, token: String) = api.getHome(
|
||||
creatorId = creatorId,
|
||||
@@ -30,4 +34,19 @@ class CreatorChannelHomeRepository(
|
||||
authHeader = token,
|
||||
request = CreateChatRoomRequest(characterId)
|
||||
)
|
||||
|
||||
fun blockUser(userId: Long, token: String) = userRepository.memberBlock(
|
||||
userId = userId,
|
||||
token = token
|
||||
)
|
||||
|
||||
fun reportUser(userId: Long, reason: String, token: String) = reportRepository.report(
|
||||
request = ReportRequest(ReportType.USER, reason, reportedMemberId = userId),
|
||||
token = token
|
||||
)
|
||||
|
||||
fun reportProfile(userId: Long, reason: String, token: String) = reportRepository.report(
|
||||
request = ReportRequest(ReportType.PROFILE, reason, reportedMemberId = userId),
|
||||
token = token
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user