Update signing configuration to use 88oakapps.feels identifiers
- Update App Group IDs from group.com.tt.feels to group.com.88oakapps.feels - Update iCloud container IDs from iCloud.com.tt.feels to iCloud.com.88oakapps.feels - Sync code constants with entitlements across all targets (iOS, Watch, Widget) - Update documentation in CLAUDE.md and PROJECT_OVERVIEW.md Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -101,11 +101,6 @@ struct CustomizeContentView: View {
|
||||
SettingsSection(title: "Notifications") {
|
||||
PersonalityPackPickerCompact()
|
||||
}
|
||||
|
||||
// FILTERS
|
||||
SettingsSection(title: "Day Filter") {
|
||||
DayFilterPickerCompact()
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.bottom, 32)
|
||||
@@ -175,11 +170,6 @@ struct CustomizeView: View {
|
||||
SettingsSection(title: "Notifications") {
|
||||
PersonalityPackPickerCompact()
|
||||
}
|
||||
|
||||
// FILTERS
|
||||
SettingsSection(title: "Day Filter") {
|
||||
DayFilterPickerCompact()
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 16)
|
||||
.padding(.bottom, 32)
|
||||
@@ -406,14 +396,6 @@ struct VotingLayoutPickerCompact: View {
|
||||
LazyVGrid(columns: [GridItem(.flexible()), GridItem(.flexible()), GridItem(.flexible())], spacing: 4) {
|
||||
ForEach(0..<6, id: \.self) { _ in RoundedRectangle(cornerRadius: 3).frame(width: 10, height: 12) }
|
||||
}
|
||||
case .radial:
|
||||
ZStack {
|
||||
ForEach(0..<5, id: \.self) { index in
|
||||
Circle()
|
||||
.frame(width: 7, height: 7)
|
||||
.offset(radialOffset(index: index, total: 5, radius: 15))
|
||||
}
|
||||
}
|
||||
case .stacked:
|
||||
VStack(spacing: 4) {
|
||||
ForEach(0..<4, id: \.self) { _ in RoundedRectangle(cornerRadius: 2).frame(width: 32, height: 7) }
|
||||
@@ -486,11 +468,6 @@ struct VotingLayoutPickerCompact: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func radialOffset(index: Int, total: Int, radius: CGFloat) -> CGSize {
|
||||
let angle = Double.pi - (Double.pi * Double(index) / Double(total - 1))
|
||||
return CGSize(width: radius * CGFloat(cos(angle)), height: -radius * CGFloat(sin(angle)) + 4)
|
||||
}
|
||||
|
||||
private func orbitOffset(index: Int, total: Int, radius: CGFloat) -> CGSize {
|
||||
let startAngle = -Double.pi / 2
|
||||
let angleStep = (2 * Double.pi) / Double(total)
|
||||
@@ -627,59 +604,6 @@ struct PersonalityPackPickerCompact: View {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Day Filter Picker
|
||||
struct DayFilterPickerCompact: View {
|
||||
@StateObject private var filteredDays = DaysFilterClass.shared
|
||||
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
|
||||
@Environment(\.colorScheme) private var colorScheme
|
||||
|
||||
let weekdays = [(Calendar.current.shortWeekdaySymbols[0], 1),
|
||||
(Calendar.current.shortWeekdaySymbols[1], 2),
|
||||
(Calendar.current.shortWeekdaySymbols[2], 3),
|
||||
(Calendar.current.shortWeekdaySymbols[3], 4),
|
||||
(Calendar.current.shortWeekdaySymbols[4], 5),
|
||||
(Calendar.current.shortWeekdaySymbols[5], 6),
|
||||
(Calendar.current.shortWeekdaySymbols[6], 7)]
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 14) {
|
||||
HStack(spacing: 8) {
|
||||
ForEach(weekdays.indices, id: \.self) { dayIdx in
|
||||
let day = String(weekdays[dayIdx].0)
|
||||
let value = weekdays[dayIdx].1
|
||||
let isActive = filteredDays.currentFilters.contains(value)
|
||||
|
||||
Button(action: {
|
||||
if isActive {
|
||||
filteredDays.removeFilter(filter: value)
|
||||
} else {
|
||||
filteredDays.addFilter(newFilter: value)
|
||||
}
|
||||
let impactMed = UIImpactFeedbackGenerator(style: .medium)
|
||||
impactMed.impactOccurred()
|
||||
}) {
|
||||
Text(day.prefix(2).uppercased())
|
||||
.font(.caption.weight(.semibold))
|
||||
.foregroundColor(isActive ? .white : theme.currentTheme.labelColor.opacity(0.5))
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 40)
|
||||
.background(
|
||||
RoundedRectangle(cornerRadius: 10)
|
||||
.fill(isActive ? Color.accentColor : (colorScheme == .dark ? Color(.systemGray5) : .white))
|
||||
)
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
}
|
||||
}
|
||||
|
||||
Text(String(localized: "day_picker_view_text"))
|
||||
.font(.caption)
|
||||
.foregroundColor(theme.currentTheme.labelColor.opacity(0.5))
|
||||
.multilineTextAlignment(.center)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Subscription Banner
|
||||
struct SubscriptionBannerView: View {
|
||||
@Binding var showSubscriptionStore: Bool
|
||||
@@ -787,7 +711,7 @@ struct DayViewStylePickerCompact: View {
|
||||
var body: some View {
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
HStack(spacing: 10) {
|
||||
ForEach(DayViewStyle.allCases, id: \.rawValue) { style in
|
||||
ForEach(DayViewStyle.availableCases, id: \.rawValue) { style in
|
||||
Button(action: {
|
||||
if UIAccessibility.isReduceMotionEnabled {
|
||||
dayViewStyle = style
|
||||
|
||||
@@ -90,14 +90,6 @@ struct VotingLayoutPickerView: View {
|
||||
.frame(width: 10, height: 12)
|
||||
}
|
||||
}
|
||||
case .radial:
|
||||
ZStack {
|
||||
ForEach(0..<5) { index in
|
||||
Circle()
|
||||
.frame(width: 6, height: 6)
|
||||
.offset(radialOffset(index: index, total: 5, radius: 16))
|
||||
}
|
||||
}
|
||||
case .stacked:
|
||||
VStack(spacing: 3) {
|
||||
ForEach(0..<4) { _ in
|
||||
@@ -179,14 +171,6 @@ struct VotingLayoutPickerView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func radialOffset(index: Int, total: Int, radius: CGFloat) -> CGSize {
|
||||
let angle = Double.pi - (Double.pi * Double(index) / Double(total - 1))
|
||||
return CGSize(
|
||||
width: radius * CGFloat(cos(angle)),
|
||||
height: -radius * CGFloat(sin(angle)) + 4
|
||||
)
|
||||
}
|
||||
|
||||
private func orbitOffset(index: Int, total: Int, radius: CGFloat) -> CGSize {
|
||||
// Start from top (-π/2) and go clockwise
|
||||
let startAngle = -Double.pi / 2
|
||||
|
||||
Reference in New Issue
Block a user