فهرست منبع

fix(http): fix http request

zhaoyadi 1 سال پیش
والد
کامیت
29cab7acf3

+ 2 - 1
app/build.gradle.kts

@@ -29,7 +29,7 @@ dependencies {
     implementation(project(":core:http"))
     implementation(project(":feat:home"))
 
-    implementation("androidx.activity:activity-compose:1.6.1")
+    implementation("androidx.activity:activity-compose:1.7.2")
 
     implementation("androidx.appcompat:appcompat:1.6.1")
 
@@ -42,6 +42,7 @@ dependencies {
     implementation(libs.coil.kt.svg)
 
     implementation("com.google.accompanist:accompanist-systemuicontroller:0.30.1")
+    implementation("androidx.tracing:tracing-ktx:1.1.0")
 
     testImplementation("junit:junit:4.13.2")
     androidTestImplementation("androidx.test.ext:junit:1.1.5")

+ 2 - 1
app/src/main/java/com/zaojiao/app/ui/AppState.kt

@@ -4,13 +4,14 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.rememberCoroutineScope
-import androidx.core.os.trace
+import androidx.tracing.Trace
 import androidx.navigation.NavDestination
 import androidx.navigation.NavGraph.Companion.findStartDestination
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.currentBackStackEntryAsState
 import androidx.navigation.compose.rememberNavController
 import androidx.navigation.navOptions
+import androidx.tracing.trace
 import com.zaojiao.app.navigation.HomeDestination
 import com.zaojiao.app.feat.home.navigation.homeCourse
 import com.zaojiao.app.feat.home.navigation.homeIndex

+ 0 - 9
built/convention/src/main/kotlin/ApplicationConventionPlugin.kt

@@ -45,15 +45,6 @@ class ApplicationConventionPlugin : Plugin<Project> {
                         isDebuggable = true
                     }
                 }
-
-                flavorDimensions += "manufacturer"
-
-                productFlavors {
-                    create("xiaomi") {
-                        dimension = "manufacturer"
-                        manifestPlaceholders["privacy"] = "www.xiaomi.com"
-                    }
-                }
             }
         }
     }

+ 1 - 2
built/convention/src/main/kotlin/LifecycleConventionPlugin.kt

