feat: 마이페이지

- 신규 UI
This commit is contained in:
Yu Sung
2025-07-28 18:59:26 +09:00
parent 1e693cb8d8
commit 7f625c0a9d
20 changed files with 624 additions and 284 deletions

View File

@@ -12,9 +12,18 @@ final class MyPageViewModel: ObservableObject {
private let repository = UserRepository()
private let authRepository = AuthRepository()
private let noticeRepository = NoticeRepository()
private var subscription = Set<AnyCancellable>()
@Published var myPageResponse: MyPageResponse? = nil
@Published var latestNotice: NoticeItem? = nil
@Published var nickname: String = ""
@Published var profileUrl: String = ""
@Published var chargeCan: Int = 0
@Published var rewardCan: Int = 0
@Published var point: Int = 0
@Published var isAuth: Bool = false
@Published var recentContentList: [AudioContentMainItem] = []
@Published var errorMessage = ""
@Published var isShowPopup = false
@@ -32,7 +41,7 @@ final class MyPageViewModel: ObservableObject {
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { response in
} receiveValue: {[unowned self] response in
self.isLoading = false
let responseData = response.data
@@ -41,7 +50,12 @@ final class MyPageViewModel: ObservableObject {
let decoded = try jsonDecoder.decode(ApiResponse<MyPageResponse>.self, from: responseData)
if let data = decoded.data, decoded.success {
self.myPageResponse = data
self.nickname = data.nickname
self.profileUrl = data.profileUrl
self.chargeCan = data.chargeCan
self.rewardCan = data.rewardCan
self.point = data.point
self.isAuth = data.isAuth
} else {
if let message = decoded.message {
self.errorMessage = message