From 0544eb3c966878317201f6eabdc48edaec10d53d Mon Sep 17 00:00:00 2001 From: WaitFme Date: Tue, 14 Nov 2023 19:32:53 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E7=99=BB=E9=99=86=E9=97=AA?= =?UTF-8?q?=E9=80=80=202.=E8=AF=84=E8=AE=BA=E5=8C=BA=E7=8E=B0=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 46 ++++++++- .../data/remote/service/Api2Service.kt | 2 + .../coolbbsyou/ui/host/screen/LoginScreen.kt | 2 +- .../anpe/coolbbsyou/ui/main/MainActivity.kt | 14 --- .../anpe/coolbbsyou/ui/main/MainViewModel.kt | 93 +++++++++++-------- .../anpe/coolbbsyou/util/TokenDeviceUtils.kt | 10 +- 6 files changed, 107 insertions(+), 60 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 73c3803..01939ae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/anpe/coolbbsyou/data/remote/service/Api2Service.kt b/app/src/main/java/com/anpe/coolbbsyou/data/remote/service/Api2Service.kt index a9c79f0..66c577a 100644 --- a/app/src/main/java/com/anpe/coolbbsyou/data/remote/service/Api2Service.kt +++ b/app/src/main/java/com/anpe/coolbbsyou/data/remote/service/Api2Service.kt @@ -1,6 +1,7 @@ package com.anpe.coolbbsyou.data.remote.service import android.content.Context +import android.os.Build import com.anpe.coolbbsyou.constant.Constants import com.anpe.coolbbsyou.data.remote.cookie.CookieManager import com.anpe.coolbbsyou.data.remote.domain.details.DetailsModel @@ -30,6 +31,7 @@ interface Api2Service { .callTimeout(5, TimeUnit.SECONDS) .addInterceptor { val request = it.request().newBuilder() + .addHeader(Constants.USER_AGENT_KEY, "${System.getProperty("http.agent")} (#Build; ${Build.BRAND}; ${Build.MODEL}; ${Build.DISPLAY}; ${Build.VERSION.RELEASE}) +CoolMarket/13.3.6-2310232-universal") .addHeader(Constants.DEVICE_CODE_KEY, deviceCode) .addHeader(Constants.DEVICE_TOKEN_KEY, deviceCode.getTokenV2()) .addHeader(Constants.REQUEST_WIDTH_KEY, Constants.REQUEST_WIDTH_VALUE) diff --git a/app/src/main/java/com/anpe/coolbbsyou/ui/host/screen/LoginScreen.kt b/app/src/main/java/com/anpe/coolbbsyou/ui/host/screen/LoginScreen.kt index f7df297..0821d23 100644 --- a/app/src/main/java/com/anpe/coolbbsyou/ui/host/screen/LoginScreen.kt +++ b/app/src/main/java/com/anpe/coolbbsyou/ui/host/screen/LoginScreen.kt @@ -264,7 +264,7 @@ fun LoginScreen(navControllerScreen: NavHostController, viewModel: MainViewModel if (it.loginModel.status == 1) { configSp.edit().putBoolean("LOGIN_STATUS", true).apply() viewModel.channel.send(MainEvent.GetProfile(it.loginModel.sESSION.uid)) - navControllerScreen.popBackStack() +// navControllerScreen.popBackStack() context.showToast("登陆成功!") } else { context.showToast("账号或密码错误!${it.loginModel.status}") diff --git a/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainActivity.kt b/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainActivity.kt index 53450d5..a010020 100644 --- a/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainActivity.kt +++ b/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainActivity.kt @@ -2,32 +2,20 @@ package com.anpe.coolbbsyou.ui.main import android.os.Bundle import androidx.activity.ComponentActivity -import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent -import androidx.compose.foundation.ExperimentalFoundationApi -import androidx.compose.foundation.background import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.pager.HorizontalPager -import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass -import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext import androidx.core.view.WindowCompat import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import coil.compose.AsyncImage -import coil.request.ImageRequest import com.anpe.coolbbsyou.ui.host.screen.ImageScreen import com.anpe.coolbbsyou.ui.host.screen.LoginScreen import com.anpe.coolbbsyou.ui.host.screen.MainScreen @@ -40,8 +28,6 @@ import com.anpe.coolbbsyou.ui.host.screen.SplashScreen import com.anpe.coolbbsyou.ui.host.screen.TopicScreen import com.anpe.coolbbsyou.ui.host.screen.manager.ScreenManager import com.anpe.coolbbsyou.ui.theme.CoolbbsYouTheme -import com.anpe.coolbbsyou.util.ToastUtils.Companion.showToast -import com.anpe.coolbbsyou.util.Utils.Companion.clickableNoRipple import com.google.accompanist.adaptive.calculateDisplayFeatures import com.google.accompanist.systemuicontroller.rememberSystemUiController diff --git a/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainViewModel.kt b/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainViewModel.kt index f4c9c9b..01cfb27 100644 --- a/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainViewModel.kt +++ b/app/src/main/java/com/anpe/coolbbsyou/ui/main/MainViewModel.kt @@ -223,7 +223,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { ).flow.cachedIn(viewModelScope) _indexState.emit(IndexState.Success(pagingDataFlow)) } catch (e: Exception) { - _indexState.emit(IndexState.Error(e.toString() ?: "error")) + _indexState.emit(IndexState.Error(e.message())) } } } @@ -257,7 +257,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { try { DetailsState.Success(repository.getDetails(id = id)) } catch (e: Exception) { - DetailsState.Error(e.localizedMessage ?: "error") + DetailsState.Error(e.message()) } ) } @@ -272,11 +272,9 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { _suggestState.emit(SuggestState.Loading) _suggestState.emit( try { - Log.d("TAG", "getSuggestSearch: $keyword") SuggestState.Success(repository.getSuggestSearch(keyword = keyword)) } catch (e: Exception) { - Log.d("TAG", "getSuggestSearch: $e") - SuggestState.Error("${e.localizedMessage ?: "UNKNOWN ERROR"}; keyword: $keyword") + SuggestState.Error("${e.message()}; keyword: $keyword") } ) } @@ -303,7 +301,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { ) }.await()) } catch (e: Exception) { - SearchState.Error(e.localizedMessage ?: "UNKNOWN") + SearchState.Error(e.message()) } ) } @@ -321,7 +319,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { try { TodayState.Success(repository.getTodayCool(page, url)) } catch (e: Exception) { - TodayState.Error(e.localizedMessage ?: "UNKNOWN") + TodayState.Error(e.message()) } ) } @@ -342,7 +340,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { Log.d(TAG, "loginAccount: $postAccount") LoginState.Success(postAccount) } catch (e: Exception) { - LoginState.Error(e.localizedMessage ?: "UNKNOWN") + LoginState.Error(e.message()) } ) } @@ -353,6 +351,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { */ private fun logoutAccount() { configSp.edit().putBoolean("LOGIN_STATUS", false).apply() + _globalState.value.isLogin = false userInfoSp.edit().clear().apply() MyCookieStore().removeAll() } @@ -366,9 +365,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { try { val loginInfoModel = repository.getLoginInfo() - var loginStatus = false - - Log.d(TAG, "getLoginInfo: $loginInfoModel") + val loginStatus: Boolean if (loginInfoModel.error == -1) { loginStatus = false @@ -378,9 +375,11 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { userInfoSp.edit().putInt("UID", loginInfoModel.data.uid.toInt()).apply() _loginInfoState.emit(LoginInfoState.Success(loginInfoModel)) } + + _globalState.value.isLogin = loginStatus configSp.edit().putBoolean("LOGIN_STATUS", loginStatus).apply() } catch (e: Exception) { - _loginInfoState.emit(LoginInfoState.Error(e.localizedMessage ?: "UNKNOWN")) + _loginInfoState.emit(LoginInfoState.Error(e.message())) } } } @@ -393,7 +392,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { viewModelScope.launch { _profileState.emit(ProfileState.Loading) try { - if (configSp.getBoolean("LOGIN_STATUS", false)) { + if (globalState.value.isLogin) { val profileModel = repository.getProfile(uid) saveProfile(profileModel) _profileState.emit(ProfileState.Success(profileModel)) @@ -401,7 +400,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { _profileState.emit(ProfileState.UnLogin("UN LOGIN")) } } catch (e: Exception) { - _profileState.emit(ProfileState.Error(e.localizedMessage ?: "UNKNOWN")) + _profileState.emit(ProfileState.Error(e.message())) } } } @@ -442,7 +441,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { NotificationState.Error("UN LOGIN") } } catch (e: Exception) { - NotificationState.Error(e.localizedMessage ?: "UNKNOWN") + NotificationState.Error(e.message()) } ) } @@ -468,7 +467,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { ) } ).flow.cachedIn(viewModelScope)) } catch (e: Exception) { - ReplyState.Error(e.localizedMessage ?: "UNKNOWN") + ReplyState.Error(e.message()) } ) } @@ -490,7 +489,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { ) } ).flow.cachedIn(viewModelScope)) } catch (e: Exception) { - ReplyState.Error(e.localizedMessage ?: "UNKNOWN") + ReplyState.Error(e.message()) } ) } @@ -498,46 +497,62 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { private fun getFollow(uid: Int) { viewModelScope.launch { - try { - val followModel = repository.getFollow(uid) - _followState.emit(followModel) - } catch (e: Exception) { - Log.e(TAG, "getFollow: ${e.localizedMessage}") + if (globalState.value.isLogin) { + try { + val followModel = repository.getFollow(uid) + _followState.emit(followModel) + } catch (e: Exception) { + Log.e(TAG, "getFollow: ${e.message()}") + } + } else { + Log.e(TAG, "getFollow: UN_LOGIN") } } } private fun getUnFollow(uid: Int) { viewModelScope.launch { - try { - val followModel = repository.getUnFollow(uid) - _followState.emit(followModel) - } catch (e: Exception) { - Log.e(TAG, "getFollow: ${e.localizedMessage}") + if (globalState.value.isLogin) { + try { + val followModel = repository.getUnFollow(uid) + _followState.emit(followModel) + } catch (e: Exception) { + Log.e(TAG, "getFollow: ${e.message()}") + } + } else { + Log.e(TAG, "getUnFollow: UN_LOGIN") } } } private fun getLike(id: Int) { viewModelScope.launch { - try { - val likeModel = repository.getLike(id = id) - val likeState = LikeState(isLike = true, likeModel = likeModel) - _likeState.emit(likeState) - } catch (e: Exception) { - Log.e(TAG, "getLike: ${e.localizedMessage}") + if (globalState.value.isLogin) { + try { + val likeModel = repository.getLike(id = id) + val likeState = LikeState(isLike = true, likeModel = likeModel) + _likeState.emit(likeState) + } catch (e: Exception) { + Log.e(TAG, "getLike: ${e.message()}") + } + } else { + Log.e(TAG, "getLike: UN_LOGIN") } } } private fun getUnlike(id: Int) { viewModelScope.launch { - try { - val likeModel = repository.getUnlike(id = id) - val likeState = LikeState(isLike = false, likeModel = likeModel) - _likeState.emit(likeState) - } catch (e: Exception) { - Log.e(TAG, "getUnlike: ${e.localizedMessage}") + if (globalState.value.isLogin) { + try { + val likeModel = repository.getUnlike(id = id) + val likeState = LikeState(isLike = false, likeModel = likeModel) + _likeState.emit(likeState) + } catch (e: Exception) { + Log.e(TAG, "getUnlike: ${e.message()}") + } + } else { + Log.e(TAG, "getUnlike: UN_LOGIN") } } } diff --git a/app/src/main/java/com/anpe/coolbbsyou/util/TokenDeviceUtils.kt b/app/src/main/java/com/anpe/coolbbsyou/util/TokenDeviceUtils.kt index 00f6f50..46e667b 100644 --- a/app/src/main/java/com/anpe/coolbbsyou/util/TokenDeviceUtils.kt +++ b/app/src/main/java/com/anpe/coolbbsyou/util/TokenDeviceUtils.kt @@ -9,20 +9,22 @@ import com.anpe.coolbbsyou.util.Utils.Companion.getMD5 class TokenDeviceUtils { companion object { - private fun createDeviceCode(aid: String, mac: String, manufacturer: String, brand: String, model: String, display: String, isRaw: Boolean = true - ) = "$aid; ; ; $mac; $manufacturer; $brand; $model; $display; null".getBase64(isRaw).reversed() + private fun createDeviceCode(aid: String, mac: String, manufacturer: String, brand: String, model: String, display: String, str: String, isRaw: Boolean = true + ) = "$aid; ; ; $mac; $manufacturer; $brand; $model; $display; $str".getBase64(isRaw).reversed() fun getDeviceCode(context: Context): String { val sp = context.getSharedPreferences(Constants.CONFIG_PREFS, Context.MODE_PRIVATE) - val aid = sp.getString("AID", Settings.System.getString(context.contentResolver, Settings.Secure.ANDROID_ID))!! + var aid = sp.getString("AID", Settings.System.getString(context.contentResolver, Settings.Secure.ANDROID_ID))!! + aid = "DUZJlvIF9j-$aid" val mac = sp.getString("MAC", Utils.randomMacAddress())!! val manuFactor = Build.MANUFACTURER val brand = Build.BRAND val model = Build.MODEL val display = Build.DISPLAY + val str = "null" - return createDeviceCode(aid, mac, manuFactor, brand, model, display) + return createDeviceCode(aid, mac, manuFactor, brand, model, display, str) } fun String.getTokenV2(): String {