iOS 2.7.3 - Removed Music Integration & Refactoring
This commit is contained in:
@@ -466,7 +466,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 49;
|
CURRENT_PROJECT_VERSION = 50;
|
||||||
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
||||||
DRIVERKIT_DEPLOYMENT_TARGET = 24.6;
|
DRIVERKIT_DEPLOYMENT_TARGET = 24.6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -491,7 +491,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 15.6;
|
MACOSX_DEPLOYMENT_TARGET = 15.6;
|
||||||
MARKETING_VERSION = 2.7.2;
|
MARKETING_VERSION = 2.7.3;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently;
|
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -518,7 +518,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Ascently/Ascently.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 49;
|
CURRENT_PROJECT_VERSION = 50;
|
||||||
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
||||||
DRIVERKIT_DEPLOYMENT_TARGET = 24.6;
|
DRIVERKIT_DEPLOYMENT_TARGET = 24.6;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
@@ -543,7 +543,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 15.6;
|
MACOSX_DEPLOYMENT_TARGET = 15.6;
|
||||||
MARKETING_VERSION = 2.7.2;
|
MARKETING_VERSION = 2.7.3;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently;
|
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@@ -610,7 +610,7 @@
|
|||||||
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
||||||
CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 49;
|
CURRENT_PROJECT_VERSION = 50;
|
||||||
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = SessionStatusLive/Info.plist;
|
INFOPLIST_FILE = SessionStatusLive/Info.plist;
|
||||||
@@ -622,7 +622,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 2.7.2;
|
MARKETING_VERSION = 2.7.3;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive;
|
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
@@ -641,7 +641,7 @@
|
|||||||
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
|
||||||
CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 49;
|
CURRENT_PROJECT_VERSION = 50;
|
||||||
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
DEVELOPMENT_TEAM = 4BC9Y2LL4B;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
INFOPLIST_FILE = SessionStatusLive/Info.plist;
|
INFOPLIST_FILE = SessionStatusLive/Info.plist;
|
||||||
@@ -653,7 +653,7 @@
|
|||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
"@executable_path/../../Frameworks",
|
"@executable_path/../../Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 2.7.2;
|
MARKETING_VERSION = 2.7.3;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive;
|
PRODUCT_BUNDLE_IDENTIFIER = com.atridad.Ascently.SessionStatusLive;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
|
|||||||
Binary file not shown.
@@ -244,7 +244,7 @@ struct AddEditProblemView: View {
|
|||||||
|
|
||||||
let tempImagePaths = imagePaths.filter { !$0.isEmpty && !imagePaths.contains($0) }
|
let tempImagePaths = imagePaths.filter { !$0.isEmpty && !imagePaths.contains($0) }
|
||||||
for imagePath in tempImagePaths {
|
for imagePath in tempImagePaths {
|
||||||
ImageManager.shared.deleteImage(atPath: imagePath)
|
_ = ImageManager.shared.deleteImage(atPath: imagePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
let newImagePaths = imagePaths.filter { !$0.isEmpty }
|
let newImagePaths = imagePaths.filter { !$0.isEmpty }
|
||||||
|
|||||||
@@ -682,8 +682,8 @@ struct ExportDataView: View {
|
|||||||
|
|
||||||
private func cleanupTempFile() {
|
private func cleanupTempFile() {
|
||||||
if let fileURL = tempFileURL {
|
if let fileURL = tempFileURL {
|
||||||
let logTag = Self.logTag // Capture before entering async closure
|
let logTag = Self.logTag
|
||||||
// Clean up after a delay to ensure sharing is complete
|
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
|
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
|
||||||
try? FileManager.default.removeItem(at: fileURL)
|
try? FileManager.default.removeItem(at: fileURL)
|
||||||
AppLogger.debug(
|
AppLogger.debug(
|
||||||
@@ -752,12 +752,11 @@ struct SyncSection: View {
|
|||||||
}
|
}
|
||||||
.foregroundColor(.primary)
|
.foregroundColor(.primary)
|
||||||
|
|
||||||
if syncService.isConfigured {
|
// Sync Now - show with proper opacity when not available
|
||||||
|
|
||||||
// Sync Now - only show if connected
|
|
||||||
if syncService.isConnected {
|
|
||||||
Button(action: {
|
Button(action: {
|
||||||
|
if syncService.isConnected {
|
||||||
performSync()
|
performSync()
|
||||||
|
}
|
||||||
}) {
|
}) {
|
||||||
HStack {
|
HStack {
|
||||||
if syncService.isSyncing {
|
if syncService.isSyncing {
|
||||||
@@ -767,8 +766,9 @@ struct SyncSection: View {
|
|||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
} else {
|
} else {
|
||||||
Image(systemName: "arrow.triangle.2.circlepath")
|
Image(systemName: "arrow.triangle.2.circlepath")
|
||||||
.foregroundColor(.green)
|
.foregroundColor(syncService.isConnected ? .green : .secondary)
|
||||||
Text("Sync Now")
|
Text("Sync Now")
|
||||||
|
.foregroundColor(syncService.isConnected ? .primary : .secondary)
|
||||||
Spacer()
|
Spacer()
|
||||||
if let lastSync = syncService.lastSyncTime {
|
if let lastSync = syncService.lastSyncTime {
|
||||||
Text(
|
Text(
|
||||||
@@ -781,11 +781,10 @@ struct SyncSection: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.disabled(syncService.isSyncing)
|
.disabled(!syncService.isConnected || syncService.isSyncing)
|
||||||
.foregroundColor(.primary)
|
.opacity(syncService.isConfigured ? 1.0 : 0.6)
|
||||||
}
|
|
||||||
|
|
||||||
// Auto-sync configuration - always visible for testing
|
// Auto-sync configuration
|
||||||
HStack {
|
HStack {
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("Auto-sync")
|
Text("Auto-sync")
|
||||||
@@ -803,29 +802,34 @@ struct SyncSection: View {
|
|||||||
)
|
)
|
||||||
.disabled(!syncService.isConnected)
|
.disabled(!syncService.isConnected)
|
||||||
}
|
}
|
||||||
.foregroundColor(.primary)
|
.opacity(syncService.isConfigured ? 1.0 : 0.6)
|
||||||
|
|
||||||
// Disconnect option - only show if connected
|
// Disconnect option
|
||||||
if syncService.isConnected {
|
|
||||||
Button(action: {
|
Button(action: {
|
||||||
|
if syncService.isConnected {
|
||||||
showingDisconnectAlert = true
|
showingDisconnectAlert = true
|
||||||
|
}
|
||||||
}) {
|
}) {
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "power")
|
Image(systemName: "power")
|
||||||
.foregroundColor(.orange)
|
.foregroundColor(syncService.isConnected ? .orange : .secondary)
|
||||||
Text("Disconnect")
|
Text("Disconnect")
|
||||||
|
.foregroundColor(syncService.isConnected ? .primary : .secondary)
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.foregroundColor(.primary)
|
.disabled(!syncService.isConnected)
|
||||||
}
|
.opacity(syncService.isConfigured ? 1.0 : 0.6)
|
||||||
|
|
||||||
|
// Error message
|
||||||
if let error = syncService.syncError {
|
if let error = syncService.syncError {
|
||||||
|
HStack {
|
||||||
Text(error)
|
Text(error)
|
||||||
.font(.caption)
|
.font(.caption)
|
||||||
.foregroundColor(.red)
|
.foregroundColor(.red)
|
||||||
.padding(.leading, 24)
|
Spacer()
|
||||||
}
|
}
|
||||||
|
.padding(.leading, 24)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.alert("Disconnect from Server", isPresented: $showingDisconnectAlert) {
|
.alert("Disconnect from Server", isPresented: $showingDisconnectAlert) {
|
||||||
@@ -1215,8 +1219,7 @@ struct HealthKitSection: View {
|
|||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Toggle(
|
Toggle(isOn: Binding(
|
||||||
isOn: Binding(
|
|
||||||
get: { healthKitService.isEnabled },
|
get: { healthKitService.isEnabled },
|
||||||
set: { newValue in
|
set: { newValue in
|
||||||
if newValue && !healthKitService.isAuthorized {
|
if newValue && !healthKitService.isAuthorized {
|
||||||
@@ -1241,8 +1244,7 @@ struct HealthKitSection: View {
|
|||||||
healthKitService.setEnabled(false)
|
healthKitService.setEnabled(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)) {
|
||||||
) {
|
|
||||||
HStack {
|
HStack {
|
||||||
Image(systemName: "heart.fill")
|
Image(systemName: "heart.fill")
|
||||||
.foregroundColor(.red)
|
.foregroundColor(.red)
|
||||||
@@ -1252,13 +1254,14 @@ struct HealthKitSection: View {
|
|||||||
.disabled(isRequestingAuthorization)
|
.disabled(isRequestingAuthorization)
|
||||||
|
|
||||||
if healthKitService.isEnabled {
|
if healthKitService.isEnabled {
|
||||||
|
HStack {
|
||||||
VStack(alignment: .leading, spacing: 4) {
|
VStack(alignment: .leading, spacing: 4) {
|
||||||
Text(
|
Text("Climbing sessions will be recorded as workouts in Apple Health")
|
||||||
"Climbing sessions will be recorded as workouts in Apple Health"
|
|
||||||
)
|
|
||||||
.font(.caption)
|
.font(.caption)
|
||||||
.foregroundColor(.secondary)
|
.foregroundColor(.secondary)
|
||||||
}
|
}
|
||||||
|
Spacer()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} header: {
|
} header: {
|
||||||
|
|||||||
Reference in New Issue
Block a user