From 13cfed9c56d01fd75a80a693678a40d7be7b51bf Mon Sep 17 00:00:00 2001 From: Mic Date: Wed, 16 Apr 2025 23:34:00 +0200 Subject: [PATCH] get_task feature added in mzta-menu.js. see #333 --- _locales/en/messages.json | 8 +++++ js/mzta-menus.js | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index e25b269e..e05c3f41 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1079,6 +1079,14 @@ "message": "Error opening the calendar event dialog", "description": "" }, + "task_getting_data_error": { + "message": "Error getting task data", + "description": "" + }, + "task_opening_dialog_error": { + "message": "Error opening the task dialog", + "description": "" + }, "sparks_not_installed": { "message": "ThunderAI Sparks not installed!", "description": "" diff --git a/js/mzta-menus.js b/js/mzta-menus.js index 89be4316..6e81aa85 100644 --- a/js/mzta-menus.js +++ b/js/mzta-menus.js @@ -266,6 +266,74 @@ export class mzta_Menus { } break; // Get a calendar event info - END } + case 'prompt_get_task': { // Get a task info + let task_data = ''; + let prefs_at = await browser.storage.sync.get({connection_type: '', calendar_enforce_timezone: false, calendar_timezone: '',}); + if((prefs_at.connection_type === '')||(prefs_at.connection_type === null)||(prefs_at.connection_type === undefined)||(prefs_at.connection_type === 'chatgpt_web')){ + console.error("[ThunderAI | GetTask] Invalid connection type: " + prefs_at.connection_type); + taWorkingStatus.stopWorking(); + return {ok:'0'}; + } + /* We expect to receive from the AI a JSON object like this: + * { + * "InitialDate": "YYYYMMDDTHHMMSS", + * "dueDate": "YYYYMMDDTHHMMSS", + * "summary": "Task summary here" + * } + */ + this.logger.log("fullPrompt: " + fullPrompt); + let cmd_GetTask = new mzta_specialCommand(fullPrompt,prefs_at.connection_type,true); + await cmd_GetTask.initWorker(); + try{ + task_data = await cmd_GetTask.sendPrompt(); + // console.log(">>>>>>>>>>> task_data: " + task_data); + }catch(err){ + console.error("[ThunderAI] Error getting task data: ", err.message); + browser.tabs.sendMessage(tabs[0].id, { command: "sendAlert", curr_tab_type: tabs[0].type, message: browser.i18n.getMessage("task_getting_data_error") + ": " + err.message }); + taWorkingStatus.stopWorking(); + return {ok:'0'}; + } + let task_data_obj = {}; + try{ + task_data_obj = extractJsonObject(task_data); + }catch(err){ + console.error("[ThunderAI] Error extracting JSON object from task data: ", err.message); + browser.tabs.sendMessage(tabs[0].id, { command: "sendAlert", curr_tab_type: tabs[0].type, message: browser.i18n.getMessage("task_getting_data_error") + ": " + err.message }); + taWorkingStatus.stopWorking(); + return {ok:'0'}; + } + // Timezone management + task_data_obj.use_timezone = false; + if(prefs_at.calendar_enforce_timezone){ + task_data_obj.use_timezone = true; + task_data_obj.timezone = prefs_at.calendar_timezone; + } + let task_data_str = JSON.stringify(task_data_obj); + // Timezone management - END + this.logger.log("task_data: " + task_data); + this.logger.log("task_data_obj: " + task_data_str); + try{ + let result_openTaskDialog = await browser.runtime.sendMessage('thunderai-sparks@micz.it',{action: "openTaskDialog", task_data: task_data_str}) + if(result_openTaskDialog == 'ok'){ + taWorkingStatus.stopWorking(); + return {ok:'1'}; + } else { + let err = result_openTaskDialog.error; + if (err && typeof err === 'string' && err.startsWith('|>>')) { + result_openTaskDialog.error = browser.i18n.getMessage(result_openTaskDialog.error.substring(3)); + } + browser.tabs.sendMessage(tabs[0].id, { command: "sendAlert", curr_tab_type: tabs[0].type, message: browser.i18n.getMessage("task_opening_dialog_error") + ": " + result_openTaskDialog.error }); + taWorkingStatus.stopWorking(); + return {ok:'0'}; + } + }catch(err){ + console.error("[ThunderAI] Error opening task dialog: ", err); + browser.tabs.sendMessage(tabs[0].id, { command: "sendAlert", curr_tab_type: tabs[0].type, message: browser.i18n.getMessage("task_opening_dialog_error") + ": " + browser.i18n.getMessage("sparks_not_installed") }); + taWorkingStatus.stopWorking(); + return {ok:'0'}; + } + break; + } // Get a task info - END default: console.error("[ThunderAI] Unknown special prompt id: " + curr_prompt.id); taWorkingStatus.stopWorking();