Skip to content

Commit 22c148b

Browse files
committed
Properly close Note Editor when switching current open item
1 parent 33b5f63 commit 22c148b

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

Zotero/Scenes/General/Views/NoteEditorViewController.swift

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ final class NoteEditorViewController: UIViewController {
9393
case .done:
9494
let done = UIBarButtonItem(title: L10n.done, style: .done, target: nil, action: nil)
9595
done.rx.tap
96-
.subscribe(with: self, onNext: { `self`, _ in
96+
.subscribe(onNext: { [weak self] _ in
97+
guard let self else { return }
9798
forceSaveIfNeeded()
98-
self.navigationController?.presentingViewController?.dismiss(animated: true, completion: nil)
99+
navigationController?.presentingViewController?.dismiss(animated: true, completion: nil)
99100
})
100101
.disposed(by: disposeBag)
101102
item = done
@@ -110,8 +111,12 @@ final class NoteEditorViewController: UIViewController {
110111
self?.coordinatorDelegate
111112
},
112113
completion: { [weak self] changedCurrentItem, openItemsChanged in
113-
guard let self, !changedCurrentItem && openItemsChanged else { return }
114-
openItemsController.setOpenItemsUserActivity(from: self, libraryId: viewModel.state.library.identifier)
114+
guard let self else { return }
115+
if changedCurrentItem {
116+
forceSaveIfNeeded()
117+
} else if openItemsChanged {
118+
openItemsController.setOpenItemsUserActivity(from: self, libraryId: viewModel.state.library.identifier)
119+
}
115120
}
116121
)
117122
let openItemsMenu = UIMenu(title: L10n.Accessibility.Pdf.openItems, options: [.displayInline], children: [deferredOpenItemsMenuElement])
@@ -128,12 +133,6 @@ final class NoteEditorViewController: UIViewController {
128133
guard let item = navigationItem.rightBarButtonItems?.first(where: { button in RightBarButtonItem(rawValue: button.tag) == .restoreOpenItems }) else { return }
129134
item.image = .openItemsImage(count: count)
130135
}
131-
132-
func forceSaveIfNeeded() {
133-
guard debounceDisposeBag != nil else { return }
134-
debounceDisposeBag = nil
135-
viewModel.process(action: .save)
136-
}
137136
}
138137

139138
func setupWebView() {
@@ -215,6 +214,12 @@ final class NoteEditorViewController: UIViewController {
215214
self?.viewModel.process(action: .setTags(tags))
216215
})
217216
}
217+
218+
private func forceSaveIfNeeded() {
219+
guard debounceDisposeBag != nil else { return }
220+
debounceDisposeBag = nil
221+
viewModel.process(action: .save)
222+
}
218223
}
219224

220225
extension NoteEditorViewController: WKNavigationDelegate {

0 commit comments

Comments
 (0)