From c9f6088754d1aee7f70729709233754f622214fa Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 27 Jun 2024 19:28:49 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20-=20?= =?UTF-8?q?=EA=B3=B5=EC=9C=A0=ED=95=98=EA=B8=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/live/room/LiveRoomActivity.kt | 15 +++++++ .../sodalive/live/room/LiveRoomViewModel.kt | 43 +++++++++++++++++++ .../main/res/layout/activity_live_room.xml | 10 +++++ 3 files changed, 68 insertions(+) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt index 04db47b..13ed160 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt @@ -796,6 +796,21 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB binding.ivEdit.visibility = View.GONE } + binding.ivShare.setOnClickListener { + viewModel.shareRoomLink( + response.roomId, + response.isPrivateRoom, + response.password + ) { + val intent = Intent(Intent.ACTION_SEND) + intent.type = "text/plain" + intent.putExtra(Intent.EXTRA_TEXT, it) + + val shareIntent = Intent.createChooser(intent, "라이브 공유") + startActivity(shareIntent) + } + } + if (response.creatorId == SharedPreferenceManager.userId) { binding.llViewUsers.visibility = View.VISIBLE binding.llViewUsers.setOnClickListener { roomProfileDialog.show() } 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 4be39f7..6579b56 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 @@ -3,6 +3,12 @@ package kr.co.vividnext.sodalive.live.room import android.net.Uri import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData +import com.google.firebase.dynamiclinks.ShortDynamicLink +import com.google.firebase.dynamiclinks.ktx.androidParameters +import com.google.firebase.dynamiclinks.ktx.dynamicLinks +import com.google.firebase.dynamiclinks.ktx.iosParameters +import com.google.firebase.dynamiclinks.ktx.shortLinkAsync +import com.google.firebase.ktx.Firebase import com.google.gson.Gson import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers @@ -247,6 +253,43 @@ class LiveRoomViewModel( ) } + fun shareRoomLink( + roomId: Long, + isPrivateRoom: Boolean, + password: String?, + onSuccess: (String) -> Unit + ) { + _isLoading.value = true + Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { + link = Uri.parse("https://sodalive.net/?room_id=$roomId") + domainUriPrefix = "https://sodalive.page.link" + androidParameters { } + iosParameters("kr.co.vividnext.sodalive") { + appStoreId = "6461721697" + } + }.addOnSuccessListener { + val uri = it.shortLink + if (uri != null) { + val message = if (isPrivateRoom) { + "${SharedPreferenceManager.nickname}님이 귀하를 " + + "소다라이브의 비공개라이브에 초대하였습니다.\n" + + "※ 라이브 참여: $uri\n" + + "(입장 비밀번호 : $password)" + } else { + "${SharedPreferenceManager.nickname}님이 귀하를 " + + "소다라이브의 공개라이브에 초대하였습니다.\n" + + "※ 라이브 참여: $uri" + } + + onSuccess(message) + } + }.addOnFailureListener { + _toastLiveData.postValue("공유링크를 생성하지 못했습니다.\n다시 시도해 주세요.") + }.addOnCompleteListener { + _isLoading.value = false + } + } + fun creatorFollow(creatorId: Long, roomId: Long, isGetUserProfile: Boolean = false) { _isLoading.value = true compositeDisposable.add( diff --git a/app/src/main/res/layout/activity_live_room.xml b/app/src/main/res/layout/activity_live_room.xml index 372c2bd..209ebf2 100644 --- a/app/src/main/res/layout/activity_live_room.xml +++ b/app/src/main/res/layout/activity_live_room.xml @@ -242,6 +242,16 @@ android:textSize="12sp" tools:ignore="SmallSp" /> + +