feature: add/edit/delete tasks

This commit is contained in:
kkzzhizhou 2021-11-28 22:47:54 +08:00
parent 876fe85f08
commit ac57825452
7 changed files with 75 additions and 48 deletions

View file

@ -1,9 +1,10 @@
import * as React from "react";
import { Notice } from "obsidian";
import { getStats, scoreTask, makeCronReq, costReward, addTask, deleteTask } from "./habiticaAPI"
import { getStats, scoreTask, makeCronReq, costReward, addTask, deleteTask, updateTask } from "./habiticaAPI"
import Statsview from "./Components/Statsview"
import Taskview from "./Components/Taskview"
import "../i18n"
import { exit } from "process";
class App extends React.Component<any, any> {
private _username = "";
@ -40,7 +41,6 @@ class App extends React.Component<any, any> {
todos: [],
dailys: [],
habits: [],
input_task: "",
}
this.handleChangeTodos = this.handleChangeTodos.bind(this);
this.handleChangeDailys = this.handleChangeDailys.bind(this);
@ -167,9 +167,22 @@ class App extends React.Component<any, any> {
}
}
async sendEditTask(id: string, type: string) {
console.log(id, type)
return (<div className="loading">Loading....</div>)
async sendUpdateTask(id: string, type: string,message: string, title: string, notes: string) {
try {
let response = await updateTask(this.username, this.credentials, id, type, title, notes);
let result = await response.json();
if (result.success === true) {
new Notice(message);
this.reloadData();
} else {
new Notice("Resyncing, please try again");
this.reloadData();
}
} catch (e) {
console.log(e);
new Notice("API Error: Please check credentials")
}
// console.log(id, type,title,notes)
}
handleChangeTodos(event: any) {
@ -205,9 +218,11 @@ class App extends React.Component<any, any> {
this.state.tasks.dailys.forEach((element: any) => {
if (element.id == event.target.id) {
if (element.id == event.target.id) {
if ( event.target.innerText == 'create' ) {
this.sendEditTask(event.target.id, "daily")
} else if (event.target.innerText == 'clear') {
if ( event.target.attributes.title.value == 'submit' ) {
const task_title = event.target.attributes['data-title'].value ? event.target.attributes['data-title'].value:element.text
const task_notes = event.target.attributes['data-notes'].value ? event.target.attributes['data-notes'].value:element.notes
this.sendUpdateTask(event.target.id,'daily',"Update!",task_title,task_notes)
} else if (event.target.attributes.title.value == 'delete') {
this.sendDeleteTask(event.target.id, "Deleted!")
} else if ( !element.completed) {
this.sendScore(event.target.id, "up", "Checked!")
@ -259,7 +274,7 @@ class App extends React.Component<any, any> {
if (event.target.innerText == 'clear') {
this.sendDeleteTask(event.target.id, "Deleted!")
} else if (event.target.innerText == 'create') {
this.sendEditTask(event.target.id, "Edit!")
this.sendUpdateTask(event.target.id,'reward',"Edit!","1","1")
} else {
this.sendReward(target_id, "down", "Cost!")
}