ChWebsiteApp/CHDataManagement/CHDataManagementApp.swift
2024-11-30 08:34:31 +01:00

86 lines
2.4 KiB
Swift

import SwiftUI
import SFSafeSymbols
enum ContentDisplayType {
case markdown
case html
case rendered
}
@main
struct CHDataManagementApp: App {
private var navigationTitle: String {
""
}
@StateObject
private var content: Content = .init()
@State
private var selectedLanguage: ContentLanguage = .english
var body: some Scene {
WindowGroup {
TabView {
Tab("Posts", systemImage: SFSymbol.rectangleAndPencilAndEllipsis.rawValue) {
PostList()
}
Tab("Pages", systemImage: SFSymbol.textBelowPhoto.rawValue) {
PageListView()
}
Tab("Tags", systemImage: SFSymbol.tag.rawValue) {
TagsListView()
}
Tab("Images", systemImage: SFSymbol.photo.rawValue) {
ImagesView()
}
Tab("Files", systemImage: SFSymbol.doc.rawValue) {
FilesView()
}
Tab("Settings", systemImage: SFSymbol.gear.rawValue) {
SettingsView()
}
}
.environment(\.language, selectedLanguage)
.environmentObject(content)
.toolbar {
ToolbarItem(placement: .primaryAction) {
Picker("", selection: $selectedLanguage) {
Text("English")
.tag(ContentLanguage.english)
Text("German")
.tag(ContentLanguage.german)
}.pickerStyle(.segmented)
}
}
.onAppear(perform: importOldContent)
.onReceive(Timer.publish(every: 60.0, on: .main, in: .common).autoconnect()) { _ in
save()
}
.toolbar {
ToolbarItem(placement: .navigation) {
Button(action: save) {
Text("Save")
}
}
}
}
}
private func save() {
// Save all changed files
content.saveToDisk()
}
private func importOldContent() {
do {
try content.loadFromDisk()
//content.importOldContent()
} catch {
print("Failed to load content: \(error.localizedDescription)")
}
}
}