gh-1SecondEveryday-MemoryTree/MemoryTree/ContentView.swift
2023-02-05 11:45:51 -08:00

98 lines
2.6 KiB
Swift

//
// ContentView.swift
// MemoryTree
//
// Created by Work on 2023-02-05.
//
import Boutique
import SwiftUI
struct Entry: Hashable, Identifiable, Codable {
let id: UUID
let text: String
init(id: UUID = UUID(), text: String) {
self.id = id
self.text = text
}
}
extension Store where Item == Entry {
static let entriesStore = Store<Entry>(
storage: SQLiteStorageEngine.default(appendingPath: "Entries")
)
}
struct ContentView: View {
@State var isEditing = false
// @Stored(in: .entriesStore) var entries
@State var entries: [Entry] = []
@State var entryText = ""
var body: some View {
NavigationStack {
VStack(spacing: 0) {
NavigationLink(destination: CloudView(entries: $entries)) {
Image(systemName: "wind.snow")
.imageScale(.large)
.foregroundColor(.white)
}
.padding()
.frame(maxWidth: .infinity, alignment: .trailing)
.opacity(entries.isEmpty ? 0 : 1)
Spacer()
Button {
isEditing = true
} label: {
Image(entries.isEmpty ? "TreeBare" : "TreeLeafy")
.renderingMode(.template)
.resizable()
.scaledToFit()
.foregroundColor(.white)
}
.frame(maxHeight: entries.isEmpty ? 100 : 300)
Color.green
.frame(height: 80)
Form {
TextField("What are you grateful for today?", text: $entryText)
.background(Color.white)
.tint(Color.blue)
}
.onSubmit {
// Task {
// try await $entries.insert(Entry(text: entryText))
// }
entries.append(Entry(text: entryText))
entryText = ""
isEditing = false
}
.frame(maxHeight: isEditing ? 120 : 0)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.edgesIgnoringSafeArea(.bottom)
.background(Color.blue)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
Group {
ContentView()
ContentView(isEditing: true)
ContentView(entries: [Entry(text: "Coffee")])
ContentView(isEditing: true, entries: [Entry(text: "Coffee")])
}
.tint(.white)
}
}