From b5803f94b1e2cd6fa623b9a524ac72cbd5b359cf Mon Sep 17 00:00:00 2001 From: ArabCoders Date: Fri, 14 Mar 2025 21:30:29 +0300 Subject: [PATCH 1/4] added export to tasks. --- .vscode/launch.json | 13 ++++ ui/components/TaskForm.vue | 141 +++++++++++++++++++++++++++++++------ ui/pages/presets.vue | 5 +- ui/pages/tasks.vue | 82 ++++++++++++++++++++- 4 files changed, 213 insertions(+), 28 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 1e9f7c07..892e5664 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -43,6 +43,19 @@ "YTP_ACCESS_LOG": "true", } }, + { + "name": "Node: Generate UI", + "request": "launch", + "runtimeArgs": [ + "run", + "generate" + ], + "runtimeExecutable": "yarn", + "type": "node", + "cwd": "${workspaceFolder}/ui", + "console": "internalConsole", + "outputCapture": "std", + }, { "name": "Python: main.py (Deep)", "type": "debugpy", diff --git a/ui/components/TaskForm.vue b/ui/components/TaskForm.vue index 7b439f39..2f6253db 100644 --- a/ui/components/TaskForm.vue +++ b/ui/components/TaskForm.vue @@ -1,7 +1,41 @@ @@ -347,4 +358,69 @@ const statusHandler = async stream => { return } } + +const exportTask = async task => { + let preset = config.presets.find(p => p.name === task.preset) + if (!preset) { + toast.error('Preset not found.') + return + } + + const info = JSON.parse(JSON.stringify(task)) + preset = JSON.parse(JSON.stringify(preset)) + + let data = { + name: info.name, + url: info.url, + preset: 'default', + timer: info.timer, + folder: info.folder, + template: info.template, + config: info.config, + } + + // -- merge preset options with task args. + let args = {} + + if (preset.args && Object.keys(preset.args).length > 0) { + for (const key of Object.keys(preset.args)) { + args[key] = preset.args[key] + } + } + + if (preset.format !== 'not_set' && preset.format) { + args.format = preset.format + } + + if (preset.postprocessors && preset.postprocessors.length > 0) { + args.postprocessors = preset.postprocessors + } + + if (preset.folder && !info.folder) { + data.folder = preset.folder + } + + if (preset.template && !info.template) { + data.template = preset.template + } + + if (!data.config || Object.keys(data.config).length < 1) { + data.config = {} + } + + for (const key of Object.keys(args)) { + if (key in data.config && Array.isArray(args[key]) && Array.isArray(data.config[key])) { + data.config[key] = data.config[key].concat(args[key]) + continue + } + + if (data?.config[key]) { + continue + } + + data.config[key] = args[key] + } + + return copyText(base64UrlEncode(JSON.stringify(data))); +} From fc696b6afabe9df73ab6516f6035d96e57e57c45 Mon Sep 17 00:00:00 2001 From: ArabCoders Date: Fri, 14 Mar 2025 22:46:31 +0300 Subject: [PATCH 2/4] standardize the form design, and update packages to latest version. --- Pipfile.lock | 36 +- app/library/Notifications.py | 5 +- ui/components/NotificationForm.vue | 448 ++++++----- ui/components/PresetForm.vue | 134 ++-- ui/components/TaskForm.vue | 452 +++++------ ui/package.json | 12 +- ui/pages/notifications.vue | 39 +- ui/pages/presets.vue | 11 +- ui/pages/tasks.vue | 22 +- ui/yarn.lock | 1143 ++++++++++------------------ 10 files changed, 1072 insertions(+), 1230 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index a9288fc6..7a290fa8 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -27,11 +27,11 @@ }, "aiohappyeyeballs": { "hashes": [ - "sha256:0850b580748c7071db98bffff6d4c94028d0d3035acc20fd721a0ce7e8cac35d", - "sha256:18fde6204a76deeabc97c48bdd01d5801cfda5d6b9c8bbeb1aaaee9d648ca191" + "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", + "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8" ], "markers": "python_version >= '3.9'", - "version": "==2.5.0" + "version": "==2.6.1" }, "aiohttp": { "hashes": [ @@ -149,11 +149,11 @@ }, "attrs": { "hashes": [ - "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e", - "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a" + "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", + "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b" ], "markers": "python_version >= '3.8'", - "version": "==25.1.0" + "version": "==25.3.0" }, "bidict": { "hashes": [ @@ -436,20 +436,20 @@ }, "curl-cffi": { "hashes": [ - "sha256:202145686c5ebc00635b9b15cc8afa82523f14197a640b618bb09d59e74889ba", - "sha256:26d61c5b5c59e9c4a006cba35feccd73c75ce981db0da89a3da88dd280ead7a0", - "sha256:429a14e724898b7001be2776caa87c294e8062f0ac652619df5854eeae6e156c", - "sha256:4818e074b61cb209bd8d4d0d03783313d4773e6b51f8b815e25aad9cc146a7b7", - "sha256:752a4686c062a8bd6e25961845ea812704ba089a0e6863957deb2a30590105bb", - "sha256:7968c3ea37bec96bbe4b623c0fa59c09d3cdaf173da2e0a516b19db52f05caa4", - "sha256:7b1177203e47d3248ccb250e63983eaddf39fce5332f91cc2993ea54cae5aa21", - "sha256:7f41bd0a5dafe3fe19319da1c31302a40634ec4779769ca3d954d8673eb2b4f2", - "sha256:81ba09622e68f8392236212dd0afd75dcd18cbe1be16467deb4d441d62cfc8a3", - "sha256:ea8f0511bc6882d30a985ddc53fa26d109f2977715d4851aef162bfa308cd2a8" + "sha256:04b1d23f0f54f94b8298ed417e6bece85a635d674723cde2b155da686efbf78f", + "sha256:15053d01c6a3e3c4c5331ce9e07e1dc31ca5aa063babca05d18b1b5aad369fac", + "sha256:1e60b8ecc80bfb0da4ff73ac9d194e80482b50ecbb8aefec1b0edaf45fafd80e", + "sha256:3969e4260ad4dab638fb6dbe349623f9f5f022435c7fd21daf760231380367fa", + "sha256:3e37b35268ca58492f54ed020ae4b50c33ee0debad4145db9f746f04ed466eb0", + "sha256:458f53c41bd76d90d8974d60c3a8a0dd902a1af1f9056215cf24f454bcedc6fd", + "sha256:59389773a1556e087120e91eac1e33f84f1599d853e1bc168b153e4cdf360002", + "sha256:cfc74f09e44d2d8d61b8e8fda3a7004b5bc0217a703fbbe9e16ef8caa1f3d4e4", + "sha256:f03f4b17dc679c82bd3c946feb1ad38749b2ad731d7c26daefaac857d1c72fd9", + "sha256:f1b0c7b7b81afca15a0e56c593d3c2bdcd4fd4c9ca49b9ded5b9d8076ba78ff9" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==0.9.0" + "markers": "python_version >= '3.9'", + "version": "==0.10.0" }, "debugpy": { "hashes": [ diff --git a/app/library/Notifications.py b/app/library/Notifications.py index d8922c7b..f5d0304e 100644 --- a/app/library/Notifications.py +++ b/app/library/Notifications.py @@ -360,7 +360,10 @@ class Notification(metaclass=Singleton): method=target.get("request", {}).get("method", "POST"), url=target.get("request", {}).get("url"), headers=[ - TargetRequestHeader(key=h.get("key"), value=h.get("value")) + TargetRequestHeader( + key=str(h.get("key", "")).strip(), + value=str(h.get("value", "")).strip(), + ) for h in target.get("request", {}).get("headers", []) ], ), diff --git a/ui/components/NotificationForm.vue b/ui/components/NotificationForm.vue index 79dfced1..112e54d4 100644 --- a/ui/components/NotificationForm.vue +++ b/ui/components/NotificationForm.vue @@ -1,202 +1,243 @@ diff --git a/ui/components/PresetForm.vue b/ui/components/PresetForm.vue index b30699e6..e1c499e9 100644 --- a/ui/components/PresetForm.vue +++ b/ui/components/PresetForm.vue @@ -1,38 +1,5 @@ diff --git a/ui/components/TaskForm.vue b/ui/components/TaskForm.vue index 2f6253db..63580dd7 100644 --- a/ui/components/TaskForm.vue +++ b/ui/components/TaskForm.vue @@ -1,222 +1,232 @@