diff --git a/app/build.gradle b/app/build.gradle index ca6a0e5..d17f855 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -139,7 +139,6 @@ dependencies { // Firebase implementation platform('com.google.firebase:firebase-bom:32.2.2') - implementation 'com.google.firebase:firebase-dynamic-links-ktx' implementation 'com.google.firebase:firebase-crashlytics-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-messaging-ktx' diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailActivity.kt index 6544d65..d6f82f9 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailActivity.kt @@ -122,6 +122,7 @@ class AudioContentDetailActivity : BaseActivity Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") - } - ) - ) - } - - fun unRegisterNotification(contentId: Long, creatorId: Long) { - isLoading.value = true - compositeDisposable.add( - repository.unRegisterNotification( - creatorId, - "Bearer ${SharedPreferenceManager.token}" - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - { - if (it.success && it.data != null) { - getAudioContentDetail(contentId) - } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } - } - isLoading.value = false - }, - { - isLoading.value = false - it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") - } - ) - ) - } - fun toggleExpandDetail() { _isExpandDetail.value = !_isExpandDetail.value!! } @@ -371,40 +296,6 @@ class AudioContentDetailViewModel( ) } - fun shareAudioContent( - audioContentId: Long, - contentImage: String, - contentTitle: String, - onSuccess: (String) -> Unit - ) { - isLoading.value = true - Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { - link = Uri.parse("https://sodalive.net/?audio_content_id=$audioContentId") - domainUriPrefix = "https://sodalive.page.link" - androidParameters { } - iosParameters("kr.co.vividnext.sodalive") { - appStoreId = "6461721697" - } - socialMetaTagParameters { - title = contentTitle - description = "지금 보이스온에서 이 콘텐츠 감상하기" - imageUrl = contentImage.toUri() - } - }.addOnSuccessListener { - val uri = it.shortLink - if (uri != null) { - val message = uri.toString() - onSuccess(message) - } else { - _toastLiveData.postValue("공유링크를 생성하지 못했습니다.\n다시 시도해 주세요.") - } - }.addOnFailureListener { - _toastLiveData.postValue("공유링크를 생성하지 못했습니다.\n다시 시도해 주세요.") - }.addOnCompleteListener { - isLoading.value = false - } - } - fun deleteAudioContent(audioContentId: Long, onSuccess: () -> Unit) { isLoading.value = true 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 3d71e2f..f0d7ea4 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 @@ -116,16 +116,7 @@ class UserProfileActivity : BaseActivity( binding.ivMenu, ) } - binding.layoutUserProfile.ivShare.setOnClickListener { - viewModel.shareChannel(userId = userId) { - val intent = Intent(Intent.ACTION_SEND) - intent.type = "text/plain" - intent.putExtra(Intent.EXTRA_TEXT, it) - - val shareIntent = Intent.createChooser(intent, "채널 공유") - startActivity(shareIntent) - } - } + binding.layoutUserProfile.ivShare.setOnClickListener {} setupLiveView() setupDonationView() @@ -621,7 +612,7 @@ class UserProfileActivity : BaseActivity( binding.tvContentCount.text = activitySummary.contentCount.moneyFormat() } - @SuppressLint("NotifyDataSetChanged") + @SuppressLint("NotifyDataSetChanged", "SetTextI18n") private fun setCheers(cheers: GetCheersResponse) { binding.layoutUserProfileFanTalk.etCheer.setText("") cheersAdapter.items.clear() 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 f65d6bd..ee369de 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 @@ -1,14 +1,7 @@ package kr.co.vividnext.sodalive.explorer.profile -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.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers @@ -181,39 +174,6 @@ class UserProfileViewModel( ) } - fun unFollow(creatorId: Long) { - _isLoading.value = true - compositeDisposable.add( - userRepository.creatorUnFollow( - creatorId, - "Bearer ${SharedPreferenceManager.token}" - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe( - { - if (it.success && it.data != null) { - getCreatorProfile(creatorId) - } else { - if (it.message != null) { - _toastLiveData.postValue(it.message) - } else { - _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." - ) - } - } - _isLoading.value = false - }, - { - _isLoading.value = false - it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") - } - ) - ) - } - fun writeCheers(parentCheersId: Long? = null, creatorId: Long, cheersContent: String) { if (cheersContent.isBlank()) { _toastLiveData.postValue("내용을 입력하세요") @@ -306,27 +266,6 @@ class UserProfileViewModel( ) } - fun shareChannel(userId: Long, onSuccess: (String) -> Unit) { - _isLoading.value = true - Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { - link = Uri.parse("https://sodalive.net/?channel_id=$userId") - domainUriPrefix = "https://sodalive.page.link" - androidParameters { } - iosParameters("kr.co.vividnext.sodalive") { - appStoreId = "6461721697" - } - }.addOnSuccessListener { - val uri = it.shortLink - if (uri != null) { - onSuccess("보이스온 ${creatorNickname}님의 채널입니다.\n$uri") - } - }.addOnFailureListener { - _toastLiveData.postValue("공유링크를 생성하지 못했습니다.\n다시 시도해 주세요.") - }.addOnCompleteListener { - _isLoading.value = false - } - } - fun userBlock(userId: Long) { _isLoading.value = true compositeDisposable.add( 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 2eb7093..e688b0c 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 @@ -1001,20 +1001,7 @@ 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) - } - } + binding.ivShare.setOnClickListener {} if (response.creatorId == SharedPreferenceManager.userId) { binding.llViewUsers.visibility = View.VISIBLE 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 7312568..6feb472 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,12 +3,6 @@ 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 @@ -301,43 +295,6 @@ 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/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt index 46f44dc..2de0f85 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/detail/LiveRoomDetailFragment.kt @@ -349,17 +349,5 @@ class LiveRoomDetailFragment( } private fun shareRoom(response: GetRoomDetailResponse) { - 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) - } } } 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 361efa6..862773e 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 @@ -1,14 +1,7 @@ package kr.co.vividnext.sodalive.live.room.detail -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.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers @@ -63,41 +56,4 @@ class LiveRoomDetailViewModel(private val repository: LiveRepository) : BaseView ) ) } - - fun shareRoomLink( - roomId: Long, - isPrivateRoom: Boolean, - password: Int?, - 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 - } - } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt index 0b1b39f..a5c88d4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt @@ -9,10 +9,7 @@ import android.os.Looper import android.widget.ImageView import androidx.annotation.OptIn import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.os.bundleOf import androidx.media3.common.util.UnstableApi -import com.google.firebase.dynamiclinks.PendingDynamicLinkData -import com.google.firebase.dynamiclinks.ktx.dynamicLinks import com.google.firebase.ktx.Firebase import com.google.firebase.remoteconfig.ktx.get import com.google.firebase.remoteconfig.ktx.remoteConfig @@ -98,7 +95,7 @@ class SplashActivity : BaseActivity(ActivitySplashBinding } } } else { - checkFirebaseDynamicLink() + startNextActivity() } } } @@ -121,10 +118,10 @@ class SplashActivity : BaseActivity(ActivitySplashBinding } else if (latestMajor == major && latestMinor == minor && latestPatch > patch) { showUpdateDialog(isEssential = false) } else { - checkFirebaseDynamicLink() + startNextActivity() } } else { - checkFirebaseDynamicLink() + startNextActivity() } } @@ -136,7 +133,7 @@ class SplashActivity : BaseActivity(ActivitySplashBinding } val cancelButtonClick = if (!isEssential) { - { checkFirebaseDynamicLink() } + { startNextActivity() } } else { null } @@ -165,49 +162,7 @@ class SplashActivity : BaseActivity(ActivitySplashBinding ).show(screenWidth) } - private fun checkFirebaseDynamicLink() { - Firebase.dynamicLinks - .getDynamicLink(intent) - .addOnSuccessListener(this) { getDynamicLinkSuccess(it) } - .addOnFailureListener(this) { getDynamicLinkFailure() } - } - - private fun getDynamicLinkSuccess(pendingDynamicLinkData: PendingDynamicLinkData?) { - var deepLink: Uri? = null - if (pendingDynamicLinkData != null) { - deepLink = pendingDynamicLinkData.link - } - - val extras = if (deepLink != null) { - val roomIdString = deepLink.getQueryParameter("room_id") - val channelIdString = deepLink.getQueryParameter("channel_id") - val audioContentIdString = deepLink.getQueryParameter("audio_content_id") - - if (roomIdString != null) { - bundleOf( - Constants.EXTRA_ROOM_ID to roomIdString.toLong() - ) - } else if (channelIdString != null) { - bundleOf( - Constants.EXTRA_USER_ID to channelIdString.toLong() - ) - } else if (audioContentIdString != null) { - bundleOf( - Constants.EXTRA_AUDIO_CONTENT_ID to audioContentIdString.toLong() - ) - } else { - null - } - } else if (intent.extras != null) { - intent.extras - } else { - null - } - - startNextActivity(extras = extras) - } - - private fun getDynamicLinkFailure() { + private fun startNextActivity() { val extras = intent.getBundleExtra(Constants.EXTRA_DATA) ?: if (intent.extras != null) { intent.extras @@ -215,10 +170,6 @@ class SplashActivity : BaseActivity(ActivitySplashBinding null } - startNextActivity(extras = extras) - } - - private fun startNextActivity(extras: Bundle? = null) { if (SharedPreferenceManager.isViewedOnboardingTutorial) { if (SharedPreferenceManager.token.isBlank()) { showLoginActivity(extras)