@@ -3,7 +3,7 @@ import org.gradle.api.Project
 import org.gradle.kotlin.dsl.dependencies
 
 class LifecycleConventionPlugin: Plugin<Project> {
-private    val lifecycle_version = "2.5.1"
+    private val lifecycle_version = "2.5.1"
 
     override fun apply(target: Project) {
         with(target) {
@@ -14,7 +14,6 @@ private    val lifecycle_version = "2.5.1"
             dependencies {
                 add("implementation","androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
                 add("implementation","androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")
-                add( "implementation","androidx.navigation:navigation-compose:2.6.0")
 
 //                add("implementation","androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
                 add("kapt","androidx.lifecycle:lifecycle-compiler:$lifecycle_version")

+ 3 - 0
core/http/build.gradle.kts

@@ -18,4 +18,7 @@ dependencies {
 
     api("com.squareup.retrofit2:retrofit:2.9.0")
     api("com.squareup.retrofit2:converter-moshi:2.9.0")
+    api("com.squareup.moshi:moshi:1.8.0")
+    api("com.squareup.moshi:moshi-kotlin:1.8.0")
+    api("com.squareup.moshi:moshi-adapters:1.8.0")
 }

+ 5 - 0
core/http/src/main/java/com/zaojiao/http/di/HttpModule.kt

@@ -4,6 +4,8 @@ import android.content.Context
 import coil.ImageLoader
 import coil.decode.SvgDecoder
 import com.squareup.moshi.Moshi
+import com.squareup.moshi.adapters.Rfc3339DateJsonAdapter
+import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
 import com.zaojiao.http.converter.HexColorAdapter
 import com.zaojiao.http.converter.ResultConverterFactory
 import com.zaojiao.http.interceptor.TokenInterceptor
@@ -17,6 +19,7 @@ import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import retrofit2.Retrofit
 import retrofit2.converter.moshi.MoshiConverterFactory
+import java.util.Date
 import java.util.concurrent.TimeUnit
 import javax.inject.Named
 import javax.inject.Singleton
@@ -52,6 +55,8 @@ object HttpModule {
     fun provideMoshi(): Moshi {
         return Moshi.Builder()
             .add(HexColorAdapter())
+            .add(Date::class.java,Rfc3339DateJsonAdapter())
+            .add(KotlinJsonAdapterFactory())
             .build()
     }
 

+ 35 - 0
data/model/src/main/java/com/zaojiao/app/data/model/AppUser.kt

@@ -0,0 +1,35 @@
+package com.zaojiao.app.data.model
+
+data class AppUser(
+    val appId: Any?,
+    val avatarUrl: String,
+    val bindPhone: Int,
+    val bindWx: Int,
+    val birthday: Any?,
+    val city: Any?,
+    val collect: Int,
+    val country: Any?,
+    val createTime: String,
+    val customerService: String,
+    val defaultLoginClassId: Any?,
+    val defaultLoginSchoolId: Any?,
+    val fansCount: Int,
+    val followCount: Int,
+    val gender: Int,
+    val hasGift: Int,
+    val headUrl: String,
+    val hobby: Any?,
+    val id: String,
+    val likeSize: Int,
+    val magicCoin: Double,
+    val messageCount: Int,
+    val name: String,
+    val nickName: String,
+    val openId: Any?,
+    val phone: String,
+    val province: Any?,
+    val proxyUserId: Any?,
+    val sessionKey: Any?,
+    val unionId: Any?,
+    val updateTime: String
+)

+ 9 - 0
data/model/src/main/java/com/zaojiao/app/data/model/UserGetV2Model.kt

@@ -0,0 +1,9 @@
+package com.zaojiao.app.data.model
+
+data class UserGetV2Model(
+    val appUser: AppUser,
+    val babyList: List<Any>,
+    val fansCount: Int,
+    val followCount: Int,
+    val gameImg: String
+)

+ 0 - 16
data/model/src/main/java/com/zaojiao/app/data/model/UserModel.kt

@@ -1,16 +0,0 @@
-package com.zaojiao.app.data.model
-
-data class UserModel(
-    val id: String,
-    val nickName: String? = null,
-) {
-    companion object {
-        val none = UserModel(
-            id = ""
-        )
-    }
-
-    fun isNone(): Boolean {
-        return this == none
-    }
-}

+ 3 - 3
data/remote/src/main/kotlin/com/zaojiao/app/data/remote/RemoteUserData.kt

@@ -1,6 +1,6 @@
 package com.zaojiao.app.data.remote
 
-import com.zaojiao.app.data.model.UserModel
+import com.zaojiao.app.data.model.AppUser
 import com.zaojiao.app.data.remote.api.UserApi
 import javax.inject.Inject
 import javax.inject.Singleton
@@ -9,8 +9,8 @@ import javax.inject.Singleton
 class RemoteUserData @Inject constructor(
     private val userApi: UserApi,
 ) {
-    suspend fun getUser(): UserModel? {
+    suspend fun getUser(): AppUser? {
         val user = userApi.getUser()
-        return user.data
+        return user.data?.appUser
     }
 }

+ 2 - 2
data/remote/src/main/kotlin/com/zaojiao/app/data/remote/api/UserApi.kt

@@ -1,6 +1,6 @@
 package com.zaojiao.app.data.remote.api
 
-import com.zaojiao.app.data.model.UserModel
+import com.zaojiao.app.data.model.UserGetV2Model
 import com.zaojiao.http.common.NetResult
 import retrofit2.http.GET
 
@@ -8,5 +8,5 @@ import retrofit2.http.GET
 interface UserApi {
 
     @GET("/app/user/getV2")
-    suspend fun getUser(): NetResult<UserModel>
+    suspend fun getUser(): NetResult<UserGetV2Model>
 }

+ 6 - 2
data/repo/src/main/kotlin/com/zaojiao/app/data/repo/UserRepository.kt

@@ -1,10 +1,14 @@
 package com.zaojiao.app.data.repo
 
-import com.zaojiao.app.data.model.UserModel
+import com.zaojiao.app.data.model.AppUser
 import kotlinx.coroutines.flow.Flow
 
 interface UserRepository {
-    fun getUser(): Flow<UserModel?>
+    fun getUser(): Flow<AppUser?>
+
+    fun getFansCount(): Flow<Int>
+
+    fun getFollowerCount(): Flow<Int>
 
     suspend fun getBaby()
 

+ 10 - 2
data/repo/src/main/kotlin/com/zaojiao/app/data/repo/UserRepositoryImpl.kt

@@ -1,6 +1,6 @@
 package com.zaojiao.app.data.repo
 
-import com.zaojiao.app.data.model.UserModel
+import com.zaojiao.app.data.model.AppUser
 import com.zaojiao.app.data.remote.RemoteUserData
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.flow.Flow
@@ -11,13 +11,21 @@ import javax.inject.Inject
 class UserRepositoryImpl @Inject constructor(
     private val remoteUserData: RemoteUserData,
 ) : UserRepository {
-    override fun getUser(): Flow<UserModel?> = flow {
+    override fun getUser(): Flow<AppUser?> = flow {
         emit(null)
         coroutineScope {
             emit(remoteUserData.getUser())
         }
     }
 
+    override fun getFansCount(): Flow<Int> {
+        TODO("Not yet implemented")
+    }
+
+    override fun getFollowerCount(): Flow<Int> {
+        TODO("Not yet implemented")
+    }
+
 
     override suspend fun getBaby() {
         TODO("Not yet implemented")