오디션

- 오디션 알림 받기 설정 추가
This commit is contained in:
Yu Sung
2025-01-09 01:02:08 +09:00
parent 7481637fbb
commit 6d5257e1c0
11 changed files with 83 additions and 3 deletions

View File

@@ -10,11 +10,17 @@ import SwiftUI
struct AuditionView: View {
@StateObject var viewModel = AuditionViewModel()
@AppStorage("isAuditionNotification") private var isAuditionNotification: Bool = UserDefaults.bool(forKey: .isAuditionNotification)
var body: some View {
BaseView(isLoading: $viewModel.isLoading) {
VStack(spacing: 0) {
HomeNavigationBar(title: "오디션") {}
HomeNavigationBar(title: "오디션") {
Image(isAuditionNotification ? "btn_audition_notification_selected" : "btn_audition_notification_normal")
.onTapGesture {
viewModel.updateNotificationSettings()
}
}
ScrollView(.vertical, showsIndicators: false) {
LazyVStack(alignment: .leading, spacing: 25) {

View File

@@ -11,6 +11,7 @@ import Combine
final class AuditionViewModel: ObservableObject {
private let repository = AuditionRepository()
private let userRepository = UserRepository()
private var subscription = Set<AnyCancellable>()
@Published var errorMessage = ""
@@ -80,4 +81,30 @@ final class AuditionViewModel: ObservableObject {
.store(in: &subscription)
}
}
func updateNotificationSettings() {
let isAuditionNotification = UserDefaults.bool(forKey: .isAuditionNotification)
userRepository.updateNotificationSettings(audition: !isAuditionNotification)
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { response in
let responseData = response.data
do {
let jsonDecoder = JSONDecoder()
let decoded = try jsonDecoder.decode(ApiResponseWithoutData.self, from: responseData)
if decoded.success {
UserDefaults.set(!isAuditionNotification, forKey: .isAuditionNotification)
}
} catch {}
}
.store(in: &subscription)
}
}