diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt index 3a54ce7..2963214 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/detail/SeriesDetailViewModel.kt @@ -67,8 +67,8 @@ class SeriesDetailViewModel( _isLoading.value = true compositeDisposable.add( userRepository.creatorFollow( - creatorId, - "Bearer ${SharedPreferenceManager.token}" + creatorId = creatorId, + token = "Bearer ${SharedPreferenceManager.token}" ) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/CreatorFollowNotifyFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/CreatorFollowNotifyFragment.kt new file mode 100644 index 0000000..cee1f14 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/CreatorFollowNotifyFragment.kt @@ -0,0 +1,42 @@ +package kr.co.vividnext.sodalive.explorer.profile + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import kr.co.vividnext.sodalive.R + +class CreatorFollowNotifyFragment( + private val onClickNotifyAll: () -> Unit, + private val onClickNotifyNone: () -> Unit, + private val onClickUnFollow: () -> Unit, +) : BottomSheetDialogFragment() { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View = inflater.inflate( + R.layout.fragment_creator_follow_notify, + container, + false + ) + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + view.findViewById(R.id.ll_notify_all).setOnClickListener { + onClickNotifyAll() + dialog?.dismiss() + } + + view.findViewById(R.id.ll_notify_none).setOnClickListener { + onClickNotifyNone() + dialog?.dismiss() + } + + view.findViewById(R.id.ll_unfollow).setOnClickListener { + onClickUnFollow() + dialog?.dismiss() + } + } +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt index 4a75a04..bec07ac 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/GetCreatorProfileResponse.kt @@ -41,6 +41,8 @@ data class CreatorResponse( @SerializedName("websiteUrl") val websiteUrl: String? = null, @SerializedName("blogUrl") val blogUrl: String? = null, @SerializedName("isAvailableChat") val isAvailableChat: Boolean = true, + @SerializedName("isFollow") val isFollow: Boolean, + @SerializedName("isNotify") val isNotify: Boolean, @SerializedName("isNotification") val isNotification: Boolean, @SerializedName("notificationRecipientCount") val notificationRecipientCount: Int ) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt index c3e971a..743f28b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileActivity.kt @@ -83,6 +83,8 @@ class UserProfileActivity : BaseActivity( private val handler = Handler(Looper.getMainLooper()) private var userId: Long = 0 + private var notifyFragment: CreatorFollowNotifyFragment? = null + override fun onCreate(savedInstanceState: Bundle?) { userId = intent.getLongExtra(Constants.EXTRA_USER_ID, 0) super.onCreate(savedInstanceState) @@ -703,10 +705,32 @@ class UserProfileActivity : BaseActivity( } } - if (creator.isNotification) { - layoutUserProfile.ivNotification.setImageResource(R.drawable.btn_following_big) + if (creator.isFollow) { + layoutUserProfile.ivNotification.setImageResource( + if (creator.isNotify) { + R.drawable.btn_following_big + } else { + R.drawable.btn_following_no_alarm_big + } + ) + layoutUserProfile.ivNotification.setOnClickListener { - viewModel.unFollow(creator.creatorId) + if (notifyFragment == null) { + notifyFragment = CreatorFollowNotifyFragment( + onClickNotifyAll = { + viewModel.follow(creator.creatorId, follow = true, notify = true) + }, + onClickNotifyNone = { + viewModel.follow(creator.creatorId, follow = true, notify = false) + }, + onClickUnFollow = { + viewModel.follow(creator.creatorId, follow = false, notify = false) + } + ) + } + + if (notifyFragment!!.isAdded) return@setOnClickListener + notifyFragment!!.show(supportFragmentManager, notifyFragment!!.tag) } } else { layoutUserProfile.ivNotification.setImageResource(R.drawable.btn_follow_big) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileViewModel.kt index a7518e9..178ec2a 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/UserProfileViewModel.kt @@ -16,7 +16,6 @@ import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.explorer.ExplorerRepository import kr.co.vividnext.sodalive.explorer.profile.cheers.PutModifyCheersRequest -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 @@ -147,12 +146,14 @@ class UserProfileViewModel( ) } - fun follow(creatorId: Long) { + fun follow(creatorId: Long, follow: Boolean = true, notify: Boolean = true) { _isLoading.value = true compositeDisposable.add( userRepository.creatorFollow( creatorId, - "Bearer ${SharedPreferenceManager.token}" + follow = follow, + notify = notify, + token = "Bearer ${SharedPreferenceManager.token}" ) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt index 976e796..9700f64 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/explorer/profile/follow/UserFollowerListViewModel.kt @@ -88,8 +88,8 @@ class UserFollowerListViewModel( _isLoading.value = true compositeDisposable.add( userRepository.creatorFollow( - creatorId, - "Bearer ${SharedPreferenceManager.token}" + creatorId = creatorId, + token = "Bearer ${SharedPreferenceManager.token}" ) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/user/CreatorFollowRequestRequest.kt b/app/src/main/java/kr/co/vividnext/sodalive/user/CreatorFollowRequestRequest.kt index 0599d40..2c3e308 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/user/CreatorFollowRequestRequest.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/user/CreatorFollowRequestRequest.kt @@ -4,4 +4,8 @@ import androidx.annotation.Keep import com.google.gson.annotations.SerializedName @Keep -data class CreatorFollowRequestRequest(@SerializedName("creatorId") val creatorId: Long) +data class CreatorFollowRequestRequest( + @SerializedName("creatorId") val creatorId: Long, + @SerializedName("isNotify") val isNotify: Boolean = true, + @SerializedName("isActive") val isActive: Boolean = true +) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/user/UserRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/user/UserRepository.kt index 0a8f0cf..1f879ec 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/user/UserRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/user/UserRepository.kt @@ -54,9 +54,15 @@ class UserRepository(private val userApi: UserApi) { fun creatorFollow( creatorId: Long, + follow: Boolean = true, + notify: Boolean = true, token: String ) = userApi.creatorFollow( - request = CreatorFollowRequestRequest(creatorId = creatorId), + request = CreatorFollowRequestRequest( + creatorId = creatorId, + isActive = follow, + isNotify = notify + ), authHeader = token ) diff --git a/app/src/main/res/drawable-xhdpi/ic_avatar_unfollow.png b/app/src/main/res/drawable-xhdpi/ic_avatar_unfollow.png new file mode 100755 index 0000000..fa09331 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_avatar_unfollow.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_notify_all.png b/app/src/main/res/drawable-xhdpi/ic_notify_all.png new file mode 100644 index 0000000..2a129b1 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_notify_all.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_notify_none.png b/app/src/main/res/drawable-xhdpi/ic_notify_none.png new file mode 100644 index 0000000..c88aa6c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_notify_none.png differ diff --git a/app/src/main/res/drawable-xxhdpi/btn_follow_big.png b/app/src/main/res/drawable-xxhdpi/btn_follow_big.png index da6562c..f174603 100644 Binary files a/app/src/main/res/drawable-xxhdpi/btn_follow_big.png and b/app/src/main/res/drawable-xxhdpi/btn_follow_big.png differ diff --git a/app/src/main/res/drawable-xxhdpi/btn_following_big.png b/app/src/main/res/drawable-xxhdpi/btn_following_big.png index e2536c9..95935ee 100644 Binary files a/app/src/main/res/drawable-xxhdpi/btn_following_big.png and b/app/src/main/res/drawable-xxhdpi/btn_following_big.png differ diff --git a/app/src/main/res/drawable-xxhdpi/btn_following_no_alarm_big.png b/app/src/main/res/drawable-xxhdpi/btn_following_no_alarm_big.png new file mode 100644 index 0000000..a2f4afa Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/btn_following_no_alarm_big.png differ diff --git a/app/src/main/res/layout/fragment_creator_follow_notify.xml b/app/src/main/res/layout/fragment_creator_follow_notify.xml new file mode 100644 index 0000000..7c5ca90 --- /dev/null +++ b/app/src/main/res/layout/fragment_creator_follow_notify.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +