Skip to content

Commit

Permalink
Merge pull request #13 from hissohathair/collected-fixes
Browse files Browse the repository at this point in the history
Collected fixes for some open issues
  • Loading branch information
lizard-heart authored Aug 15, 2024
2 parents f50f765 + 66b83fb commit 5c54131
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 27 deletions.
34 changes: 34 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -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: 17 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -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.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
18 changes: 9 additions & 9 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"id": "tasks-to-omnifocus",
"name": "Send Tasks to OmniFocus",
"version": "1.0.7",
"minAppVersion": "0.12.0",
"description": "An Obsidian plugin will extract tasks from the current note and create them in OmniFocus.",
"author": "Henry Gustafson",
"authorUrl": "https://lizard-heart.github.io",
"fundingUrl": "https://buymeacoffee.com/lizardheart",
"isDesktopOnly": false
"id": "tasks-to-omnifocus",
"name": "Send Tasks to OmniFocus",
"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",
"authorUrl": "https://lizard-heart.github.io",
"fundingUrl": "https://buymeacoffee.com/lizardheart",
"isDesktopOnly": false
}
38 changes: 20 additions & 18 deletions src/main.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
import { serialize } from "monkey-around";
import {
MarkdownView,
CachedMetadata,
Notice,
Plugin,
TFile,
Vault,
Editor,
} from "obsidian";

Expand Down Expand Up @@ -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);

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);
const tasks = editorText.match(/[-*] \[ \] .*/g);

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 {
Expand All @@ -73,7 +75,7 @@ export default class TasksToOmnifocus extends Plugin {
}

} catch (err) {

console.error('Error extracting tasks', err);
}
}

Expand Down

0 comments on commit 5c54131

Please sign in to comment.