라이브, 콘텐츠, 채널 공유하기
- 파라미터 키, 값 각각 인코딩 적용
This commit is contained in:
		| @@ -35,7 +35,7 @@ android { | ||||
|         applicationId "kr.co.vividnext.sodalive" | ||||
|         minSdk 23 | ||||
|         targetSdk 34 | ||||
|         versionCode 148 | ||||
|         versionCode 149 | ||||
|         versionName "1.30.0" | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -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