This commit is contained in:
2024-08-11 21:17:02 +08:00
parent 19527f17c3
commit 322a4320c7
9 changed files with 160 additions and 31 deletions

View File

@@ -1,9 +1,16 @@
package com.aiosman.riderpro.data
import com.aiosman.riderpro.AppStore
import com.aiosman.riderpro.data.api.ApiClient
import com.aiosman.riderpro.data.api.LoginUserRequestBody
import com.aiosman.riderpro.data.api.RegisterRequestBody
import com.aiosman.riderpro.test.TestDatabase
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.asRequestBody
import okhttp3.RequestBody.Companion.toRequestBody
import java.io.File
data class AccountProfileEntity(
val id: Int,
@@ -15,6 +22,7 @@ data class AccountProfileEntity(
val country: String,
val isFollowing: Boolean
)
//{
// "id": 1,
// "username": "root",
@@ -23,7 +31,7 @@ data class AccountProfileEntity(
// "followingCount": 1,
// "followerCount": 0
//}
data class AccountProfile (
data class AccountProfile(
val id: Int,
val username: String,
val nickname: String,
@@ -38,13 +46,14 @@ data class AccountProfile (
followerCount = followerCount,
followingCount = followingCount,
nickName = nickname,
avatar = ApiClient.BASE_SERVER + avatar,
avatar = ApiClient.BASE_SERVER + avatar + "?token=${AppStore.token}",
bio = "",
country = "Worldwide",
isFollowing = isFollowing
)
}
}
interface AccountService {
suspend fun getMyAccountProfile(): AccountProfileEntity
suspend fun getAccountProfileById(id: Int): AccountProfileEntity
@@ -52,7 +61,7 @@ interface AccountService {
suspend fun loginUserWithPassword(loginName: String, password: String): UserAuth
suspend fun logout()
suspend fun updateAvatar(uri: String)
suspend fun updateProfile(nickName: String, bio: String)
suspend fun updateProfile(avatar: UploadImage?, nickName: String?, bio: String?)
suspend fun registerUserWithPassword(loginName: String, password: String)
}
@@ -95,14 +104,17 @@ class TestAccountServiceImpl : AccountService {
}
}
override suspend fun updateProfile(nickName: String, bio: String) {
TestDatabase.accountData = TestDatabase.accountData.map {
if (it.id == 1) {
it.copy(nickName = nickName, bio = bio)
} else {
it
}
fun createMultipartBody(file: File, filename:String,name: String): MultipartBody.Part {
val requestFile = file.asRequestBody("image/*".toMediaTypeOrNull())
return MultipartBody.Part.createFormData(name, filename, requestFile)
}
override suspend fun updateProfile(avatar: UploadImage?, nickName: String?, bio: String?) {
val nicknameField: RequestBody? = nickName?.toRequestBody("text/plain".toMediaTypeOrNull())
val avatarField: MultipartBody.Part? = avatar?.let {
createMultipartBody(it.file,it.filename, "avatar")
}
ApiClient.api.updateProfile(avatarField, nicknameField)
}
override suspend fun registerUserWithPassword(loginName: String, password: String) {