Merge pull request #13 from hissohathair/collected-fixes

Collected fixes for some open issues
This commit is contained in:
Henry Gustafson 2024-08-14 21:23:41 -07:00 committed by GitHub
commit 5c54131ab5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 88 additions and 26 deletions

34
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,34 @@
name: Release Obsidian plugin
on:
push:
tags:
- "*"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: Build plugin
run: |
npm install
npm run build
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
tag="${GITHUB_REF#refs/tags/}"
gh release create "$tag" \
--title="$tag" \
--draft \
main.js manifest.json

17
CHANGES.md Normal file
View file

@ -0,0 +1,17 @@
## 1.1.0 (July 2024)
- Fixes issue with vault names containing spaces (#4). Thanks to shabegom.
- Accepts "* [ ]" in addition to "- [ ]" as task indicators (#6)
- Set a due date by adding "// YYYY-MM-DD" to end of task (#11)
## 1.0.7 (June 2023)
- Fixed issue with duplicate tasks.
## 1.0.6 (March 2023)
- Adds a command to export selection to Omnifocus. Thanks to mattsmallman.
## 1.0.4 - 1.0.5 (Feb-Mar 2023)
- Initial releases.

View file

@ -17,6 +17,15 @@ This plugin will extract tasks from the current note open in Obsidian and create
4. Asign any projects and tasks in the Omnifocus modal that appears
5. The tasks should be marked as complete in Obsidian if that setting is enabled
## Examples
```markdown
- [ ] This task will be sent to OmniFocus
- [x] This task will not (already checked)
* [ ] This task will be sent to OmniFocus
- [ ] This task is due 1 Feb // 2025-02-01
```
## Support
In case you want to support development:
<br>

View file

@ -1,7 +1,7 @@
{
"id": "tasks-to-omnifocus",
"name": "Send Tasks to OmniFocus",
"version": "1.0.7",
"version": "1.1.0",
"minAppVersion": "0.12.0",
"description": "An Obsidian plugin will extract tasks from the current note and create them in OmniFocus.",
"author": "Henry Gustafson",

View file

@ -1,11 +1,6 @@
import { serialize } from "monkey-around";
import {
MarkdownView,
CachedMetadata,
Notice,
Plugin,
TFile,
Vault,
Editor,
} from "obsidian";
@ -41,30 +36,37 @@ export default class TasksToOmnifocus extends Plugin {
this.addSettingTab(new TasksToOmnifocusSettingTab(this.app, this));
}
async addToOmnifocus(isSelection: bool, editor: Editor, view: MarkdownView) {
var editorText;
async addToOmnifocus(isSelection: boolean, editor: Editor, view: MarkdownView) {
let editorText;
if (isSelection) {
editorText = editor.getSelection();
} else {
editorText = editor.getValue();
}
try {
let tasks = editorText.match(/- \[ \] .*/g);
const tasks = editorText.match(/[-*] \[ \] .*/g);
for (let task of tasks) {
let taskName = task.replace("- [ ] ", "");
let taskNameEncoded = encodeURIComponent(taskName);
let noteURL = view.file.path.replace(/ /g, "%20").replace(/\//g, "%2F");
let vaultName = app.vault.getName();
let taskNoteEncoded = encodeURIComponent("obsidian://open?=" + vaultName + "&file=" + noteURL);
for (const task of tasks) {
let taskName = task.replace(/[-*] \[ \] /, "");
// check if taskName has "//" followed by a date, and if so extract the date for later use and remove it from taskName
const dateMatch = taskName.match(/(\/\/\s*)(\d{4}-\d{2}-\d{2})/);
let taskDate = "";
if (dateMatch) {
taskDate = dateMatch[2];
taskName = taskName.replace(dateMatch[0], "");
}
const taskNameEncoded = encodeURIComponent(taskName);
const noteURL = view.file.path.replace(/ /g, "%20").replace(/\//g, "%2F");
const vaultName = this.app.vault.getName().replace(/\s/g, "%20");
const taskNoteEncoded = encodeURIComponent("obsidian://open?=" + vaultName + "&file=" + noteURL);
window.open(
`omnifocus:///add?name=${taskNameEncoded}&note=${taskNoteEncoded}`
`omnifocus:///add?name=${taskNameEncoded}&note=${taskNoteEncoded}&due=${taskDate}`
);
}
if (this.settings.markComplete) {
let completedText = editorText.replace(/- \[ \]/g, "- [x]");
const completedText = editorText.replace(/([-*]) \[ \]/g, "$1 [x]");
if (isSelection) {
editor.replaceSelection(completedText);
} else {
@ -73,7 +75,7 @@ export default class TasksToOmnifocus extends Plugin {
}
} catch (err) {
console.error('Error extracting tasks', err);
}
}