Skip to content
This repository was archived by the owner on Aug 21, 2025. It is now read-only.
Draft
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
43 changes: 29 additions & 14 deletions GravatarApp/AppRoot/RootTabView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import SwiftUI
struct RootTabView: View {
@StateObject private var avatarPickerViewModel: AvatarPickerViewModel
@StateObject private var editProfileViewModel: EditProfileViewModel
@StateObject private var overlayManager = OverlayManager()

let session: UserSession

Expand All @@ -19,26 +20,40 @@ struct RootTabView: View {
}

var body: some View {
TabView {
// MARK: - First tab
ZStack {
TabView {
// MARK: - First tab

GravatarTab(avatarPickerViewModel: avatarPickerViewModel, onLogout: onLogout)
GravatarTab(avatarPickerViewModel: avatarPickerViewModel, onLogout: onLogout)

// MARK: - Second tab
// MARK: - Second tab

ProfileTab(editProfileViewModel: editProfileViewModel)
ProfileTab(editProfileViewModel: editProfileViewModel)

// MARK: - Third tab
// MARK: - Third tab

ShareTab()
}
.environmentObject(session)
.onAppear {
Task {
await avatarPickerViewModel.fetchAvatars()
ShareTab()
}
}
.transition(.opacity)
.environmentObject(session)
.environmentObject(overlayManager)
.onAppear {
Task {
await avatarPickerViewModel.fetchAvatars()
}
}
.transition(.opacity)

if overlayManager.isPresented, let content = overlayManager.content {
Color.black.opacity(0.4)
.ignoresSafeArea()
.onTapGesture {
overlayManager.dismiss()
}
content
.transition(.scale)
.zIndex(100)
}
}.animation(.snappy, value: overlayManager.isPresented)
}
}

Expand Down
Loading