// // ContentView.swift // Peered // // Created by Oskar Chybowski on 11/05/2025. // import SwiftUI extension EnvironmentValues { @Entry var ownPeer: OwnPeer = .fallback } struct ContentView: View { @AppStorage("peered_username") private var username: String = "" @State private var notes = [Note]() @State private var notesClient: NoteEditingSessionClient? @State private var ownPeer: OwnPeer? var body: some View { NavigationStack { List(notes) { note in NavigationLink(note.name) { let peer = ownPeer ?? .init(peer: .init(displayName: username)) if ownPeer == nil { ownPeer = peer } return NoteEditorScreen(note: note, peer: peer) } } .environment(\.ownPeer, ownPeer ?? .fallback) .navigationTitle("Peered") .toolbar { Button("Create note") { NotesStorage().createNote(name: "New Note") notes = NotesStorage().loadNotes() } } } .onAppear { notes = NotesStorage().loadNotes() if notesClient == nil { notesClient = .init(peer: .init(displayName: username)) } notesClient?.startBrowsingForNotes() } .sheet(isPresented: .constant(username.isEmpty)) { SetUserNameBottomSheetView(username: $username) } } } #Preview { ContentView() }