添加Chat处理逻辑
This commit is contained in:
@@ -10,6 +10,8 @@ import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import com.aiosman.ravenow.data.AccountService
|
||||
import com.aiosman.ravenow.data.AccountServiceImpl
|
||||
import com.aiosman.ravenow.data.DictService
|
||||
import com.aiosman.ravenow.data.DictServiceImpl
|
||||
import com.aiosman.ravenow.entity.AccountProfileEntity
|
||||
import com.aiosman.ravenow.ui.favourite.FavouriteListViewModel
|
||||
import com.aiosman.ravenow.ui.favourite.FavouriteNoticeViewModel
|
||||
@@ -40,6 +42,7 @@ object AppState {
|
||||
var appTheme by mutableStateOf<AppThemeData>(LightThemeColors())
|
||||
var googleClientId: String? = null
|
||||
var enableGoogleLogin: Boolean = false
|
||||
var enableChat = false
|
||||
suspend fun initWithAccount(scope: CoroutineScope, context: Context) {
|
||||
val accountService: AccountService = AccountServiceImpl()
|
||||
// 获取用户认证信息
|
||||
@@ -62,6 +65,19 @@ object AppState {
|
||||
|
||||
// 注册 JPush
|
||||
Messaging.registerDevice(scope, context)
|
||||
initChat(context)
|
||||
}
|
||||
|
||||
private suspend fun initChat(context: Context){
|
||||
val dictService :DictService = DictServiceImpl()
|
||||
val enableItem = dictService.getDictByKey(ConstVars.DICT_KEY_ENABLE_TRTC)
|
||||
val isEnableTrtc = enableItem.value as? Boolean
|
||||
if (isEnableTrtc != true) {
|
||||
enableChat = false
|
||||
return
|
||||
}
|
||||
val accountService: AccountService = AccountServiceImpl()
|
||||
|
||||
// 注册 Trtc
|
||||
val config = V2TIMSDKConfig()
|
||||
|
||||
@@ -82,8 +98,10 @@ object AppState {
|
||||
context.startService(
|
||||
Intent(context, TrtcService::class.java)
|
||||
)
|
||||
enableChat = true
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
enableChat = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +111,6 @@ object AppState {
|
||||
override fun onError(code: Int, desc: String?) {
|
||||
continuation.resumeWith(Result.failure(Exception("Login failed: $code, $desc")))
|
||||
}
|
||||
|
||||
override fun onSuccess() {
|
||||
continuation.resumeWith(Result.success(true))
|
||||
}
|
||||
|
||||
@@ -31,5 +31,11 @@ object ConstVars {
|
||||
const val DICT_KEY_PRIVATE_POLICY_URL = "private_policy"
|
||||
// 重置邮箱间隔
|
||||
const val DIC_KEY_RESET_EMAIL_INTERVAL = "send_reset_password_timeout"
|
||||
// 开启google登录
|
||||
const val DICT_KEY_ENABLE_GOOGLE_LOGIN = "enable_google_login"
|
||||
// google登录clientid
|
||||
const val DICT_KEY_GOOGLE_LOGIN_CLIENT_ID = "google_login_client_id"
|
||||
// trtc功能开启
|
||||
const val DICT_KEY_ENABLE_TRTC = "enable_chat"
|
||||
}
|
||||
|
||||
|
||||
@@ -69,12 +69,12 @@ fun NotificationsScreen() {
|
||||
val context = LocalContext.current
|
||||
val state = rememberPullRefreshState(MessageListViewModel.isLoading, onRefresh = {
|
||||
MessageListViewModel.viewModelScope.launch {
|
||||
MessageListViewModel.initData(context, force = true)
|
||||
MessageListViewModel.initData(context, force = true, loadChat = AppState.enableChat)
|
||||
}
|
||||
})
|
||||
LaunchedEffect(Unit) {
|
||||
systemUiController.setNavigationBarColor(Color.Transparent)
|
||||
MessageListViewModel.initData(context)
|
||||
MessageListViewModel.initData(context, loadChat = AppState.enableChat)
|
||||
}
|
||||
Column(
|
||||
modifier = Modifier.fillMaxSize()
|
||||
@@ -129,12 +129,13 @@ fun NotificationsScreen() {
|
||||
}
|
||||
}
|
||||
HorizontalDivider(color = AppColors.divider, modifier = Modifier.padding(16.dp))
|
||||
// NotificationCounterItem(MessageListViewModel.unReadConversationCount.toInt())
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.fillMaxWidth()
|
||||
.fillMaxWidth(),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
if (AppState.enableChat){
|
||||
ChatMessageList(
|
||||
MessageListViewModel.chatList,
|
||||
onUserAvatarClick = { conv ->
|
||||
@@ -143,6 +144,15 @@ fun NotificationsScreen() {
|
||||
) { conv ->
|
||||
MessageListViewModel.goToChat(conv, navController)
|
||||
}
|
||||
}else{
|
||||
// center text
|
||||
Text(
|
||||
text = "Chat service is under maintenance",
|
||||
color = AppColors.text,
|
||||
fontSize = 16.sp
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
PullRefreshIndicator(
|
||||
|
||||
@@ -83,9 +83,12 @@ object MessageListViewModel : ViewModel() {
|
||||
var isLoading by mutableStateOf(false)
|
||||
var unReadConversationCount by mutableStateOf(0L)
|
||||
var isFirstLoad = true
|
||||
suspend fun initData(context: Context, force: Boolean = false) {
|
||||
suspend fun initData(context: Context, force: Boolean = false, loadChat: Boolean = false) {
|
||||
if (loadChat) {
|
||||
loadChatList(context)
|
||||
loadUnreadCount()
|
||||
}
|
||||
|
||||
if (!isFirstLoad && !force) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Add
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
@@ -427,7 +428,7 @@ fun ProfileV3(
|
||||
contentScale = ContentScale.Crop
|
||||
)
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
androidx.compose.material3.Text(
|
||||
Text(
|
||||
text = profile?.nickName ?: "",
|
||||
fontSize = 16.sp,
|
||||
fontWeight = FontWeight.W600,
|
||||
|
||||
@@ -24,6 +24,7 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import com.aiosman.ravenow.AppState
|
||||
import com.aiosman.ravenow.LocalAppTheme
|
||||
import com.aiosman.ravenow.R
|
||||
import com.aiosman.ravenow.entity.AccountProfileEntity
|
||||
@@ -76,6 +77,7 @@ fun OtherProfileAction(
|
||||
)
|
||||
|
||||
}
|
||||
if (AppState.enableChat) {
|
||||
Spacer(modifier = Modifier.width(8.dp))
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
@@ -105,6 +107,8 @@ fun OtherProfileAction(
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 按钮
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user