53 lines
1.5 KiB
Swift
53 lines
1.5 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
|
|
@MainActor
|
|
class TemplatesViewModel: ObservableObject {
|
|
@Published var templates: [NoteTemplate] = []
|
|
@Published private(set) var defaultTemplateID: UUID? = nil
|
|
@Published var isLoading = false
|
|
@Published var errorMessage: String?
|
|
|
|
init() {
|
|
loadTemplates()
|
|
}
|
|
|
|
func loadTemplates() {
|
|
isLoading = true
|
|
templates = LocalStorageManager.shared.loadTemplates()
|
|
defaultTemplateID = LocalStorageManager.shared.preferredTemplateID(in: templates)
|
|
isLoading = false
|
|
}
|
|
|
|
func setDefaultTemplate(_ template: NoteTemplate) {
|
|
UserDefaultsManager.shared.selectedTemplateId = template.id
|
|
defaultTemplateID = template.id
|
|
}
|
|
|
|
func saveTemplate(_ template: NoteTemplate) {
|
|
if LocalStorageManager.shared.saveTemplate(template) {
|
|
loadTemplates()
|
|
} else {
|
|
errorMessage = "Failed to save template"
|
|
}
|
|
}
|
|
|
|
func deleteTemplate(_ template: NoteTemplate) {
|
|
if LocalStorageManager.shared.deleteTemplate(template) {
|
|
loadTemplates()
|
|
} else {
|
|
errorMessage = "Cannot delete default templates"
|
|
}
|
|
}
|
|
|
|
func createNewTemplate() -> NoteTemplate {
|
|
return NoteTemplate(
|
|
title: "New Template",
|
|
context: "",
|
|
sections: [
|
|
TemplateSection(title: "Section 1", description: "Description of section 1")
|
|
]
|
|
)
|
|
}
|
|
}
|