diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/agora/RtcTokenBuilder.kt b/src/main/kotlin/kr/co/vividnext/sodalive/agora/RtcTokenBuilder.kt index c5b16771..76bc4955 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/agora/RtcTokenBuilder.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/agora/RtcTokenBuilder.kt @@ -34,15 +34,14 @@ class RtcTokenBuilder { appId: String, appCertificate: String, channelName: String, - uid: Int, + uid: String, privilegeTs: Int ): String { - val account = if (uid == 0) "" else uid.toString() return buildTokenWithUserAccount( appId, appCertificate, channelName, - account, + uid, privilegeTs ) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt b/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt index 7f8e3c5e..8e78ce2d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/i18n/SodaMessageSource.kt @@ -1578,6 +1578,21 @@ class SodaMessageSource { Lang.EN to "yyyy.MM.dd E hh:mm a", Lang.JA to "yyyy.MM.dd E hh:mm a" ), + "live.room.language_tag.korean" to mapOf( + Lang.KO to "한국어", + Lang.EN to "Korean", + Lang.JA to "韓国語" + ), + "live.room.language_tag.japanese" to mapOf( + Lang.KO to "일본어", + Lang.EN to "Japanese", + Lang.JA to "日本語" + ), + "live.room.language_tag.english" to mapOf( + Lang.KO to "영어", + Lang.EN to "English", + Lang.JA to "英語" + ), "live.room.fcm.message.started" to mapOf( Lang.KO to "라이브를 시작했습니다. - %s", Lang.EN to "Live started. - %s", diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt index 74cf8fa6..60653ff1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/LiveRoomService.kt @@ -154,13 +154,7 @@ class LiveRoomService( .maxByOrNull { it.updatedAt ?: LocalDateTime.MIN } ?.languageCode - val languageTag = when (languageCode?.lowercase()?.take(2)) { - "ko" -> "한국어" - "ja" -> "일본어" - "en" -> "영어" - else -> null - } - return languageTag + return resolveLanguageTag(languageCode) } private fun buildLanguageTagMap(memberIds: List): Map { @@ -175,15 +169,21 @@ class LiveRoomService( } return latestTokenByMemberId.mapValues { (_, token) -> - when (token?.languageCode?.lowercase()?.take(2)) { - "ko" -> "한국어" - "ja" -> "일본어" - "en" -> "영어" - else -> null - } + resolveLanguageTag(token?.languageCode) } } + private fun resolveLanguageTag(languageCode: String?): String? { + val key = when (languageCode?.lowercase()?.take(2)) { + "ko" -> "live.room.language_tag.korean" + "ja" -> "live.room.language_tag.japanese" + "en" -> "live.room.language_tag.english" + else -> null + } ?: return null + + return messageSource.getMessage(key, langContext.lang) + } + @Transactional(readOnly = true) fun getRoomList( dateString: String?, @@ -917,7 +917,7 @@ class LiveRoomService( agoraAppId, agoraAppCertificate, room.channelName!!, - member.id!!.toInt(), + member.id!!.toString(), expireTimestamp.toInt() ) @@ -928,10 +928,11 @@ class LiveRoomService( expireTimestamp.toInt() ) - val v2vWorkerRtmToken = rtmTokenBuilder.buildToken( + val v2vWorkerToken = rtcTokenBuilder.buildTokenWithUid( agoraAppId, agoraAppCertificate, - "v2v-agent-${member.id!!}", + room.channelName!!, + "${member.id!!}333", expireTimestamp.toInt() ) @@ -962,12 +963,12 @@ class LiveRoomService( } val menuPan = menuService.getLiveMenu(creatorId = room.member!!.id!!) - val languageTagByMemberId = buildLanguageTagMap(listOfNotNull(room.member?.id)) - - val tags = room.tags - .filter { it.tag.isActive } - .map { it.tag.tag } - .let { tags -> applyLanguageTagToRoomTags(room.member?.id, tags, languageTagByMemberId) } + val creatorLanguageCode = pushTokenRepository.findByMemberId(room.member!!.id!!) + .filterNot { it.languageCode.isNullOrBlank() } + .maxByOrNull { it.updatedAt ?: LocalDateTime.MIN } + ?.languageCode + ?.lowercase() + ?.take(2) return GetRoomInfoResponse( roomId = roomId, @@ -989,7 +990,7 @@ class LiveRoomService( channelName = room.channelName!!, rtcToken = rtcToken, rtmToken = rtmToken, - v2vWorkerRtmToken = v2vWorkerRtmToken, + v2vWorkerToken = v2vWorkerToken, creatorId = room.member!!.id!!, creatorNickname = room.member!!.nickname, creatorProfileUrl = if (room.member!!.profileImage != null) { @@ -1006,7 +1007,7 @@ class LiveRoomService( managerList = roomInfo.managerList, donationRankingTop3UserIds = donationRankingTop3UserIds, menuPan = menuPan?.menu ?: "", - tags = tags, + creatorLanguageCode = creatorLanguageCode, isPrivateRoom = room.type == LiveRoomType.PRIVATE, password = room.password, isActiveRoulette = isActiveRoulette diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt index b455b6ec..f7c6d743 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/room/info/GetRoomInfoResponse.kt @@ -8,7 +8,7 @@ data class GetRoomInfoResponse( val channelName: String, val rtcToken: String, val rtmToken: String, - val v2vWorkerRtmToken: String, + val v2vWorkerToken: String, val creatorId: Long, val creatorNickname: String, val creatorProfileUrl: String, @@ -21,7 +21,7 @@ data class GetRoomInfoResponse( val managerList: List, val donationRankingTop3UserIds: List, val menuPan: String, - val tags: List, + val creatorLanguageCode: String?, val isPrivateRoom: Boolean = false, val password: String? = null, val isActiveRoulette: Boolean = false