Skip to content

Feat/custom UI#94

Merged
destucr merged 17 commits intodevelopmentfrom
feat/custom-ui
Nov 28, 2025
Merged

Feat/custom UI#94
destucr merged 17 commits intodevelopmentfrom
feat/custom-ui

Conversation

@destucr
Copy link
Contributor

@destucr destucr commented Nov 28, 2025

🎯 Summary

Introduced a comprehensive theme customization system with ThemeManager, refactored the onboarding and authentication flow for better separation of concerns, expanded orb and background styles, and improved code clarity throughout the app.

✨ Features/Changes

  • Added ThemeManager as an EnvironmentObject for dynamic UI theming across the app
  • Expanded OrbStyles with five new color variants (yellow, pink, purple, blue, green) and corresponding bokeh colors
  • Introduced BackgroundTheme enum with four selectable background options
  • Refactored authentication flow: ContentView now delegates to RootView for cleaner sign-in, onboarding, and main app transitions
  • Renamed Firestore property from db to database in AuthenticationService for consistency
  • Removed custom AppDelegate and moved FirebaseApp.configure() to TinyApp initializer
  • Added camera and photo library usage descriptions to Info.plist

📁 Files Changed

  • Tiny/App/TinyApp.swift - Removed AppDelegate, moved Firebase configuration to init, added ThemeManager as environment object
  • Tiny/Features/Root/Views/ContentView.swift - Refactored to delegate navigation to RootView based on auth state
  • Tiny/Features/Root/Views/RootView.swift - New view handling sign-in, onboarding, and main app transitions
  • Tiny/Services/AuthenticationService.swift - Renamed db to database throughout for consistency
  • Tiny/Features/LiveListen/Views/Components/BokehEffectView.swift - Updated to use ThemeManager for dynamic bokeh colors
  • Tiny/Features/LiveListen/Views/Components/AnimatedOrbView.swift - Integrated theme-based orb styling
  • Tiny/Features/SplashScreen/Views/SplashScreenView.swift - Added support for dynamic background themes
  • Tiny/Models/OrbStyles.swift - Expanded with new color variants and bokehColor property
  • Tiny/Models/BackgroundTheme.swift - New enum for selectable background themes
  • Tiny/Managers/ThemeManager.swift - New manager class for centralized theme state
  • Tiny.xcodeproj/project.pbxproj - Added camera and photo library usage descriptions

🔧 Usage Examples (if applicable)

// Using ThemeManager in views
@EnvironmentObject var themeManager: ThemeManager

// Access current theme
let currentOrb = themeManager.selectedOrbStyle
let currentBackground = themeManager.selectedBackground

// New orb styles available
enum OrbStyles: String, CaseIterable {
    case yellow, pink, purple, blue, green
    
    var bokehColor: Color {
        switch self {
        case .yellow: return .yellow
        case .pink: return .pink
        // ... etc
        }
    }
}

// Background theme selection
enum BackgroundTheme: String, CaseIterable {
    case purple, blue, gradient, dark
}

🧪 Testing Scenarios

Theme System:

  • ✅ Orb style changes reflect immediately across all views
  • ✅ Background theme updates dynamically in splash screen and main views
  • ✅ Theme persists across app launches
  • ✅ All five orb color variants render correctly with matching bokeh effects

Authentication Flow:

  • ✅ Unauthenticated users see sign-in screen
  • ✅ New users proceed through onboarding flow
  • ✅ Existing users navigate directly to main app
  • ✅ User role-based navigation works correctly

Permissions:

  • ✅ Camera permission prompt appears when accessing profile picture
  • ✅ Photo library permission prompt appears when selecting photos

@destucr destucr merged commit 07e3fb4 into development Nov 28, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants