From 7885200af46b5e49bf3554b60900ca42154b1dfc Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 7 Mar 2025 02:50:36 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C,=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0,=20=EC=B1=84=EB=84=90=20=EA=B3=B5=EC=9C=A0?= =?UTF-8?q?=ED=95=98=EA=B8=B0=20-=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0?= =?UTF-8?q?=20=ED=82=A4,=20=EA=B0=92=20=EA=B0=81=EA=B0=81=20=EC=9D=B8?= =?UTF-8?q?=EC=BD=94=EB=94=A9=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../detail/AudioContentDetailViewModel.kt | 18 +++++++++++------- .../kr/co/vividnext/sodalive/common/Utils.kt | 12 ++++++++++++ .../explorer/profile/UserProfileViewModel.kt | 18 ++++++++++-------- .../sodalive/live/room/LiveRoomViewModel.kt | 18 +++++++++++------- .../room/detail/LiveRoomDetailViewModel.kt | 16 ++++++++++------ 6 files changed, 55 insertions(+), 29 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 960cb72..cf11005 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,7 +35,7 @@ android { applicationId "kr.co.vividnext.sodalive" minSdk 23 targetSdk 34 - versionCode 148 + versionCode 149 versionName "1.30.0" } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailViewModel.kt index fc086dc..7ecb1e4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailViewModel.kt @@ -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) } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/Utils.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/Utils.kt index bd638f7..29c7ae3 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/common/Utils.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/Utils.kt @@ -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 { + 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" + } } 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 6b0e214..1165642 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 @@ -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") } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt index 1bf82fe..9c382a6 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt @@ -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}님이 귀하를 " + diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt index a6b941a..1fdd484 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailViewModel.kt @@ -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}님이 귀하를 " +