68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  ExploreView.swift
 | 
						|
//  WatchRunner Watch App
 | 
						|
//
 | 
						|
//  Created by LittleSheep on 2025/10/29.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
 | 
						|
// The main view with the TabView for filtering.
 | 
						|
struct ExploreView: View {
 | 
						|
    @EnvironmentObject private var appState: AppState
 | 
						|
    @State private var isComposing = false
 | 
						|
    @State private var selectedTab: String = "Explore"
 | 
						|
 | 
						|
    var body: some View {
 | 
						|
        NavigationStack {
 | 
						|
            if appState.isReady {
 | 
						|
                TabView(selection: $selectedTab) {
 | 
						|
                    ActivityListView(filter: "Explore")
 | 
						|
                        .tag("Explore")
 | 
						|
                        .tabItem {
 | 
						|
                            Label("Explore", systemImage: "safari")
 | 
						|
                        }
 | 
						|
                        .labelStyle(.titleOnly)
 | 
						|
 | 
						|
                    ActivityListView(filter: "Subscriptions")
 | 
						|
                        .tag("Subscriptions")
 | 
						|
                        .tabItem {
 | 
						|
                            Label("Subscriptions", systemImage: "star")
 | 
						|
                        }
 | 
						|
                        .labelStyle(.titleOnly)
 | 
						|
 | 
						|
                    ActivityListView(filter: "Friends")
 | 
						|
                        .tag("Friends")
 | 
						|
                        .tabItem {
 | 
						|
                            Label("Friends", systemImage: "person.2")
 | 
						|
                        }
 | 
						|
                        .labelStyle(.titleOnly)
 | 
						|
                }
 | 
						|
                .navigationTitle(selectedTab)
 | 
						|
                .toolbar {
 | 
						|
                    ToolbarItem(placement: .primaryAction) {
 | 
						|
                        Button(action: { isComposing = true }) {
 | 
						|
                            Label("Compose", systemImage: "plus")
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            } else {
 | 
						|
                VStack {
 | 
						|
                    ProgressView { Text("Syncing...") }
 | 
						|
                    Button("Retry") {
 | 
						|
                        appState.requestData()
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        .sheet(isPresented: $isComposing) {
 | 
						|
            ComposePostView()
 | 
						|
        }
 | 
						|
        .alert("Error", isPresented: .constant(appState.errorMessage != nil), actions: {
 | 
						|
            Button("OK") { appState.errorMessage = nil }
 | 
						|
        }, message: {
 | 
						|
            Text(appState.errorMessage ?? "")
 | 
						|
        })
 | 
						|
    }
 | 
						|
}
 |