Skip to content

Commit

Permalink
feat: 1. 支持重复任务,多次加入番茄钟
Browse files Browse the repository at this point in the history
  • Loading branch information
JuckZ committed Apr 20, 2023
1 parent 99ecdea commit 24f5bcb
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 58 deletions.
2 changes: 1 addition & 1 deletion src/locale/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export default {
totalTime: 'Total time',
noTimeLine: 'No timeline content',
startTask: '🚀 Start',
repeatTask: '🚀 Repeat',
repeatTask: '🔁 Repeat',
stopTask: '⏸️ Stop',
finishTask: '✅ Finish',
cancelTask: '❎ Cancel',
Expand Down
2 changes: 1 addition & 1 deletion src/locale/zh-cn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export default {
totalTime: '总专注时长',
noTimeLine: '无时间线内容',
startTask: '🚀 开始',
repeatTask: '🚀 重复',
repeatTask: '🔁 重复',
stopTask: '⏸️ 暂停',
finishTask: '✅ 完成',
cancelTask: '❎ 取消',
Expand Down
82 changes: 29 additions & 53 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,34 +17,34 @@ import type { MarkdownFileInfo, PluginManifest } from 'obsidian';

import { ref } from 'vue';
import type { Database } from 'sql.js';
import Replacer from './Replacer';
import Process from './process/Process';
import { checkInDefaultPath, checkInList, customSnippetPath } from './utils/constants';
import { monkeyPatchConsole } from './obsidian-hack/obsidian-debug-mobile';
import { EmojiPickerModal, ImageOriginModal, PomodoroReminderModal } from './ui/modal';
import { POMODORO_HISTORY_VIEW, PomodoroHistoryView } from './ui/view/PomodoroHistoryView';
import { BROWSER_VIEW, BrowserView } from './ui/view/BrowserView';
import { codeEmoji } from './render/Emoji';
import { toggleCursorEffects, toggleMouseClickEffects } from './render/CursorEffects';
import LoggerUtil from './utils/logger';
import { getAllFiles, getCleanTitle, getNotePath } from './utils/file';
import { getWeather } from './utils/weather';
import { getTagsFromTask, getTaskContentFromTask } from './utils/common';
import { DBUtil } from './utils/db/db';
import { insertAfterHandler } from './utils/content';
import { getLocalRandomImg, searchPicture } from './utils/genBanner';
import { PomodoroStatus } from './utils/pomotodo';
import { AwesomeBrainSettingTab, SETTINGS } from './settings';
import { PluginDataIO } from './data';
import { eventTypes } from './types/types';
import type { ExtApp } from './types/types';
import { onCodeMirrorChange, toggleBlast, toggleShake } from './render/Blast';
import type { Pomodoro } from './schemas/spaces';
import { notifyNtfy } from './api';
import t from './i18n';
import './main.scss';
import { NotifyUtil } from './utils/notify';
import { EditorUtil, EditorUtils } from './utils/editor';
import Replacer from '@/Replacer';
import Process from '@/process/Process';
import { checkInDefaultPath, checkInList, customSnippetPath } from '@/utils/constants';
import { monkeyPatchConsole } from '@/obsidian-hack/obsidian-debug-mobile';
import { EmojiPickerModal, ImageOriginModal, PomodoroReminderModal } from '@/ui/modal';
import { POMODORO_HISTORY_VIEW, PomodoroHistoryView } from '@/ui/view/PomodoroHistoryView';
import { BROWSER_VIEW, BrowserView } from '@/ui/view/BrowserView';
import { codeEmoji } from '@/render/Emoji';
import { toggleCursorEffects, toggleMouseClickEffects } from '@/render/CursorEffects';
import LoggerUtil from '@/utils/logger';
import { getAllFiles, getCleanTitle, getNotePath } from '@/utils/file';
import { getWeather } from '@/utils/weather';
import { getTagsFromTask, getTaskContentFromTask } from '@/utils/common';
import { DBUtil } from '@/utils/db/db';
import { insertAfterHandler } from '@/utils/content';
import { getLocalRandomImg, searchPicture } from '@/utils/genBanner';
import { PomodoroStatus } from '@/utils/pomotodo';
import { AwesomeBrainSettingTab, SETTINGS } from '@/settings';
import { PluginDataIO } from '@/data';
import { eventTypes } from '@/types/types';
import type { ExtApp } from '@/types/types';
import { onCodeMirrorChange, toggleBlast, toggleShake } from '@/render/Blast';
import type { Pomodoro } from '@/schemas/spaces';
import { notifyNtfy } from '@/api';
import '@/main.scss';
import { NotifyUtil } from '@/utils/notify';
import { EditorUtil, EditorUtils } from '@/utils/editor';
import t from '@/i18n';
import { usePomodoroStore, useSystemStore } from '@/stores';
import { UpdateModal } from '@/ui/modal/UpdateModal';

Expand Down Expand Up @@ -111,30 +111,6 @@ export default class AwesomeBrainManagerPlugin extends Plugin {
this.openBrowser(e.detail.url);
}

async addPomodoro(task: string) {
task = task.replace('- [x] ', '');
task = task.replace('- [ ] ', '').trim();
if (!task) {
task = t.menu.defaultTask + Date.now();
}
const createTime = moment().format('YYYY-MM-DD HH:mm:ss');
const tags: string[] = getTagsFromTask(task);
const content: string = getTaskContentFromTask(task);
const tagsStr = tags.join(',');
const currentPomodoro = {
timestamp: new Date().getTime() + '',
task: content,
start: '',
createTime,
spend: '0',
breaknum: '0',
expectedTime: (parseFloat(SETTINGS.expectedTime.value) * 60 * 1000).toString(),
status: 'todo',
tags: tagsStr,
};
usePomodoroStore().addPomodoro(currentPomodoro as Pomodoro);
}

get snippetPath() {
return this.app.customCss.getSnippetPath(customSnippetPath);
}
Expand Down Expand Up @@ -219,7 +195,7 @@ export default class AwesomeBrainManagerPlugin extends Plugin {
icon: 'send',
clickFn: async (menu: Menu, editor: Editor, info: MarkdownView | MarkdownFileInfo) => {
const task = EditorUtils.getCurrentSelection(editor);
this.addPomodoro(task);
usePomodoroStore().quickAddPomodoro(task);
},
},
{
Expand Down
28 changes: 28 additions & 0 deletions src/stores/pomodoro.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { defineStore } from 'pinia';
import { type Ref, ref } from 'vue';
import type { Pomodoro } from '@/schemas/spaces';
import t from '@/i18n';
import { DBUtil } from '@/utils/db/db';
import { getTagsFromTask, getTaskContentFromTask } from '@/utils/common';
import { SETTINGS } from '@/settings';

// TODO 将数据持久化,优化性能 注意不同设备之间的持久化策略
export const usePomodoroStore = defineStore('pomodoro', () => {
Expand All @@ -26,6 +29,30 @@ export const usePomodoroStore = defineStore('pomodoro', () => {
currentPomodoro.value = data.filter(pomodoro => pomodoro.status === 'ing')[0] as Pomodoro;
}

function quickAddPomodoro(task: string) {
task = task.replace('- [x] ', '');
task = task.replace('- [ ] ', '').trim();
if (!task) {
task = t.menu.defaultTask + Date.now();
}
const createTime = moment().format('YYYY-MM-DD HH:mm:ss');
const tags: string[] = getTagsFromTask(task);
const content: string = getTaskContentFromTask(task);
const tagsStr = tags.join(',');
const currentPomodoro = {
timestamp: new Date().getTime() + '',
task: content,
start: '',
createTime,
spend: '0',
breaknum: '0',
expectedTime: (parseFloat(SETTINGS.expectedTime.value) * 60 * 1000).toString(),
status: 'todo',
tags: tagsStr,
};
this.addPomodoro(currentPomodoro as Pomodoro);
}

function addPomodoro(pomodoro: Pomodoro) {
DBUtil.addPomodoro(pomodoro);
pomodoroHistory.value.push(pomodoro);
Expand All @@ -45,6 +72,7 @@ export const usePomodoroStore = defineStore('pomodoro', () => {
totalTask,
pomodoroHistory,
loadPomodoroData,
quickAddPomodoro,
addPomodoro,
updatePomodoro,
deletePomodoro,
Expand Down
5 changes: 2 additions & 3 deletions src/ui/TimeLine.vue
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ const getOptions = currentStatus => {
{
label: t.info.repeatTask,
key: 'repeat',
show: ['done', 'cancelled'].contains(currentStatus),
show: true,
},
{
label: t.info.deleteTask,
Expand All @@ -164,8 +164,7 @@ const handleSelect = (
}
}
if (targetStatus === 'repeat') {
console.log('TODO, add a quick add pomodoro method');
// usePomodoroStore().addPomodoro();
usePomodoroStore().quickAddPomodoro(pomodoro.task);
}
const changed = ps.changeState(targetStatus);
if (changed) {
Expand Down

0 comments on commit 24f5bcb

Please sign in to comment.