Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 0 additions & 46 deletions Keychy/Keychy/Core/Firebase/WorkshopDataManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@ class WorkshopDataManager {

var isLoading: Bool = false
var errorMessage: String? = nil
var workshopBannerURL: URL?
var workshopThumbnailURL: URL?
var workshopThumbnailImage: UIImage? // prefetch한 썸네일 이미지

private init() {}

Expand Down Expand Up @@ -90,49 +87,6 @@ class WorkshopDataManager {
sounds = await fetchItems(collection: "Sound")
updateLastFetched(for: "Sound")
}

/// 워크샵 배너 가져오기
func fetchWorkshopBanner() async {
guard
let snapshot = try? await Firestore.firestore()
.collection("WorkshopBanner")
.document("default")
.getDocument(),
let data = snapshot.data()
else {
return
}

await MainActor.run {
// GIF URL
if let urlString = data["gif"] as? String,
let url = URL(string: urlString) {
workshopBannerURL = url
}

// 썸네일 URL
if let thumbnailString = data["thumbnail"] as? String,
let thumbnailURL = URL(string: thumbnailString) {
workshopThumbnailURL = thumbnailURL
}
}

// 썸네일 이미지 즉시 로드 (UIImage로 저장)
if let thumbnailURL = workshopThumbnailURL {
if let response = try? await ImagePipeline.shared.image(for: thumbnailURL) {
await MainActor.run {
workshopThumbnailImage = response
}
}
}

// GIF는 prefetch만 (애니메이션이라 UIImage로 저장 불가)
if let gifURL = workshopBannerURL {
let prefetcher = ImagePrefetcher()
prefetcher.startPrefetching(with: [gifURL])
}
}


/// 캐시를 강제로 무효화하고 다시 가져오기
func forceRefresh() async {
Expand Down
5 changes: 0 additions & 5 deletions Keychy/Keychy/Presentation/Home/Views/Main/HomeView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,6 @@ struct HomeView: View {
userManager.startNotificationListener()
}
.task {
// Workshop 배너 백그라운드 prefetch (메인 뭉치 로드를 블로킹하지 않음)
Task(priority: .background) {
await WorkshopDataManager.shared.fetchWorkshopBanner()
}

// 네트워크 체크
guard NetworkManager.shared.isConnected else {
viewModel.hasNetworkError = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,19 +148,6 @@ class WorkshopViewModel {
var isWorkshopBannerLoading: Bool = true
var hasNetworkError: Bool = false

// WorkshopDataManager의 값을 직접 참조 (중복 저장 방지)
var workshopBannerURL: URL? {
dataManager.workshopBannerURL
}

var workshopThumbnailURL: URL? {
dataManager.workshopThumbnailURL
}

var workshopThumbnailImage: UIImage? {
dataManager.workshopThumbnailImage
}

/// 보유 아이템 로딩 완료 여부 (templates가 로드되면 자동 계산 가능)
var hasLoadedOwnedItems: Bool {
!loadedCategories.isEmpty
Expand Down