NotePlan / NotePlan/plugins

We need a reliable way to open a note by filename and replace the contents

Open
#368 3 comments 0 reactions 1 assignee View on GitHub

@EduardMe is already working on this.

Since Nov 30, 2022.

API bug P-5
Dominant language
JavaScript
Stars
204
Forks
82
Avg merge
22h 27m
Merged PRs (30d)
3

Description

@dwertheimer: "I need a function I can call that will open a file with a certain filename whether it exists or not. No matter what, I can rely on getting a note back."

@jgclark and I have several plugins where the plugin needs to be able to create a note at a specific filename and replace that note's content reliably. I have tried many different approaches and have had challenges getting this to work 100% of the time because of the race conditions with notes being created and a "# " being immediately added to the note.

Lots of discussion on Discord: https://discord.com/channels/763107030223290449/1033958465326026822/1045726596679598092

@eduardme one way you can help me accomplish this objective would be to give us an API or a parameter that allows me to 1) create/open a note with a specific filename and 2) immediately set the content to XXX
Hoping that if you're doing it on the Swift side, it will be more reliable.
So, if the note does not exist, it gets created with the content
If the file does exist, the content is replaced
Maybe this would work if you add a "content" parameter to the end of Editor.openNoteByFilename
We should also have a DataStore version of this functionality as well

/**
* Opens a note using the given filename
* @param {String} filename       - Filename of the note file (can be without extension), but has to include the relative folder such as `folder/filename.txt`.
* @param {Boolean} newWindow      - (optional) Open note in new window (default = false)?
* @param {Number} highlightStart  - (optional) Start position of text highlighting
* @param {Number} highlightEnd    - (optional) End position of text highlighting
* @param {Boolean} splitView      - (optional) Open note in a new split view (Note: Available from v3.4)
* @param {Boolean} createIfNeeded - (optional) Create the note with the given filename if it doesn't exist (only project notes, v3.5.2+)
* @param {String} content /* dbw added */ - Content to fill the note (replaces contents if the note already existed)
* @return {Promise} Note?         - When the note has been opened, a promise will be returned with the note object
*/
.openNoteByFilename(filename, newWindow, highlightStart, highlightEnd, splitView, createIfNeeded, content /*dbw added*/)
```js

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.