From c0956b3b94f50a09071cba888989e633828b906d Mon Sep 17 00:00:00 2001 From: AllenTom Date: Sat, 12 Oct 2024 10:07:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=87=BA=E6=97=B6=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/aiosman/riderpro/AppState.kt | 3 +-- .../main/java/com/aiosman/riderpro/Const.kt | 3 ++- .../java/com/aiosman/riderpro/Messaging.kt | 13 +++++++++++- .../aiosman/riderpro/data/AccountService.kt | 10 +++++++++ .../aiosman/riderpro/data/api/RiderProAPI.kt | 18 +++++++++++++--- .../index/tabs/profile/MyProfileViewModel.kt | 21 +++++++++++++------ .../ui/index/tabs/profile/ProfileWrap.kt | 5 +---- 7 files changed, 56 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/aiosman/riderpro/AppState.kt b/app/src/main/java/com/aiosman/riderpro/AppState.kt index a76900d..711a5e0 100644 --- a/app/src/main/java/com/aiosman/riderpro/AppState.kt +++ b/app/src/main/java/com/aiosman/riderpro/AppState.kt @@ -49,7 +49,7 @@ object AppState { UserId = resp.id // 注册 JPush - Messaging.RegistDevice(scope, context) + Messaging.registerDevice(scope, context) // 注册 Trtc val config = V2TIMSDKConfig() @@ -140,6 +140,5 @@ object AppState { TrtcService::class.java ) context.stopService(trtcService) - } } \ No newline at end of file diff --git a/app/src/main/java/com/aiosman/riderpro/Const.kt b/app/src/main/java/com/aiosman/riderpro/Const.kt index 836c90e..f1a2a63 100644 --- a/app/src/main/java/com/aiosman/riderpro/Const.kt +++ b/app/src/main/java/com/aiosman/riderpro/Const.kt @@ -5,8 +5,9 @@ import android.content.Context object ConstVars { // api 地址 // const val BASE_SERVER = "http://192.168.31.130:8088" + const val BASE_SERVER = "http://192.168.142.140:8088" // const val BASE_SERVER = "https://8.137.22.101:8088" - const val BASE_SERVER = "https://rider-pro.aiosman.com/beta_api" +// const val BASE_SERVER = "https://rider-pro.aiosman.com/beta_api" const val MOMENT_LIKE_CHANNEL_ID = "moment_like" const val MOMENT_LIKE_CHANNEL_NAME = "Moment Like" diff --git a/app/src/main/java/com/aiosman/riderpro/Messaging.kt b/app/src/main/java/com/aiosman/riderpro/Messaging.kt index 689a67a..e0b080e 100644 --- a/app/src/main/java/com/aiosman/riderpro/Messaging.kt +++ b/app/src/main/java/com/aiosman/riderpro/Messaging.kt @@ -11,12 +11,17 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch object Messaging { - fun RegistDevice(scope: CoroutineScope, context: Context) { + fun registerDevice(scope: CoroutineScope, context: Context) { registerJpush(scope, context) // registerFCM(scope) } + suspend fun unregisterDevice(context: Context) { + unregisterJpush(context) + } + + fun registerJpush(scope: CoroutineScope, context: Context) { val accountService: AccountService = AccountServiceImpl() val regId = JPushInterface.getRegistrationID(context) @@ -25,6 +30,12 @@ object Messaging { } } + private suspend fun unregisterJpush(context: Context) { + val accountService: AccountService = AccountServiceImpl() + val regId = JPushInterface.getRegistrationID(context) + accountService.unregisterMessageChannel(client = "jpush", identifier = regId) + } + fun registerFCM(scope: CoroutineScope) { val accountService: AccountService = AccountServiceImpl() FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> diff --git a/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt b/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt index 94961e0..30618e3 100644 --- a/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt +++ b/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt @@ -11,6 +11,7 @@ import com.aiosman.riderpro.data.api.RegisterMessageChannelRequestBody import com.aiosman.riderpro.data.api.RegisterRequestBody import com.aiosman.riderpro.data.api.ResetPasswordRequestBody import com.aiosman.riderpro.data.api.TrtcSignResponseBody +import com.aiosman.riderpro.data.api.UnRegisterMessageChannelRequestBody import com.aiosman.riderpro.data.api.UpdateNoticeRequestBody import com.aiosman.riderpro.data.api.UpdateUserLangRequestBody import com.aiosman.riderpro.entity.AccountFavouriteEntity @@ -360,6 +361,11 @@ interface AccountService { */ suspend fun registerMessageChannel(client: String, identifier: String) + /** + * 取消注册消息通道 + */ + suspend fun unregisterMessageChannel(client: String, identifier: String) + /** * 重置密码 */ @@ -501,6 +507,10 @@ class AccountServiceImpl : AccountService { ApiClient.api.registerMessageChannel(RegisterMessageChannelRequestBody(client, identifier)) } + override suspend fun unregisterMessageChannel(client: String, identifier: String) { + ApiClient.api.unRegisterMessageChannel(UnRegisterMessageChannelRequestBody(client, identifier)) + } + override suspend fun resetPassword(email: String) { val resp = ApiClient.api.resetPassword( ResetPasswordRequestBody( diff --git a/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt b/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt index 97acccf..d3211ec 100644 --- a/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt +++ b/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt @@ -28,9 +28,8 @@ data class RegisterRequestBody( @SerializedName("username") val username: String, @SerializedName("password") - val password: String, - - ) + val password: String +) data class LoginUserRequestBody( @SerializedName("username") @@ -96,6 +95,12 @@ data class RegisterMessageChannelRequestBody( val identifier: String, ) +data class UnRegisterMessageChannelRequestBody( + @SerializedName("client") + val client: String, + @SerializedName("identifier") + val identifier: String, +) data class ResetPasswordRequestBody( @SerializedName("username") val username: String, @@ -151,10 +156,12 @@ data class CheckLoginCaptchaRequestBody( @SerializedName("username") val username: String, ) + data class GenerateLoginCaptchaRequestBody( @SerializedName("username") val username: String, ) + data class DotPosition( @SerializedName("index") val index: Int, @@ -163,6 +170,7 @@ data class DotPosition( @SerializedName("y") val y: Int, ) + data class CaptchaInfo( @SerializedName("id") val id: Int, @@ -318,6 +326,10 @@ interface RiderProAPI { @Body body: RegisterMessageChannelRequestBody ): Response + @POST("account/my/messaging/unregister") + suspend fun unRegisterMessageChannel( + @Body body: UnRegisterMessageChannelRequestBody + ): Response @GET("profile/{id}") suspend fun getAccountProfileById( diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt index 349fb19..44b06fe 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt @@ -12,8 +12,12 @@ import androidx.paging.Pager import androidx.paging.PagingConfig import androidx.paging.PagingData import androidx.paging.cachedIn +import cn.jpush.android.api.JPushInterface import com.aiosman.riderpro.AppState import com.aiosman.riderpro.AppStore +import com.aiosman.riderpro.JpushService +import com.aiosman.riderpro.Messaging +import com.aiosman.riderpro.data.AccountProfile import com.aiosman.riderpro.data.AccountService import com.aiosman.riderpro.data.AccountServiceImpl import com.aiosman.riderpro.data.MomentService @@ -73,13 +77,18 @@ object MyProfileViewModel : ViewModel() { } } - suspend fun logout(context: Context) { - AppStore.apply { - token = null - rememberMe = false - saveData() + fun logout(context: Context) { + viewModelScope.launch { + Messaging.unregisterDevice(context) + AppStore.apply { + token = null + rememberMe = false + saveData() + } + // 删除推送渠道 + AppState.ReloadAppState(context) } - AppState.ReloadAppState(context) + } fun updateUserProfileBanner(bannerImageUrl: Uri?,file:File, context: Context) { diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/ProfileWrap.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/ProfileWrap.kt index e14508e..13b74e1 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/ProfileWrap.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/ProfileWrap.kt @@ -19,10 +19,7 @@ fun ProfileWrap( MyProfileViewModel.updateUserProfileBanner(uri, file, context) }, onLogout = { - MyProfileViewModel.viewModelScope.launch { - MyProfileViewModel.logout(context) - } - + MyProfileViewModel.logout(context) }, profile = MyProfileViewModel.profile, sharedFlow = MyProfileViewModel.sharedFlow