라이브, 콘텐츠, 채널 공유하기
- 파라미터 키, 값 각각 인코딩 적용
This commit is contained in:
		@@ -10,6 +10,7 @@ import kr.co.vividnext.sodalive.audio_content.comment.AudioContentCommentReposit
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.order.OrderType
 | 
			
		||||
import kr.co.vividnext.sodalive.base.BaseViewModel
 | 
			
		||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
 | 
			
		||||
import kr.co.vividnext.sodalive.common.Utils
 | 
			
		||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
 | 
			
		||||
import kr.co.vividnext.sodalive.mypage.auth.AuthRepository
 | 
			
		||||
import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest
 | 
			
		||||
@@ -302,13 +303,16 @@ class AudioContentDetailViewModel(
 | 
			
		||||
        contentTitle: String,
 | 
			
		||||
        onSuccess: (String) -> Unit
 | 
			
		||||
    ) {
 | 
			
		||||
        val shareUrl = "https://voiceon.onelink.me/RkTm?" +
 | 
			
		||||
            "af_dp=voiceon://" +
 | 
			
		||||
            "&deep_link_value=content" +
 | 
			
		||||
            "&deep_link_sub5=$audioContentId" +
 | 
			
		||||
            "&af_og_title=$contentTitle" +
 | 
			
		||||
            "&af_og_description=지금 보이스온에서 이 콘텐츠 감상하기" +
 | 
			
		||||
            "&af_og_image=$contentImage"
 | 
			
		||||
        val params = mapOf(
 | 
			
		||||
            "af_dp" to "voiceon://",
 | 
			
		||||
            "deep_link_value" to "content",
 | 
			
		||||
            "deep_link_sub5" to "$audioContentId",
 | 
			
		||||
            "af_og_title" to contentTitle,
 | 
			
		||||
            "af_og_description" to "지금 보이스온에서 이 콘텐츠 감상하기",
 | 
			
		||||
            "af_og_image" to contentImage
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        val shareUrl = Utils.createOneLinkUrl(params = params)
 | 
			
		||||
        onSuccess(shareUrl)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,8 @@
 | 
			
		||||
package kr.co.vividnext.sodalive.common
 | 
			
		||||
 | 
			
		||||
import java.net.URLEncoder
 | 
			
		||||
import java.nio.charset.StandardCharsets
 | 
			
		||||
 | 
			
		||||
object Utils {
 | 
			
		||||
    fun convertDurationToString(duration: Int, showHours: Boolean = true): String {
 | 
			
		||||
        val durationSeconds = duration / 1000
 | 
			
		||||
@@ -26,4 +29,13 @@ object Utils {
 | 
			
		||||
 | 
			
		||||
        return 1000 * (hours * 3600 + minutes * 60 + seconds)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun createOneLinkUrl(params: Map<String, String>): String {
 | 
			
		||||
        val encodedParams = params.map { (key, value) ->
 | 
			
		||||
            "${URLEncoder.encode(key, StandardCharsets.UTF_8.toString())}=" +
 | 
			
		||||
                URLEncoder.encode(value, StandardCharsets.UTF_8.toString())
 | 
			
		||||
        }.joinToString("&")
 | 
			
		||||
 | 
			
		||||
        return "https://voiceon.onelink.me/RkTm?$encodedParams"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
 | 
			
		||||
import io.reactivex.rxjava3.schedulers.Schedulers
 | 
			
		||||
import kr.co.vividnext.sodalive.base.BaseViewModel
 | 
			
		||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
 | 
			
		||||
import kr.co.vividnext.sodalive.common.Utils
 | 
			
		||||
import kr.co.vividnext.sodalive.explorer.ExplorerRepository
 | 
			
		||||
import kr.co.vividnext.sodalive.explorer.profile.cheers.PutModifyCheersRequest
 | 
			
		||||
import kr.co.vividnext.sodalive.report.ReportRepository
 | 
			
		||||
@@ -270,14 +271,15 @@ class UserProfileViewModel(
 | 
			
		||||
        profileImage: String,
 | 
			
		||||
        onSuccess: (String) -> Unit
 | 
			
		||||
    ) {
 | 
			
		||||
        val shareUrl = "https://voiceon.onelink.me/RkTm?" +
 | 
			
		||||
            "af_dp=voiceon://" +
 | 
			
		||||
            "&deep_link_value=channel" +
 | 
			
		||||
            "&deep_link_sub5=$userId" +
 | 
			
		||||
            "&af_og_title=보이스온" +
 | 
			
		||||
            "&af_og_description=보이스온 ${nickname}님의 채널입니다." +
 | 
			
		||||
            "&af_og_image=$profileImage"
 | 
			
		||||
 | 
			
		||||
        val params = mapOf(
 | 
			
		||||
            "af_dp" to "voiceon://",
 | 
			
		||||
            "deep_link_value" to "channel",
 | 
			
		||||
            "deep_link_sub5" to "$userId",
 | 
			
		||||
            "af_og_title" to "보이스온",
 | 
			
		||||
            "af_og_description" to "보이스온 ${nickname}님의 채널입니다.",
 | 
			
		||||
            "af_og_image" to profileImage
 | 
			
		||||
        )
 | 
			
		||||
        val shareUrl = Utils.createOneLinkUrl(params = params)
 | 
			
		||||
        onSuccess("보이스온 ${nickname}님의 채널입니다.\n$shareUrl")
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,7 @@ import kotlinx.coroutines.sync.Mutex
 | 
			
		||||
import kotlinx.coroutines.sync.withLock
 | 
			
		||||
import kr.co.vividnext.sodalive.base.BaseViewModel
 | 
			
		||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
 | 
			
		||||
import kr.co.vividnext.sodalive.common.Utils
 | 
			
		||||
import kr.co.vividnext.sodalive.live.LiveRepository
 | 
			
		||||
import kr.co.vividnext.sodalive.live.room.donation.GetLiveRoomDonationStatusResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.live.room.donation.LiveRoomDonationResponse
 | 
			
		||||
@@ -302,13 +303,16 @@ class LiveRoomViewModel(
 | 
			
		||||
        coverImage: String,
 | 
			
		||||
        onSuccess: (String) -> Unit
 | 
			
		||||
    ) {
 | 
			
		||||
        val shareUrl = "https://voiceon.onelink.me/RkTm?" +
 | 
			
		||||
            "af_dp=voiceon://" +
 | 
			
		||||
            "&deep_link_value=live" +
 | 
			
		||||
            "&deep_link_sub5=$roomId" +
 | 
			
		||||
            "&af_og_title=보이스온" +
 | 
			
		||||
            "&af_og_description=지금 보이스온에서 라이브 참여하기" +
 | 
			
		||||
            "&af_og_image=$coverImage"
 | 
			
		||||
        val params = mapOf(
 | 
			
		||||
            "af_dp" to "voiceon://",
 | 
			
		||||
            "deep_link_value" to "live",
 | 
			
		||||
            "deep_link_sub5" to "$roomId",
 | 
			
		||||
            "af_og_title" to "보이스온",
 | 
			
		||||
            "af_og_description" to "지금 보이스온에서 라이브 참여하기",
 | 
			
		||||
            "af_og_image" to coverImage
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        val shareUrl = Utils.createOneLinkUrl(params = params)
 | 
			
		||||
 | 
			
		||||
        val message = if (isPrivateRoom) {
 | 
			
		||||
            "${SharedPreferenceManager.nickname}님이 귀하를 " +
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
 | 
			
		||||
import io.reactivex.rxjava3.schedulers.Schedulers
 | 
			
		||||
import kr.co.vividnext.sodalive.base.BaseViewModel
 | 
			
		||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
 | 
			
		||||
import kr.co.vividnext.sodalive.common.Utils
 | 
			
		||||
import kr.co.vividnext.sodalive.live.LiveRepository
 | 
			
		||||
 | 
			
		||||
class LiveRoomDetailViewModel(private val repository: LiveRepository) : BaseViewModel() {
 | 
			
		||||
@@ -63,12 +64,15 @@ class LiveRoomDetailViewModel(private val repository: LiveRepository) : BaseView
 | 
			
		||||
        password: Int?,
 | 
			
		||||
        onSuccess: (String) -> Unit
 | 
			
		||||
    ) {
 | 
			
		||||
        val shareUrl = "https://voiceon.onelink.me/RkTm?" +
 | 
			
		||||
            "af_dp=voiceon://" +
 | 
			
		||||
            "&deep_link_value=live" +
 | 
			
		||||
            "&deep_link_sub5=$roomId" +
 | 
			
		||||
            "&af_og_title=보이스온" +
 | 
			
		||||
            "&af_og_description=지금 보이스온에서 라이브 참여하기"
 | 
			
		||||
        val params = mapOf(
 | 
			
		||||
            "af_dp" to "voiceon://",
 | 
			
		||||
            "deep_link_value" to "live",
 | 
			
		||||
            "deep_link_sub5" to "$roomId",
 | 
			
		||||
            "af_og_title" to "보이스온",
 | 
			
		||||
            "af_og_description" to "지금 보이스온에서 라이브 참여하기"
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        val shareUrl = Utils.createOneLinkUrl(params = params)
 | 
			
		||||
 | 
			
		||||
        val message = if (isPrivateRoom) {
 | 
			
		||||
            "${SharedPreferenceManager.nickname}님이 귀하를 " +
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user