feat: 新增我的动态信息结构和相关API请求逻辑

- 在DynamicsModels.swift中新增MyMomentInfo结构,专门用于处理/dynamic/getMyDynamic接口的响应数据。
- 更新MyMomentsResponse结构以使用MyMomentInfo,确保数据类型一致性。
- 在LoginModels.swift中重构IDLoginAPIRequest和EmailLoginRequest,优化queryParameters的实现方式,提升代码可读性。
- 在RecoverPasswordFeature中重构ResetPasswordRequest,优化queryParameters的实现方式,确保一致性。
- 在多个视图中添加调试信息,增强调试能力和用户体验。
- 更新Localizable.strings文件,新增动态列表为空时的提示信息,提升用户交互体验。
This commit is contained in:
edwinQQQ
2025-08-04 19:12:31 +08:00
parent fa544139c1
commit 99a53d7274
14 changed files with 289 additions and 49 deletions

View File

@@ -241,12 +241,56 @@ struct PublishFeedData: Codable, Equatable {
// MARK: - API
/// - /dynamic/getMyDynamic
struct MyMomentInfo: Codable, Equatable, Sendable {
let content: String
let uid: Int
let publishTime: Int64
let type: Int
// MomentsInfo
func toMomentsInfo() -> MomentsInfo {
return MomentsInfo(
dynamicId: 0, // dynamicId
uid: uid,
nick: "", //
avatar: "", //
type: type,
content: content,
likeCount: 0, //
isLike: false, //
commentCount: 0, //
publishTime: Int(publishTime / 1000), //
worldId: 0, // worldId
status: 1, //
playCount: nil,
dynamicResList: nil,
gender: nil,
squareTop: nil,
topicTop: nil,
newUser: nil,
defUser: nil,
scene: nil,
userVipInfoVO: nil,
headwearPic: nil,
headwearEffect: nil,
headwearType: nil,
headwearName: nil,
headwearId: nil,
experLevelPic: nil,
charmLevelPic: nil,
isCustomWord: nil,
labelList: nil
)
}
}
///
struct MyMomentsResponse: Codable, Equatable, Sendable {
let code: Int
let message: String
let data: [MomentsInfo]?
let timestamp: Int?
let data: [MyMomentInfo]?
let timestamp: Int64?
}
struct GetMyDynamicRequest: APIRequestProtocol {

View File

@@ -77,10 +77,29 @@ struct IDLoginAPIRequest: APIRequestProtocol {
let endpoint = APIEndpoint.login.path // 使
let method: HTTPMethod = .POST
let includeBaseParameters = true
let queryParameters: [String: String]?
var bodyParameters: [String: Any]? { nil }
let timeout: TimeInterval = 30.0
// MARK: - Private Properties
private let phone: String
private let password: String
private let clientSecret: String
private let version: String
private let clientId: String
private let grantType: String
// MARK: - Computed Properties
var queryParameters: [String: String]? {
return [
"phone": phone,
"password": password,
"client_secret": clientSecret,
"version": version,
"client_id": clientId,
"grant_type": grantType
]
}
/// ID
/// - Parameters:
/// - phone: DESID/
@@ -90,14 +109,12 @@ struct IDLoginAPIRequest: APIRequestProtocol {
/// - clientId: ID"erban-client"
/// - grantType: "password"
init(phone: String, password: String, clientSecret: String = "uyzjdhds", version: String = "1", clientId: String = "erban-client", grantType: String = "password") {
self.queryParameters = [
"phone": phone,
"password": password,
"client_secret": clientSecret,
"version": version,
"client_id": clientId,
"grant_type": grantType
];
self.phone = phone
self.password = password
self.clientSecret = clientSecret
self.version = version
self.clientId = clientId
self.grantType = grantType
}
}
@@ -527,10 +544,29 @@ struct EmailLoginRequest: APIRequestProtocol {
let endpoint = APIEndpoint.login.path
let method: HTTPMethod = .POST
let includeBaseParameters = true
let queryParameters: [String: String]?
var bodyParameters: [String: Any]? { nil }
let timeout: TimeInterval = 30.0
// MARK: - Private Properties
private let email: String
private let code: String
private let clientSecret: String
private let version: String
private let clientId: String
private let grantType: String
// MARK: - Computed Properties
var queryParameters: [String: String]? {
return [
"email": email,
"code": code,
"client_secret": clientSecret,
"version": version,
"client_id": clientId,
"grant_type": grantType
]
}
///
/// - Parameters:
/// - email: DES
@@ -540,14 +576,12 @@ struct EmailLoginRequest: APIRequestProtocol {
/// - clientId: ID"erban-client"
/// - grantType: "email"
init(email: String, code: String, clientSecret: String = "uyzjdhds", version: String = "1", clientId: String = "erban-client", grantType: String = "email") {
self.queryParameters = [
"email": email,
"code": code,
"client_secret": clientSecret,
"version": version,
"client_id": clientId,
"grant_type": grantType
]
self.email = email
self.code = code
self.clientSecret = clientSecret
self.version = version
self.clientId = clientId
self.grantType = grantType
}
}
@@ -603,18 +637,25 @@ struct GetUserInfoRequest: APIRequestProtocol {
let endpoint = APIEndpoint.getUserInfo.path
let method: HTTPMethod = .GET
let includeBaseParameters = true
let queryParameters: [String: String]?
var bodyParameters: [String: Any]? { nil }
let timeout: TimeInterval = 30.0
let shouldShowLoading: Bool = false // loading
let shouldShowError: Bool = false //
// MARK: - Private Properties
private let uid: String
// MARK: - Computed Properties
var queryParameters: [String: String]? {
return [
"uid": uid
]
}
///
/// - Parameter uid: ID
init(uid: String) {
self.queryParameters = [
"uid": uid
]
self.uid = uid
}
}