From eddd17a7048648b83f7cb0e90451b1816215aca2 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Tue, 23 Sep 2025 21:57:45 -0600 Subject: [PATCH] 1.0.2 - Widget and Photos fixes --- ios/OpenClimb.xcodeproj/project.pbxproj | 26 ++- .../UserInterfaceState.xcuserstate | Bin 91871 -> 103703 bytes ios/OpenClimb/Info.plist | 2 + ios/OpenClimb/OpenClimb.entitlements | 10 + .../ViewModels/ClimbingDataManager.swift | 85 +++++++- .../Views/AddEdit/AddAttemptView.swift | 204 +++++++++++++++++- .../Views/AddEdit/AddEditProblemView.swift | 21 +- ios/SessionStatusLiveExtension.entitlements | 10 + 8 files changed, 336 insertions(+), 22 deletions(-) create mode 100644 ios/OpenClimb/OpenClimb.entitlements create mode 100644 ios/SessionStatusLiveExtension.entitlements diff --git a/ios/OpenClimb.xcodeproj/project.pbxproj b/ios/OpenClimb.xcodeproj/project.pbxproj index 29047c6..d03d003 100644 --- a/ios/OpenClimb.xcodeproj/project.pbxproj +++ b/ios/OpenClimb.xcodeproj/project.pbxproj @@ -40,6 +40,7 @@ /* Begin PBXFileReference section */ D24C19682E75002A0045894C /* OpenClimb.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenClimb.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D268B79E2E83894A003AA641 /* SessionStatusLiveExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SessionStatusLiveExtension.entitlements; sourceTree = ""; }; D2FE94802E78E958008CDB25 /* ActivityKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ActivityKit.framework; path = System/Library/Frameworks/ActivityKit.framework; sourceTree = SDKROOT; }; D2FE948B2E78FEE0008CDB25 /* SessionStatusLiveExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SessionStatusLiveExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; D2FE948C2E78FEE0008CDB25 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; @@ -107,6 +108,7 @@ D24C195F2E75002A0045894C = { isa = PBXGroup; children = ( + D268B79E2E83894A003AA641 /* SessionStatusLiveExtension.entitlements */, D24C196A2E75002A0045894C /* OpenClimb */, D2FE94902E78FEE0008CDB25 /* SessionStatusLive */, D2FE947F2E78E958008CDB25 /* Frameworks */, @@ -389,8 +391,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = OpenClimb/OpenClimb.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = 4BC9Y2LL4B; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -410,9 +414,10 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.OpenClimb; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; STRING_CATALOG_GENERATE_SYMBOLS = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -429,8 +434,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = OpenClimb/OpenClimb.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 5; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = 4BC9Y2LL4B; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -450,9 +457,10 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.1; + MARKETING_VERSION = 1.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.OpenClimb; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; STRING_CATALOG_GENERATE_SYMBOLS = YES; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -469,8 +477,9 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -481,7 +490,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.0; + MARKETING_VERSION = 1.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.OpenClimb.SessionStatusLive; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -498,8 +507,9 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 7; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -510,7 +520,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.0; + MARKETING_VERSION = 1.0.2; PRODUCT_BUNDLE_IDENTIFIER = com.atridad.OpenClimb.SessionStatusLive; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 5d4fb10624e0b861c12e8e631a49300cfce98b1f..3fcb8e5a766e4aba1faf3dc1df940450367b6009 100644 GIT binary patch literal 103703 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%0A3;>d@= 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 QvE%>q=l}mRZ|HIV2XH{pWB>pF diff --git a/ios/OpenClimb/Info.plist b/ios/OpenClimb/Info.plist index c8ebc60..e65576e 100644 --- a/ios/OpenClimb/Info.plist +++ b/ios/OpenClimb/Info.plist @@ -6,5 +6,7 @@ NSSupportsLiveActivities + NSPhotoLibraryUsageDescription + This app needs access to your photo library to add photos to climbing problems. diff --git a/ios/OpenClimb/OpenClimb.entitlements b/ios/OpenClimb/OpenClimb.entitlements new file mode 100644 index 0000000..2630f0c --- /dev/null +++ b/ios/OpenClimb/OpenClimb.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.com.atridad.OpenClimb + + + diff --git a/ios/OpenClimb/ViewModels/ClimbingDataManager.swift b/ios/OpenClimb/ViewModels/ClimbingDataManager.swift index 13f8a04..8370854 100644 --- a/ios/OpenClimb/ViewModels/ClimbingDataManager.swift +++ b/ios/OpenClimb/ViewModels/ClimbingDataManager.swift @@ -32,6 +32,27 @@ class ClimbingDataManager: ObservableObject { static let activeSession = "openclimb_active_session" } + // Widget data models + private struct WidgetAttempt: Codable { + let id: String + let sessionId: String + let problemId: String + let timestamp: Date + let result: String + } + + private struct WidgetSession: Codable { + let id: String + let gymId: String + let date: Date + let status: String + } + + private struct WidgetGym: Codable { + let id: String + let name: String + } + init() { _ = ImageManager.shared loadAllData() @@ -97,8 +118,13 @@ class ClimbingDataManager: ObservableObject { private func saveGyms() { if let data = try? encoder.encode(gyms) { userDefaults.set(data, forKey: Keys.gyms) - // Share with widget - sharedUserDefaults?.set(data, forKey: Keys.gyms) + // Share with widget - convert to widget format + let widgetGyms = gyms.map { gym in + WidgetGym(id: gym.id.uuidString, name: gym.name) + } + if let widgetData = try? encoder.encode(widgetGyms) { + sharedUserDefaults?.set(widgetData, forKey: Keys.gyms) + } } } @@ -113,16 +139,37 @@ class ClimbingDataManager: ObservableObject { private func saveSessions() { if let data = try? encoder.encode(sessions) { userDefaults.set(data, forKey: Keys.sessions) - // Share with widget - sharedUserDefaults?.set(data, forKey: Keys.sessions) + // Share with widget - convert to widget format + let widgetSessions = sessions.map { session in + WidgetSession( + id: session.id.uuidString, + gymId: session.gymId.uuidString, + date: session.date, + status: session.status.rawValue + ) + } + if let widgetData = try? encoder.encode(widgetSessions) { + sharedUserDefaults?.set(widgetData, forKey: Keys.sessions) + } } } private func saveAttempts() { if let data = try? encoder.encode(attempts) { userDefaults.set(data, forKey: Keys.attempts) - // Share with widget - sharedUserDefaults?.set(data, forKey: Keys.attempts) + // Share with widget - convert to widget format + let widgetAttempts = attempts.map { attempt in + WidgetAttempt( + id: attempt.id.uuidString, + sessionId: attempt.sessionId.uuidString, + problemId: attempt.problemId.uuidString, + timestamp: attempt.timestamp, + result: attempt.result.rawValue + ) + } + if let widgetData = try? encoder.encode(widgetAttempts) { + sharedUserDefaults?.set(widgetData, forKey: Keys.attempts) + } // Update widget timeline updateWidgetTimeline() } @@ -1020,8 +1067,14 @@ extension ClimbingDataManager { private func updateLiveActivityForActiveSession() { guard let activeSession = activeSession, activeSession.status == .active, - let _ = gym(withId: activeSession.gymId) + let gym = gym(withId: activeSession.gymId) else { + print("⚠️ Live Activity update skipped - no active session or gym") + if let session = activeSession { + print(" Session ID: \(session.id)") + print(" Session Status: \(session.status)") + print(" Gym ID: \(session.gymId)") + } return } @@ -1040,6 +1093,16 @@ extension ClimbingDataManager { elapsedInterval = 0 } + print("🔄 Live Activity Update Debug:") + print(" Session ID: \(activeSession.id)") + print(" Gym: \(gym.name)") + print(" Total attempts in session: \(totalAttempts)") + print(" Completed problems: \(completedProblems)") + print(" Elapsed time: \(elapsedInterval) seconds") + print( + " All attempts for session: \(attemptsForSession.map { "\($0.result) - Problem: \($0.problemId)" })" + ) + Task { await LiveActivityManager.shared.updateLiveActivity( elapsed: elapsedInterval, @@ -1061,6 +1124,14 @@ extension ClimbingDataManager { #endif } + /// Debug function to manually trigger widget data update + func debugUpdateWidgetData() { + // Force save all data to widget + saveGyms() + saveSessions() + saveAttempts() + } + private func validateImportData(_ importData: ClimbDataExport) throws { if importData.gyms.isEmpty { throw NSError( diff --git a/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift b/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift index 0d2851e..336b58f 100644 --- a/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift +++ b/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift @@ -1,3 +1,4 @@ +import PhotosUI import SwiftUI struct AddAttemptView: View { @@ -19,6 +20,8 @@ struct AddAttemptView: View { @State private var newProblemGrade = "" @State private var selectedClimbType: ClimbType = .boulder @State private var selectedDifficultySystem: DifficultySystem = .vScale + @State private var selectedPhotos: [PhotosPickerItem] = [] + @State private var imageData: [Data] = [] private var activeProblems: [Problem] { dataManager.activeProblems(forGym: gym.id) @@ -126,6 +129,8 @@ struct AddAttemptView: View { Button("Back") { showingCreateProblem = false + selectedPhotos = [] + imageData = [] } .foregroundColor(.blue) } @@ -209,6 +214,74 @@ struct AddAttemptView: View { } } } + + Section("Photos (Optional)") { + PhotosPicker( + selection: $selectedPhotos, + maxSelectionCount: 5, + matching: .images + ) { + HStack { + Image(systemName: "camera.fill") + .foregroundColor(.blue) + .font(.title2) + VStack(alignment: .leading, spacing: 2) { + Text("Add Photos") + .font(.headline) + .foregroundColor(.blue) + Text("\(imageData.count) of 5 photos added") + .font(.caption) + .foregroundColor(.secondary) + } + Spacer() + Image(systemName: "chevron.right") + .foregroundColor(.secondary) + .font(.caption) + } + .padding(.vertical, 4) + } + .onChange(of: selectedPhotos) { _, _ in + Task { + await loadSelectedPhotos() + } + } + + if !imageData.isEmpty { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 12) { + ForEach(imageData.indices, id: \.self) { index in + if let uiImage = UIImage(data: imageData[index]) { + Image(uiImage: uiImage) + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: 80, height: 80) + .clipped() + .cornerRadius(8) + .overlay(alignment: .topTrailing) { + Button(action: { + imageData.remove(at: index) + }) { + Image(systemName: "xmark.circle.fill") + .foregroundColor(.red) + .background(Circle().fill(.white)) + } + .offset(x: 8, y: -8) + } + } else { + RoundedRectangle(cornerRadius: 8) + .fill(.gray.opacity(0.3)) + .frame(width: 80, height: 80) + .overlay { + Image(systemName: "photo") + .foregroundColor(.gray) + } + } + } + } + .padding(.horizontal, 1) + } + } + } } @ViewBuilder @@ -310,11 +383,20 @@ struct AddAttemptView: View { let difficulty = DifficultyGrade( system: selectedDifficultySystem, grade: newProblemGrade) + // Save images and get paths + var imagePaths: [String] = [] + for data in imageData { + if let relativePath = ImageManager.shared.saveImageData(data) { + imagePaths.append(relativePath) + } + } + let newProblem = Problem( gymId: gym.id, name: newProblemName.isEmpty ? nil : newProblemName, climbType: selectedClimbType, - difficulty: difficulty + difficulty: difficulty, + imagePaths: imagePaths ) dataManager.addProblem(newProblem) @@ -347,8 +429,26 @@ struct AddAttemptView: View { dataManager.addAttempt(attempt) } + // Clear photo states after saving + selectedPhotos = [] + imageData = [] + dismiss() } + + private func loadSelectedPhotos() async { + var newImageData: [Data] = [] + + for item in selectedPhotos { + if let data = try? await item.loadTransferable(type: Data.self) { + newImageData.append(data) + } + } + + await MainActor.run { + imageData = newImageData + } + } } struct ProblemSelectionRow: View { @@ -599,6 +699,8 @@ struct EditAttemptView: View { @State private var newProblemGrade = "" @State private var selectedClimbType: ClimbType = .boulder @State private var selectedDifficultySystem: DifficultySystem = .vScale + @State private var selectedPhotos: [PhotosPickerItem] = [] + @State private var imageData: [Data] = [] private var availableProblems: [Problem] { guard let session = dataManager.session(withId: attempt.sessionId) else { @@ -727,6 +829,8 @@ struct EditAttemptView: View { Button("Back") { showingCreateProblem = false + selectedPhotos = [] + imageData = [] } .foregroundColor(.blue) } @@ -810,6 +914,74 @@ struct EditAttemptView: View { } } } + + Section("Photos (Optional)") { + PhotosPicker( + selection: $selectedPhotos, + maxSelectionCount: 5, + matching: .images + ) { + HStack { + Image(systemName: "camera.fill") + .foregroundColor(.blue) + .font(.title2) + VStack(alignment: .leading, spacing: 2) { + Text("Add Photos") + .font(.headline) + .foregroundColor(.blue) + Text("\(imageData.count) of 5 photos added") + .font(.caption) + .foregroundColor(.secondary) + } + Spacer() + Image(systemName: "chevron.right") + .foregroundColor(.secondary) + .font(.caption) + } + .padding(.vertical, 4) + } + .onChange(of: selectedPhotos) { _, _ in + Task { + await loadSelectedPhotos() + } + } + + if !imageData.isEmpty { + ScrollView(.horizontal, showsIndicators: false) { + HStack(spacing: 12) { + ForEach(imageData.indices, id: \.self) { index in + if let uiImage = UIImage(data: imageData[index]) { + Image(uiImage: uiImage) + .resizable() + .aspectRatio(contentMode: .fill) + .frame(width: 80, height: 80) + .clipped() + .cornerRadius(8) + .overlay(alignment: .topTrailing) { + Button(action: { + imageData.remove(at: index) + }) { + Image(systemName: "xmark.circle.fill") + .foregroundColor(.red) + .background(Circle().fill(.white)) + } + .offset(x: 8, y: -8) + } + } else { + RoundedRectangle(cornerRadius: 8) + .fill(.gray.opacity(0.3)) + .frame(width: 80, height: 80) + .overlay { + Image(systemName: "photo") + .foregroundColor(.gray) + } + } + } + } + .padding(.horizontal, 1) + } + } + } } @ViewBuilder @@ -915,11 +1087,20 @@ struct EditAttemptView: View { let difficulty = DifficultyGrade( system: selectedDifficultySystem, grade: newProblemGrade) + // Save images and get paths + var imagePaths: [String] = [] + for data in imageData { + if let relativePath = ImageManager.shared.saveImageData(data) { + imagePaths.append(relativePath) + } + } + let newProblem = Problem( gymId: gym.id, name: newProblemName.isEmpty ? nil : newProblemName, climbType: selectedClimbType, - difficulty: difficulty + difficulty: difficulty, + imagePaths: imagePaths ) dataManager.addProblem(newProblem) @@ -949,8 +1130,26 @@ struct EditAttemptView: View { dataManager.updateAttempt(updatedAttempt) } + // Clear photo states after saving + selectedPhotos = [] + imageData = [] + dismiss() } + + private func loadSelectedPhotos() async { + var newImageData: [Data] = [] + + for item in selectedPhotos { + if let data = try? await item.loadTransferable(type: Data.self) { + newImageData.append(data) + } + } + + await MainActor.run { + imageData = newImageData + } + } } #Preview { @@ -997,6 +1196,7 @@ struct ProblemSelectionImageView: View { ProgressView() .scaleEffect(0.8) } + } } .onAppear { diff --git a/ios/OpenClimb/Views/AddEdit/AddEditProblemView.swift b/ios/OpenClimb/Views/AddEdit/AddEditProblemView.swift index 3460c3d..811f64e 100644 --- a/ios/OpenClimb/Views/AddEdit/AddEditProblemView.swift +++ b/ios/OpenClimb/Views/AddEdit/AddEditProblemView.swift @@ -1,4 +1,3 @@ - import PhotosUI import SwiftUI @@ -61,11 +60,11 @@ struct AddEditProblemView: View { Form { GymSelectionSection() BasicInfoSection() + PhotosSection() ClimbTypeSection() DifficultySection() LocationAndSetterSection() TagsSection() - PhotosSection() AdditionalInfoSection() } .navigationTitle(isEditing ? "Edit Problem" : "Add Problem") @@ -304,18 +303,30 @@ struct AddEditProblemView: View { @ViewBuilder private func PhotosSection() -> some View { - Section("Photos") { + Section("Photos (Optional)") { PhotosPicker( selection: $selectedPhotos, maxSelectionCount: 5, matching: .images ) { HStack { - Image(systemName: "photo.on.rectangle.angled") + Image(systemName: "camera.fill") .foregroundColor(.blue) - Text("Add Photos (\(imageData.count)/5)") + .font(.title2) + VStack(alignment: .leading, spacing: 2) { + Text("Add Photos") + .font(.headline) + .foregroundColor(.blue) + Text("\(imageData.count) of 5 photos added") + .font(.caption) + .foregroundColor(.secondary) + } Spacer() + Image(systemName: "chevron.right") + .foregroundColor(.secondary) + .font(.caption) } + .padding(.vertical, 4) } if !imageData.isEmpty { diff --git a/ios/SessionStatusLiveExtension.entitlements b/ios/SessionStatusLiveExtension.entitlements new file mode 100644 index 0000000..2630f0c --- /dev/null +++ b/ios/SessionStatusLiveExtension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.com.atridad.OpenClimb + + +