I’m still new to SilverBullet and still trying it out, but one of my main use cases for any note app is to create “quick” notes from my phone. In these notes, I like having extra metadata like the gps location of my phone when I created the note.
After some experimenting with the new Space Script functionality, it was suprisingly easy to add what I wanted!
In a new note, I added this space script
silverbullet.registerFunction("getGpsCoords", () => {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition((position) => {
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
syscall("editor.flashNotification", `GPS: ${latitude}, ${longitude}`);
resolve(`${latitude}, ${longitude}`);
}, (error) => {
console.log('Geolocation error:', error);
reject(error);
});
});
});
And then in the default Quick Note template (imported from the Core library), I changed the frontmatter to use this new function:
---
description: "Create a quick note"
tags: template
hooks.newPage:
suggestedName: "Inbox/{{today}} {{time}}"
confirmName: false
command: "Quick Note"
key: "Alt-Shift-n"
frontmatter:
dateCreated: "{{today}}"
gps: "{{getGpsCoords}}"
---
Now whenever I create a new note using this template, I automatically get a gps frontmatter key with my current coordinates.
Note: You have to allow your browser to access your location for this to work. Also I noticed sometimes the function gets called twice. I’m not really sure why yet, but it does cause a delay when creating new notes.