From c7e29828b4143dddd8219b14dce74b58391f75be Mon Sep 17 00:00:00 2001 From: superdooper86 Date: Wed, 15 Jul 2026 23:36:33 +0200 Subject: [PATCH] fix: prevent duplicate template editor navigation --- Meetingnotes.xcodeproj/project.pbxproj | 8 +++---- meetingnotes/Views/TemplateListView.swift | 28 +++++++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/Meetingnotes.xcodeproj/project.pbxproj b/Meetingnotes.xcodeproj/project.pbxproj index 2fa1a9a..06a78c0 100644 --- a/Meetingnotes.xcodeproj/project.pbxproj +++ b/Meetingnotes.xcodeproj/project.pbxproj @@ -276,7 +276,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_ASSET_PATHS = "\"meetingnotes/Preview Content\""; DEVELOPMENT_TEAM = G9LVHZAJNX; ENABLE_HARDENED_RUNTIME = YES; @@ -290,7 +290,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.1.4; + MARKETING_VERSION = 1.1.5; ONLY_ACTIVE_ARCH = NO; OTHER_SWIFT_FLAGS = "$(inherited) -D ENABLE_TCC_SPI"; PRODUCT_BUNDLE_IDENTIFIER = net.jamesbone.meetingnotes; @@ -312,7 +312,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_ASSET_PATHS = "\"meetingnotes/Preview Content\""; DEVELOPMENT_TEAM = G9LVHZAJNX; ENABLE_HARDENED_RUNTIME = YES; @@ -326,7 +326,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 1.1.4; + MARKETING_VERSION = 1.1.5; ONLY_ACTIVE_ARCH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D ENABLE_TCC_SPI"; PRODUCT_BUNDLE_IDENTIFIER = net.jamesbone.meetingnotes; diff --git a/meetingnotes/Views/TemplateListView.swift b/meetingnotes/Views/TemplateListView.swift index 92684bc..bf658d6 100644 --- a/meetingnotes/Views/TemplateListView.swift +++ b/meetingnotes/Views/TemplateListView.swift @@ -2,15 +2,15 @@ import SwiftUI struct TemplateListView: View { @StateObject private var viewModel = TemplatesViewModel() - @Environment(\.dismiss) private var dismiss + @State private var editingTemplate: NoteTemplate? var body: some View { List { ForEach(viewModel.templates) { template in HStack { - NavigationLink(destination: TemplateEditView(template: template) { updatedTemplate in - viewModel.saveTemplate(updatedTemplate) - }) { + Button { + presentEditor(for: template) + } label: { VStack(alignment: .leading, spacing: 4) { HStack { Text(template.title) @@ -36,6 +36,7 @@ struct TemplateListView: View { } .padding(.vertical, 4) } + .buttonStyle(.plain) Spacer() @@ -87,9 +88,9 @@ struct TemplateListView: View { .navigationTitle("Note Templates") .toolbar { ToolbarItem(placement: .primaryAction) { - NavigationLink(destination: TemplateEditView(template: viewModel.createNewTemplate()) { updatedTemplate in - viewModel.saveTemplate(updatedTemplate) - }) { + Button { + presentEditor(for: viewModel.createNewTemplate()) + } label: { Image(systemName: "plus") } } @@ -106,6 +107,19 @@ struct TemplateListView: View { } message: { Text(viewModel.errorMessage ?? "") } + .sheet(item: $editingTemplate) { template in + NavigationStack { + TemplateEditView(template: template) { updatedTemplate in + viewModel.saveTemplate(updatedTemplate) + } + } + .frame(minWidth: 680, minHeight: 620) + } + } + + private func presentEditor(for template: NoteTemplate) { + guard editingTemplate == nil else { return } + editingTemplate = template } }