feat(mypage): 최신 공지 배열과 제목 롤링을 적용한다

This commit is contained in:
Yu Sung
2026-10-28 17:15:38 +09:00
parent 8c08861b34
commit 42bdfb8779
9 changed files with 462 additions and 43 deletions
+10 -5
View File
@@ -18,7 +18,7 @@ final class MyPageViewModel: ObservableObject {
private var pendingAuthRequest: AuthVerifyRequest?
private var pendingAuthSuccess: (() -> Void)?
@Published var latestNotice: NoticeItem? = nil
@Published var latestNotices: [NoticeItem] = []
@Published var nickname: String = ""
@Published var profileUrl: String = ""
@@ -259,8 +259,9 @@ final class MyPageViewModel: ObservableObject {
AppState.shared.setAppStep(step: .splash)
}
func getLatestNotice() {
noticeRepository.getLatestNotice()
func getLatestNotices() {
noticeRepository.getLatestNotices()
.receive(on: DispatchQueue.main)
.sink { result in
switch result {
case .finished:
@@ -270,14 +271,18 @@ final class MyPageViewModel: ObservableObject {
}
} receiveValue: {[unowned self] response in
self.isLoading = false
guard (200..<300).contains(response.statusCode) else {
ERROR_LOG("Latest notices HTTP \(response.statusCode)")
return
}
let responseData = response.data
do {
let jsonDecoder = JSONDecoder()
let decoded = try jsonDecoder.decode(ApiResponse<NoticeItem>.self, from: responseData)
let decoded = try jsonDecoder.decode(ApiResponse<[NoticeItem]>.self, from: responseData)
if let data = decoded.data, decoded.success {
self.latestNotice = data
self.latestNotices = data
}
} catch {
ERROR_LOG(error.localizedDescription)