From 6c19f83cfb9cace4be8f8063f8f7ceb66fdc0b9c Mon Sep 17 00:00:00 2001 From: AllenTom Date: Sat, 30 Nov 2024 22:24:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=AA=E4=BA=BA=E8=B5=84?= =?UTF-8?q?=E6=96=99=E5=90=8C=E6=97=B6=E6=9B=B4=E6=96=B0=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/aiosman/ravenow/AppState.kt | 2 +- .../aiosman/ravenow/data/AccountService.kt | 3 ++- .../com/aiosman/ravenow/entity/Account.kt | 1 + .../ui/account/AccountEditViewModel.kt | 10 ++++++++- .../com/aiosman/ravenow/utils/TrtcHelper.kt | 22 +++++++++++++++++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/aiosman/ravenow/AppState.kt b/app/src/main/java/com/aiosman/ravenow/AppState.kt index 54aedfe..faf58a6 100644 --- a/app/src/main/java/com/aiosman/ravenow/AppState.kt +++ b/app/src/main/java/com/aiosman/ravenow/AppState.kt @@ -103,7 +103,7 @@ object AppState { val profile = accountService.getMyAccountProfile() val info = V2TIMUserFullInfo() info.setNickname(profile.nickName) - info.faceUrl = profile.avatar + info.faceUrl = profile.rawAvatar info.selfSignature = profile.bio return suspendCoroutine { continuation -> V2TIMManager.getInstance().setSelfInfo(info, object : V2TIMCallback { diff --git a/app/src/main/java/com/aiosman/ravenow/data/AccountService.kt b/app/src/main/java/com/aiosman/ravenow/data/AccountService.kt index 37fc8f3..74242b9 100644 --- a/app/src/main/java/com/aiosman/ravenow/data/AccountService.kt +++ b/app/src/main/java/com/aiosman/ravenow/data/AccountService.kt @@ -72,7 +72,8 @@ data class AccountProfile( } null }, - trtcUserId = trtcUserId + trtcUserId = trtcUserId, + rawAvatar = avatar ) } } diff --git a/app/src/main/java/com/aiosman/ravenow/entity/Account.kt b/app/src/main/java/com/aiosman/ravenow/entity/Account.kt index 367e50c..5f8784e 100644 --- a/app/src/main/java/com/aiosman/ravenow/entity/Account.kt +++ b/app/src/main/java/com/aiosman/ravenow/entity/Account.kt @@ -61,6 +61,7 @@ data class AccountProfileEntity( val banner: String?, // trtcUserId val trtcUserId: String, + val rawAvatar: String ) /** diff --git a/app/src/main/java/com/aiosman/ravenow/ui/account/AccountEditViewModel.kt b/app/src/main/java/com/aiosman/ravenow/ui/account/AccountEditViewModel.kt index 61228e5..1e111d7 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/account/AccountEditViewModel.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/account/AccountEditViewModel.kt @@ -12,6 +12,7 @@ import com.aiosman.ravenow.data.AccountServiceImpl import com.aiosman.ravenow.data.UploadImage import com.aiosman.ravenow.entity.AccountProfileEntity import com.aiosman.ravenow.ui.index.tabs.profile.MyProfileViewModel +import com.aiosman.ravenow.utils.TrtcHelper import java.io.File object AccountEditViewModel : ViewModel() { @@ -22,14 +23,21 @@ object AccountEditViewModel : ViewModel() { var profile by mutableStateOf(null) var croppedBitmap by mutableStateOf(null) var isUpdating by mutableStateOf(false) - suspend fun reloadProfile() { + suspend fun reloadProfile(updateTrtcProfile:Boolean = false) { accountService.getMyAccountProfile().let { profile = it name = it.nickName bio = it.bio + if (updateTrtcProfile) { + TrtcHelper.updateTrtcProfile( + it.nickName, + it.rawAvatar + ) + } } } + suspend fun updateUserProfile(context: Context) { val newAvatar = croppedBitmap?.let { val file = File(context.cacheDir, "avatar.jpg") diff --git a/app/src/main/java/com/aiosman/ravenow/utils/TrtcHelper.kt b/app/src/main/java/com/aiosman/ravenow/utils/TrtcHelper.kt index 186ca9f..5663ab3 100644 --- a/app/src/main/java/com/aiosman/ravenow/utils/TrtcHelper.kt +++ b/app/src/main/java/com/aiosman/ravenow/utils/TrtcHelper.kt @@ -1,6 +1,8 @@ package com.aiosman.ravenow.utils +import com.tencent.imsdk.v2.V2TIMCallback import com.tencent.imsdk.v2.V2TIMManager +import com.tencent.imsdk.v2.V2TIMUserFullInfo import com.tencent.imsdk.v2.V2TIMValueCallback import kotlin.coroutines.suspendCoroutine @@ -19,4 +21,24 @@ object TrtcHelper { }); } } + + suspend fun updateTrtcProfile( + avatar: String?, + nickName: String? + ) { + val info = V2TIMUserFullInfo() + nickName?.let { info.setNickname(it) } + avatar?.let { info.faceUrl = it } + return suspendCoroutine { continuation -> + V2TIMManager.getInstance().setSelfInfo(info, object : V2TIMCallback { + override fun onError(code: Int, desc: String?) { + continuation.resumeWith(Result.failure(Exception("Error $code: $desc"))) + } + + override fun onSuccess() { + continuation.resumeWith(Result.success(Unit)) + } + }) + } + } } \ No newline at end of file