diff --git a/backend/.sqlx/query-0a026af1b84c3724cadcd162422f0402b908050b06cbc8d8987469217f59dbcf.json b/backend/.sqlx/query-0a026af1b84c3724cadcd162422f0402b908050b06cbc8d8987469217f59dbcf.json deleted file mode 100644 index 08429a6b6f..0000000000 --- a/backend/.sqlx/query-0a026af1b84c3724cadcd162422f0402b908050b06cbc8d8987469217f59dbcf.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "INSERT INTO flow_version\n (workspace_id, path, value, schema, created_by)\n\n SELECT workspace_id, path, value, schema, created_by\n FROM flow_version WHERE path = $1 AND workspace_id = $2\n\n RETURNING id", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int8" - } - ], - "parameters": { - "Left": [ - "Text", - "Text" - ] - }, - "nullable": [ - false - ] - }, - "hash": "0a026af1b84c3724cadcd162422f0402b908050b06cbc8d8987469217f59dbcf" -} diff --git a/backend/.sqlx/query-15174732d4b52510d1ea73ce5d6192b7373de62395626a18ad3672b604e23788.json b/backend/.sqlx/query-15174732d4b52510d1ea73ce5d6192b7373de62395626a18ad3672b604e23788.json deleted file mode 100644 index 82c7470a16..0000000000 --- a/backend/.sqlx/query-15174732d4b52510d1ea73ce5d6192b7373de62395626a18ad3672b604e23788.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE flow SET versions = array_append(versions, $1) WHERE path = $2 AND workspace_id = $3 AND NOT (versions @> ARRAY[$1::bigint])", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Int8", - "Text", - "Text" - ] - }, - "nullable": [] - }, - "hash": "15174732d4b52510d1ea73ce5d6192b7373de62395626a18ad3672b604e23788" -} diff --git a/backend/.sqlx/query-23419adcd74c326d716527293eff518b42f4cdb33e034441015494bd26c172d2.json b/backend/.sqlx/query-23419adcd74c326d716527293eff518b42f4cdb33e034441015494bd26c172d2.json index 5b810738b3..1cb68e3acb 100644 --- a/backend/.sqlx/query-23419adcd74c326d716527293eff518b42f4cdb33e034441015494bd26c172d2.json +++ b/backend/.sqlx/query-23419adcd74c326d716527293eff518b42f4cdb33e034441015494bd26c172d2.json @@ -38,7 +38,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-23fb2099fe211c9c5388f28097ed8635198a4144a3415121800f5df52b2a133f.json b/backend/.sqlx/query-23fb2099fe211c9c5388f28097ed8635198a4144a3415121800f5df52b2a133f.json new file mode 100644 index 0000000000..629531be93 --- /dev/null +++ b/backend/.sqlx/query-23fb2099fe211c9c5388f28097ed8635198a4144a3415121800f5df52b2a133f.json @@ -0,0 +1,54 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT script_path, is_flow, workspace_id, edited_by, email, path FROM email_trigger WHERE workspace_id = $1 AND local_part = $2 AND (workspaced_local_part = TRUE OR $3 IS TRUE)", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "script_path", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "is_flow", + "type_info": "Bool" + }, + { + "ordinal": 2, + "name": "workspace_id", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "edited_by", + "type_info": "Varchar" + }, + { + "ordinal": 4, + "name": "email", + "type_info": "Varchar" + }, + { + "ordinal": 5, + "name": "path", + "type_info": "Varchar" + } + ], + "parameters": { + "Left": [ + "Text", + "Text", + "Bool" + ] + }, + "nullable": [ + false, + false, + false, + false, + false, + false + ] + }, + "hash": "23fb2099fe211c9c5388f28097ed8635198a4144a3415121800f5df52b2a133f" +} diff --git a/backend/.sqlx/query-28a5caa6e8a8a95d228908cc83e9109986a0803d50164a259aabcdee81014d07.json b/backend/.sqlx/query-28a5caa6e8a8a95d228908cc83e9109986a0803d50164a259aabcdee81014d07.json new file mode 100644 index 0000000000..6e58d3d386 --- /dev/null +++ b/backend/.sqlx/query-28a5caa6e8a8a95d228908cc83e9109986a0803d50164a259aabcdee81014d07.json @@ -0,0 +1,23 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT EXISTS(\n SELECT 1 \n FROM email_trigger \n WHERE \n ((workspaced_local_part IS TRUE AND workspace_id || '-' || local_part = $1) \n OR (workspaced_local_part IS FALSE AND local_part = $1))\n AND ($2::TEXT IS NULL OR path != $2)\n )\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "exists", + "type_info": "Bool" + } + ], + "parameters": { + "Left": [ + "Text", + "Text" + ] + }, + "nullable": [ + null + ] + }, + "hash": "28a5caa6e8a8a95d228908cc83e9109986a0803d50164a259aabcdee81014d07" +} diff --git a/backend/.sqlx/query-3700706bb0408d6593be7f15f8aee4d6a023109e5dcfee7009a25ddf5db5e28d.json b/backend/.sqlx/query-3700706bb0408d6593be7f15f8aee4d6a023109e5dcfee7009a25ddf5db5e28d.json new file mode 100644 index 0000000000..8ccffb9455 --- /dev/null +++ b/backend/.sqlx/query-3700706bb0408d6593be7f15f8aee4d6a023109e5dcfee7009a25ddf5db5e28d.json @@ -0,0 +1,52 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT script_path, is_flow, workspace_id, edited_by, email, path FROM email_trigger WHERE local_part = $1 AND workspaced_local_part = FALSE", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "script_path", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "is_flow", + "type_info": "Bool" + }, + { + "ordinal": 2, + "name": "workspace_id", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "edited_by", + "type_info": "Varchar" + }, + { + "ordinal": 4, + "name": "email", + "type_info": "Varchar" + }, + { + "ordinal": 5, + "name": "path", + "type_info": "Varchar" + } + ], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [ + false, + false, + false, + false, + false, + false + ] + }, + "hash": "3700706bb0408d6593be7f15f8aee4d6a023109e5dcfee7009a25ddf5db5e28d" +} diff --git a/backend/.sqlx/query-42b4b73e9d60348e2d90fcade9dcad6d8995242dc20a4e14c1a8fae4fc6a9fd2.json b/backend/.sqlx/query-42b4b73e9d60348e2d90fcade9dcad6d8995242dc20a4e14c1a8fae4fc6a9fd2.json index c1a38be77e..52a2d901ec 100644 --- a/backend/.sqlx/query-42b4b73e9d60348e2d90fcade9dcad6d8995242dc20a4e14c1a8fae4fc6a9fd2.json +++ b/backend/.sqlx/query-42b4b73e9d60348e2d90fcade9dcad6d8995242dc20a4e14c1a8fae4fc6a9fd2.json @@ -22,7 +22,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-4c70aac8f83e9b76628a65df351c16cb630aa963d20898b084b043a59bfc4ba8.json b/backend/.sqlx/query-4c70aac8f83e9b76628a65df351c16cb630aa963d20898b084b043a59bfc4ba8.json new file mode 100644 index 0000000000..cc799822e5 --- /dev/null +++ b/backend/.sqlx/query-4c70aac8f83e9b76628a65df351c16cb630aa963d20898b084b043a59bfc4ba8.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT \n owner, \n email,\n path,\n is_flow\n FROM \n capture_config\n WHERE \n workspace_id = $1\n AND trigger_config->>'local_part' = $2\n AND trigger_kind = 'email'::TRIGGER_KIND \n AND last_client_ping > NOW() - INTERVAL '10 seconds'\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "owner", + "type_info": "Varchar" + }, + { + "ordinal": 1, + "name": "email", + "type_info": "Varchar" + }, + { + "ordinal": 2, + "name": "path", + "type_info": "Varchar" + }, + { + "ordinal": 3, + "name": "is_flow", + "type_info": "Bool" + } + ], + "parameters": { + "Left": [ + "Text", + "Text" + ] + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "4c70aac8f83e9b76628a65df351c16cb630aa963d20898b084b043a59bfc4ba8" +} diff --git a/backend/.sqlx/query-4f547c0fd54f3bc57212ce87810e35adf640d44d607e62a1fb296e38ac3fdd36.json b/backend/.sqlx/query-4f547c0fd54f3bc57212ce87810e35adf640d44d607e62a1fb296e38ac3fdd36.json index 15b107811b..cb53599789 100644 --- a/backend/.sqlx/query-4f547c0fd54f3bc57212ce87810e35adf640d44d607e62a1fb296e38ac3fdd36.json +++ b/backend/.sqlx/query-4f547c0fd54f3bc57212ce87810e35adf640d44d607e62a1fb296e38ac3fdd36.json @@ -30,7 +30,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } @@ -66,7 +67,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-54ee00c98dc50ca3da0e2195a78e6df77fd1e8c969667b267aed3347335c91ab.json b/backend/.sqlx/query-54ee00c98dc50ca3da0e2195a78e6df77fd1e8c969667b267aed3347335c91ab.json new file mode 100644 index 0000000000..7be240422d --- /dev/null +++ b/backend/.sqlx/query-54ee00c98dc50ca3da0e2195a78e6df77fd1e8c969667b267aed3347335c91ab.json @@ -0,0 +1,24 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT EXISTS(\n SELECT 1 \n FROM email_trigger \n WHERE \n workspace_id = $1\n AND local_part = $2 \n AND ($3::TEXT IS NULL OR path != $3)\n )\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "exists", + "type_info": "Bool" + } + ], + "parameters": { + "Left": [ + "Text", + "Text", + "Text" + ] + }, + "nullable": [ + null + ] + }, + "hash": "54ee00c98dc50ca3da0e2195a78e6df77fd1e8c969667b267aed3347335c91ab" +} diff --git a/backend/.sqlx/query-5a219a2532517869578c4504ff3153c43903f929ae5d62fbba12610f89c36d55.json b/backend/.sqlx/query-5a219a2532517869578c4504ff3153c43903f929ae5d62fbba12610f89c36d55.json index 36ddb8ab9f..713ccb9dd3 100644 --- a/backend/.sqlx/query-5a219a2532517869578c4504ff3153c43903f929ae5d62fbba12610f89c36d55.json +++ b/backend/.sqlx/query-5a219a2532517869578c4504ff3153c43903f929ae5d62fbba12610f89c36d55.json @@ -15,7 +15,7 @@ ] }, "nullable": [ - true + null ] }, "hash": "5a219a2532517869578c4504ff3153c43903f929ae5d62fbba12610f89c36d55" diff --git a/backend/.sqlx/query-6fafc23924eded970689040bd4a94d4d23ebee4f2b7d37bb54c47edb7720be00.json b/backend/.sqlx/query-6fafc23924eded970689040bd4a94d4d23ebee4f2b7d37bb54c47edb7720be00.json new file mode 100644 index 0000000000..706bcacdb2 --- /dev/null +++ b/backend/.sqlx/query-6fafc23924eded970689040bd4a94d4d23ebee4f2b7d37bb54c47edb7720be00.json @@ -0,0 +1,25 @@ +{ + "db_name": "PostgreSQL", + "query": "\n UPDATE email_trigger \n SET \n script_path = $1,\n path = $2,\n is_flow = $3,\n local_part = $4,\n workspaced_local_part = $5,\n edited_by = $6,\n email = $7,\n edited_at = now(),\n error_handler_path = $8,\n error_handler_args = $9,\n retry = $10\n WHERE \n workspace_id = $11 AND path = $12\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + "Bool", + "Varchar", + "Bool", + "Varchar", + "Varchar", + "Varchar", + "Jsonb", + "Jsonb", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "6fafc23924eded970689040bd4a94d4d23ebee4f2b7d37bb54c47edb7720be00" +} diff --git a/backend/.sqlx/query-7fbf72d9059fcd77e4c1112fa4fa22e4276c1da653475628889ce17dc904fbaa.json b/backend/.sqlx/query-7fbf72d9059fcd77e4c1112fa4fa22e4276c1da653475628889ce17dc904fbaa.json index ca02b5c648..693785ebd0 100644 --- a/backend/.sqlx/query-7fbf72d9059fcd77e4c1112fa4fa22e4276c1da653475628889ce17dc904fbaa.json +++ b/backend/.sqlx/query-7fbf72d9059fcd77e4c1112fa4fa22e4276c1da653475628889ce17dc904fbaa.json @@ -25,7 +25,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-87564a196a1662f524407d853db506bf08c28efe82b68b3d44bafbd3d0e91c29.json b/backend/.sqlx/query-87564a196a1662f524407d853db506bf08c28efe82b68b3d44bafbd3d0e91c29.json index e2acac048f..36927a7fd7 100644 --- a/backend/.sqlx/query-87564a196a1662f524407d853db506bf08c28efe82b68b3d44bafbd3d0e91c29.json +++ b/backend/.sqlx/query-87564a196a1662f524407d853db506bf08c28efe82b68b3d44bafbd3d0e91c29.json @@ -33,7 +33,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-9c50e3a136a8ee3ec56e083f26d3a960b89e02ec40b292f3b5198baf2a1d3dbf.json b/backend/.sqlx/query-9c50e3a136a8ee3ec56e083f26d3a960b89e02ec40b292f3b5198baf2a1d3dbf.json index c21c30c012..94bffa26d0 100644 --- a/backend/.sqlx/query-9c50e3a136a8ee3ec56e083f26d3a960b89e02ec40b292f3b5198baf2a1d3dbf.json +++ b/backend/.sqlx/query-9c50e3a136a8ee3ec56e083f26d3a960b89e02ec40b292f3b5198baf2a1d3dbf.json @@ -30,7 +30,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-9ee36b224e931f24b4d48b22de0095fa1a373c2f9fdda11ce30fec6dda362d3d.json b/backend/.sqlx/query-9ee36b224e931f24b4d48b22de0095fa1a373c2f9fdda11ce30fec6dda362d3d.json deleted file mode 100644 index 1743998e54..0000000000 --- a/backend/.sqlx/query-9ee36b224e931f24b4d48b22de0095fa1a373c2f9fdda11ce30fec6dda362d3d.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n UPDATE \n flow \n SET\n path = $1,\n summary = $2,\n description = $3,\n dependency_job = NULL,\n lock_error_logs = '',\n draft_only = NULL,\n tag = $4,\n dedicated_worker = $5,\n visible_to_runner_only = $6,\n on_behalf_of_email = $7,\n value = $8,\n schema = $9::text::json,\n edited_by = $10,\n edited_at = now()\n WHERE \n path = $11 AND workspace_id = $12", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Varchar", - "Text", - "Text", - "Varchar", - "Bool", - "Bool", - "Text", - "Jsonb", - "Text", - "Varchar", - "Text", - "Text" - ] - }, - "nullable": [] - }, - "hash": "9ee36b224e931f24b4d48b22de0095fa1a373c2f9fdda11ce30fec6dda362d3d" -} diff --git a/backend/.sqlx/query-6ca3ae85ddeb2334c9ae4bd7682daef744a1b10b4f47bc7355a97011bc366aae.json b/backend/.sqlx/query-a7a23229d6915d7fdeea8073d31be6e7d9f7a8581bdbb5914f2c5b49f37dbc36.json similarity index 54% rename from backend/.sqlx/query-6ca3ae85ddeb2334c9ae4bd7682daef744a1b10b4f47bc7355a97011bc366aae.json rename to backend/.sqlx/query-a7a23229d6915d7fdeea8073d31be6e7d9f7a8581bdbb5914f2c5b49f37dbc36.json index 658b99f032..b34c87ca4c 100644 --- a/backend/.sqlx/query-6ca3ae85ddeb2334c9ae4bd7682daef744a1b10b4f47bc7355a97011bc366aae.json +++ b/backend/.sqlx/query-a7a23229d6915d7fdeea8073d31be6e7d9f7a8581bdbb5914f2c5b49f37dbc36.json @@ -1,11 +1,10 @@ { "db_name": "PostgreSQL", - "query": "\n UPDATE \n http_trigger \n SET \n workspaced_route = $1,\n wrap_body = $2,\n raw_string = $3,\n authentication_resource_path = $4,\n script_path = $5, \n path = $6, \n is_flow = $7, \n http_method = $8, \n static_asset_config = $9, \n edited_by = $10, \n email = $11, \n is_async = $12, \n authentication_method = $13, \n summary = $14,\n description = $15,\n edited_at = now(), \n is_static_website = $16,\n error_handler_path = $17,\n error_handler_args = $18,\n retry = $19\n WHERE \n workspace_id = $20 AND \n path = $21\n ", + "query": "\n UPDATE \n http_trigger \n SET \n wrap_body = $1,\n raw_string = $2,\n authentication_resource_path = $3,\n script_path = $4, \n path = $5, \n is_flow = $6, \n http_method = $7, \n static_asset_config = $8, \n edited_by = $9, \n email = $10, \n is_async = $11, \n authentication_method = $12, \n summary = $13,\n description = $14,\n edited_at = now(), \n is_static_website = $15,\n error_handler_path = $16,\n error_handler_args = $17,\n retry = $18\n WHERE \n workspace_id = $19 AND \n path = $20\n ", "describe": { "columns": [], "parameters": { "Left": [ - "Bool", "Bool", "Bool", "Varchar", @@ -57,5 +56,5 @@ }, "nullable": [] }, - "hash": "6ca3ae85ddeb2334c9ae4bd7682daef744a1b10b4f47bc7355a97011bc366aae" + "hash": "a7a23229d6915d7fdeea8073d31be6e7d9f7a8581bdbb5914f2c5b49f37dbc36" } diff --git a/backend/.sqlx/query-acb094aef60bba9083087264d65034fce38417099f15e8312be72a386f10bc1f.json b/backend/.sqlx/query-acb094aef60bba9083087264d65034fce38417099f15e8312be72a386f10bc1f.json new file mode 100644 index 0000000000..805e5f0e79 --- /dev/null +++ b/backend/.sqlx/query-acb094aef60bba9083087264d65034fce38417099f15e8312be72a386f10bc1f.json @@ -0,0 +1,23 @@ +{ + "db_name": "PostgreSQL", + "query": "\n UPDATE email_trigger \n SET \n script_path = $1,\n path = $2,\n is_flow = $3,\n edited_by = $4,\n email = $5,\n edited_at = now(),\n error_handler_path = $6,\n error_handler_args = $7,\n retry = $8\n WHERE \n workspace_id = $9 AND path = $10\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + "Bool", + "Varchar", + "Varchar", + "Varchar", + "Jsonb", + "Jsonb", + "Text", + "Text" + ] + }, + "nullable": [] + }, + "hash": "acb094aef60bba9083087264d65034fce38417099f15e8312be72a386f10bc1f" +} diff --git a/backend/.sqlx/query-b3f0595cacba194e08b9a3e244d9e637e9e156cd85b69126c87dfff89a47711d.json b/backend/.sqlx/query-b3f0595cacba194e08b9a3e244d9e637e9e156cd85b69126c87dfff89a47711d.json index a20f4e47ad..d55d9a0a43 100644 --- a/backend/.sqlx/query-b3f0595cacba194e08b9a3e244d9e637e9e156cd85b69126c87dfff89a47711d.json +++ b/backend/.sqlx/query-b3f0595cacba194e08b9a3e244d9e637e9e156cd85b69126c87dfff89a47711d.json @@ -22,7 +22,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/.sqlx/query-aa0215d4174c1aeda8631bcd582c895329d2daf722d360fbcbdef6f04bb1400f.json b/backend/.sqlx/query-d1d9a3184f3470949840cc07414d08641527a4fe329204c65c49ab82d9ee4afb.json similarity index 85% rename from backend/.sqlx/query-aa0215d4174c1aeda8631bcd582c895329d2daf722d360fbcbdef6f04bb1400f.json rename to backend/.sqlx/query-d1d9a3184f3470949840cc07414d08641527a4fe329204c65c49ab82d9ee4afb.json index 9526b72f55..2d3fc8b5b7 100644 --- a/backend/.sqlx/query-aa0215d4174c1aeda8631bcd582c895329d2daf722d360fbcbdef6f04bb1400f.json +++ b/backend/.sqlx/query-d1d9a3184f3470949840cc07414d08641527a4fe329204c65c49ab82d9ee4afb.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n EXISTS(SELECT 1 FROM websocket_trigger WHERE workspace_id = $1) AS \"websocket_used!\",\n EXISTS(SELECT 1 FROM http_trigger WHERE workspace_id = $1) AS \"http_routes_used!\",\n EXISTS(SELECT 1 FROM kafka_trigger WHERE workspace_id = $1) as \"kafka_used!\",\n EXISTS(SELECT 1 FROM nats_trigger WHERE workspace_id = $1) as \"nats_used!\",\n EXISTS(SELECT 1 FROM postgres_trigger WHERE workspace_id = $1) AS \"postgres_used!\",\n EXISTS(SELECT 1 FROM mqtt_trigger WHERE workspace_id = $1) AS \"mqtt_used!\",\n EXISTS(SELECT 1 FROM sqs_trigger WHERE workspace_id = $1) AS \"sqs_used!\",\n EXISTS(SELECT 1 FROM gcp_trigger WHERE workspace_id = $1) AS \"gcp_used!\"\n ", + "query": "\n SELECT\n EXISTS(SELECT 1 FROM websocket_trigger WHERE workspace_id = $1) AS \"websocket_used!\",\n EXISTS(SELECT 1 FROM http_trigger WHERE workspace_id = $1) AS \"http_routes_used!\",\n EXISTS(SELECT 1 FROM kafka_trigger WHERE workspace_id = $1) as \"kafka_used!\",\n EXISTS(SELECT 1 FROM nats_trigger WHERE workspace_id = $1) as \"nats_used!\",\n EXISTS(SELECT 1 FROM postgres_trigger WHERE workspace_id = $1) AS \"postgres_used!\",\n EXISTS(SELECT 1 FROM mqtt_trigger WHERE workspace_id = $1) AS \"mqtt_used!\",\n EXISTS(SELECT 1 FROM sqs_trigger WHERE workspace_id = $1) AS \"sqs_used!\",\n EXISTS(SELECT 1 FROM gcp_trigger WHERE workspace_id = $1) AS \"gcp_used!\",\n EXISTS(SELECT 1 FROM email_trigger WHERE workspace_id = $1) AS \"email_used!\"\n ", "describe": { "columns": [ { @@ -42,6 +42,11 @@ "ordinal": 7, "name": "gcp_used!", "type_info": "Bool" + }, + { + "ordinal": 8, + "name": "email_used!", + "type_info": "Bool" } ], "parameters": { @@ -57,8 +62,9 @@ null, null, null, + null, null ] }, - "hash": "aa0215d4174c1aeda8631bcd582c895329d2daf722d360fbcbdef6f04bb1400f" + "hash": "d1d9a3184f3470949840cc07414d08641527a4fe329204c65c49ab82d9ee4afb" } diff --git a/backend/.sqlx/query-d328d00e5393b0e8d2c4b3674221fabbae580fc404e0d4481fd8d7fb51272c94.json b/backend/.sqlx/query-d328d00e5393b0e8d2c4b3674221fabbae580fc404e0d4481fd8d7fb51272c94.json new file mode 100644 index 0000000000..474ce7b688 --- /dev/null +++ b/backend/.sqlx/query-d328d00e5393b0e8d2c4b3674221fabbae580fc404e0d4481fd8d7fb51272c94.json @@ -0,0 +1,24 @@ +{ + "db_name": "PostgreSQL", + "query": "\n INSERT INTO email_trigger (\n workspace_id,\n path,\n script_path,\n is_flow,\n local_part,\n workspaced_local_part,\n edited_by,\n email,\n edited_at,\n error_handler_path,\n error_handler_args,\n retry\n ) VALUES (\n $1, $2, $3, $4, $5, $6, $7, $8, now(), $9, $10, $11\n )\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + "Varchar", + "Bool", + "Varchar", + "Bool", + "Varchar", + "Varchar", + "Varchar", + "Jsonb", + "Jsonb" + ] + }, + "nullable": [] + }, + "hash": "d328d00e5393b0e8d2c4b3674221fabbae580fc404e0d4481fd8d7fb51272c94" +} diff --git a/backend/.sqlx/query-eac595e19e5c8e70f1514ef29dec35c7342ac9a814c73f6290e1d6ebd3a55423.json b/backend/.sqlx/query-eac595e19e5c8e70f1514ef29dec35c7342ac9a814c73f6290e1d6ebd3a55423.json index 8890104678..c4ee4c1a48 100644 --- a/backend/.sqlx/query-eac595e19e5c8e70f1514ef29dec35c7342ac9a814c73f6290e1d6ebd3a55423.json +++ b/backend/.sqlx/query-eac595e19e5c8e70f1514ef29dec35c7342ac9a814c73f6290e1d6ebd3a55423.json @@ -22,7 +22,8 @@ "postgres", "sqs", "mqtt", - "gcp" + "gcp", + "default_email" ] } } diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt index f068310e92..d4ea0789e3 100644 --- a/backend/ee-repo-ref.txt +++ b/backend/ee-repo-ref.txt @@ -1 +1 @@ -b72d44c2a8a2ad3a1e36c938863a9b02891ac4a2 \ No newline at end of file +0f744552e1f0a20194b5042b5a4ed36a0dc6809f \ No newline at end of file diff --git a/backend/migrations/20250905153025_add_email_triggers.up.sql b/backend/migrations/20250905153025_add_email_triggers.up.sql index 97399d7675..3939a6351f 100644 --- a/backend/migrations/20250905153025_add_email_triggers.up.sql +++ b/backend/migrations/20250905153025_add_email_triggers.up.sql @@ -65,6 +65,4 @@ USING (exists( WHERE SPLIT_PART(key, '/', 1) = 'g' AND key = ANY(regexp_split_to_array(current_setting('session.pgroups'), ',')::text[]) AND value::boolean)); -ALTER TYPE TRIGGER_KIND ADD VALUE IF NOT EXISTS 'runnable_email'; -UPDATE TABLE capture SET trigger_kind = 'runnable_email' WHERE trigger_kind = 'email'; -UPDATE TABLE capture_config SET trigger_kind = 'runnable_email' WHERE trigger_kind = 'email'; \ No newline at end of file +ALTER TYPE TRIGGER_KIND ADD VALUE IF NOT EXISTS 'default_email'; \ No newline at end of file diff --git a/backend/migrations/20250909102627_change_type_of_default_email_captures.down.sql b/backend/migrations/20250909102627_change_type_of_default_email_captures.down.sql new file mode 100644 index 0000000000..04b630eb5f --- /dev/null +++ b/backend/migrations/20250909102627_change_type_of_default_email_captures.down.sql @@ -0,0 +1,3 @@ +-- Add down migration script here +UPDATE capture SET trigger_kind = 'email' WHERE trigger_kind = 'default_email'; +UPDATE capture_config SET trigger_kind = 'email' WHERE trigger_kind = 'default_email'; \ No newline at end of file diff --git a/backend/migrations/20250909102627_change_type_of_default_email_captures.up.sql b/backend/migrations/20250909102627_change_type_of_default_email_captures.up.sql new file mode 100644 index 0000000000..6a163052c6 --- /dev/null +++ b/backend/migrations/20250909102627_change_type_of_default_email_captures.up.sql @@ -0,0 +1,3 @@ +-- Add up migration script here +UPDATE capture SET trigger_kind = 'default_email' WHERE trigger_kind = 'email'; +UPDATE capture_config SET trigger_kind = 'default_email' WHERE trigger_kind = 'email'; \ No newline at end of file diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 183a29233e..8ee3e1bf5a 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -2907,6 +2907,8 @@ paths: type: boolean sqs_used: type: boolean + email_used: + type: boolean required: - http_routes_used - websocket_used @@ -2916,6 +2918,7 @@ paths: - mqtt_used - gcp_used - sqs_used + - email_used /w/{workspace}/users/list: get: summary: list users @@ -16199,7 +16202,7 @@ components: type: number email_count: type: number - runnable_email_count: + default_email_count: type: number websocket_count: type: number @@ -18280,7 +18283,7 @@ components: CaptureTriggerKind: type: string enum: - [webhook, http, websocket, kafka, runnable_email, nats, postgres, sqs, mqtt, gcp, email] + [webhook, http, websocket, kafka, default_email, nats, postgres, sqs, mqtt, gcp, email] Capture: type: object diff --git a/backend/windmill-api/src/capture.rs b/backend/windmill-api/src/capture.rs index 139db01489..1231bcf042 100644 --- a/backend/windmill-api/src/capture.rs +++ b/backend/windmill-api/src/capture.rs @@ -146,7 +146,7 @@ struct HttpTriggerConfig { wrap_body: Option, } -#[cfg(feature = "http_trigger")] +#[cfg(all(feature = "enterprise", feature = "smtp", feature = "private"))] #[derive(Serialize, Deserialize)] struct EmailTriggerConfig { local_part: String, diff --git a/backend/windmill-api/src/triggers/handler.rs b/backend/windmill-api/src/triggers/handler.rs index 9ca46a7307..0e22ea2f34 100644 --- a/backend/windmill-api/src/triggers/handler.rs +++ b/backend/windmill-api/src/triggers/handler.rs @@ -761,7 +761,7 @@ pub struct TriggersCount { http_routes_count: i64, webhook_count: i64, email_count: i64, - runnable_email_count: i64, + default_email_count: i64, websocket_count: i64, kafka_count: i64, nats_count: i64, @@ -912,7 +912,7 @@ pub async fn get_triggers_count_internal( .await? .unwrap_or(0); - let runnable_email_count = (if is_flow { + let default_email_count = (if is_flow { sqlx::query_scalar!( "SELECT COUNT(*) FROM token WHERE label LIKE 'email-%' AND workspace_id = $1 AND scopes @> ARRAY['run:flow/' || $2]::text[]", w_id, @@ -933,7 +933,7 @@ pub async fn get_triggers_count_internal( schedule_count, http_routes_count, webhook_count, - runnable_email_count, + default_email_count, email_count, websocket_count, kafka_count, diff --git a/backend/windmill-common/src/triggers.rs b/backend/windmill-common/src/triggers.rs index 2d99129da2..43c4ae50fc 100644 --- a/backend/windmill-common/src/triggers.rs +++ b/backend/windmill-common/src/triggers.rs @@ -12,7 +12,7 @@ pub enum TriggerKind { Http, Websocket, Kafka, - RunnableEmail, + DefaultEmail, Email, Nats, Mqtt, @@ -29,7 +29,7 @@ impl TriggerKind { TriggerKind::Websocket => "websocket".to_string(), TriggerKind::Kafka => "kafka".to_string(), TriggerKind::Email => "email".to_string(), - TriggerKind::RunnableEmail => "runnable_email".to_string(), + TriggerKind::DefaultEmail => "email".to_string(), // to the user we also show kind email for default email TriggerKind::Nats => "nats".to_string(), TriggerKind::Mqtt => "mqtt".to_string(), TriggerKind::Sqs => "sqs".to_string(), @@ -47,7 +47,7 @@ impl fmt::Display for TriggerKind { TriggerKind::Websocket => "websocket", TriggerKind::Kafka => "kafka", TriggerKind::Email => "email", - TriggerKind::RunnableEmail => "runnable_email", + TriggerKind::DefaultEmail => "default_email", TriggerKind::Nats => "nats", TriggerKind::Mqtt => "mqtt", TriggerKind::Sqs => "sqs", diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index 3a5bef5ab8..ed3af82a69 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -615,7 +615,7 @@ new Triggers( [ { type: 'webhook', path: '', isDraft: false }, - { type: 'runnable_email', path: '', isDraft: false }, + { type: 'default_email', path: '', isDraft: false }, ...(draftTriggersFromUrl ?? savedFlow?.draft?.draft_triggers ?? []) ], selectedTriggerIndexFromUrl, diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index 5467b1b0cf..e206b4c357 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -251,7 +251,7 @@ new Triggers( [ { type: 'webhook', path: '', isDraft: false }, - { type: 'runnable_email', path: '', isDraft: false }, + { type: 'default_email', path: '', isDraft: false }, ...(script.draft_triggers ?? []) ], undefined, diff --git a/frontend/src/lib/components/details/RunnableEmailPanel.svelte b/frontend/src/lib/components/details/RunnableEmailPanel.svelte deleted file mode 100644 index d2c6c9154b..0000000000 --- a/frontend/src/lib/components/details/RunnableEmailPanel.svelte +++ /dev/null @@ -1,81 +0,0 @@ - - - - - { - token = e.detail - triggerTokens?.listTokens() - }} - newTokenWorkspace={$workspaceStore} - newTokenLabel={`email-${$userStore?.username ?? 'superadmin'}-${generateRandomString(4)}`} - {scopes} -/> - -
- - Runnable email is a partially fixed email address that can be used to trigger a script or flow. - The email address is composed of the encoded workspace and script or flow path as well as the - token. - - {#if loading} - - {:else} - {#if emailDomain} - - {:else} -
- - Ask an instance superadmin to setup the instance for email triggering (docs) and to set the email domain in the instance settings. - -
- {/if} - - {#if !$enterpriseLicense} - - Runnable emails on Windmill Community Edition are limited to 100 emails per day. - - {/if} - - - {/if} -
diff --git a/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte b/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte index 6b1d49a676..ad0ace5868 100644 --- a/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte +++ b/frontend/src/lib/components/graph/renderers/triggers/TriggersBadge.svelte @@ -1,5 +1,5 @@ @@ -72,14 +74,14 @@ scopes={isFlow ? [`jobs:run:flows:${currentPath}`] : [`jobs:run:scripts:${currentPath}`]} {newItem} /> -{:else if selectedTrigger.type === 'runnable_email'} - {:else if selectedTrigger.type === 'schedule'} {:else if selectedTrigger.type === 'poll'} diff --git a/frontend/src/lib/components/details/RunnableEmailCapture.svelte b/frontend/src/lib/components/triggers/email/DefaultEmailCapture.svelte similarity index 90% rename from frontend/src/lib/components/details/RunnableEmailCapture.svelte rename to frontend/src/lib/components/triggers/email/DefaultEmailCapture.svelte index f6e91dba67..068df9d707 100644 --- a/frontend/src/lib/components/details/RunnableEmailCapture.svelte +++ b/frontend/src/lib/components/triggers/email/DefaultEmailCapture.svelte @@ -2,8 +2,8 @@ import Label from '$lib/components/Label.svelte' import { workspaceStore } from '$lib/stores' import { base32 } from 'rfc4648' - import ClipboardPanel from './ClipboardPanel.svelte' - import CaptureSection, { type CaptureInfo } from '../triggers/CaptureSection.svelte' + import ClipboardPanel from '../../details/ClipboardPanel.svelte' + import CaptureSection, { type CaptureInfo } from '../CaptureSection.svelte' import { fade } from 'svelte/transition' interface Props { @@ -40,7 +40,7 @@ {#if captureInfo} - import { run } from 'svelte/legacy' - import Button from '$lib/components/common/button/Button.svelte' import Label from '$lib/components/Label.svelte' import Tooltip from '$lib/components/Tooltip.svelte' @@ -9,20 +7,15 @@ import { SCRIPT_VIEW_SHOW_CREATE_TOKEN_BUTTON } from '$lib/consts' import ToggleButton from '$lib/components/common/toggleButton-v2/ToggleButton.svelte' import ToggleButtonGroup from '$lib/components/common/toggleButton-v2/ToggleButtonGroup.svelte' - import ClipboardPanel from './ClipboardPanel.svelte' + import ClipboardPanel from '../../details/ClipboardPanel.svelte' import Alert from '$lib/components/common/alert/Alert.svelte' import { base32 } from 'rfc4648' import { emptyString } from '$lib/utils' + import UserSettings from '$lib/components/UserSettings.svelte' let requestType: 'hash' | 'path' = $state('path') - function emailAddress( - requestType: 'hash' | 'path', - path: string, - hash: string | undefined, - isFlow: boolean, - token: string - ) { + function emailAddress() { const pathOrHash = requestType === 'hash' ? hash : path.replaceAll('/', '.') const plainPrefix = `${$workspaceStore}+${ (requestType === 'hash' ? 'hash.' : isFlow ? 'flow.' : '') + pathOrHash @@ -40,7 +33,7 @@ isFlow?: boolean hash?: string | undefined path: string - userSettings: any + userSettings: UserSettings emailDomain?: string | null email?: string } @@ -55,8 +48,8 @@ email = $bindable('') }: Props = $props() - run(() => { - email = emailAddress(requestType, path, hash, isFlow, token) + $effect(() => { + email = emailAddress() }) @@ -123,7 +116,7 @@ {/key} {/key} - + To trigger the job by email, send an email to the address above. The job will receive two arguments: `raw_email` containing the raw email as string, and `parsed_email` containing the parsed email as an object. diff --git a/frontend/src/lib/components/triggers/email/DefaultEmailPanel.svelte b/frontend/src/lib/components/triggers/email/DefaultEmailPanel.svelte new file mode 100644 index 0000000000..3fb95b1477 --- /dev/null +++ b/frontend/src/lib/components/triggers/email/DefaultEmailPanel.svelte @@ -0,0 +1,93 @@ + + + + + { + token = e.detail + triggerTokens?.listTokens() + }} + newTokenWorkspace={$workspaceStore} + newTokenLabel={`email-${$userStore?.username ?? 'superadmin'}-${generateRandomString(4)}`} + {scopes} +/> + +
+ + Default email trigger is a partially fixed email address that can be used to trigger a script or + flow. The email address is composed of the encoded workspace and script or flow path as well as + the token. + + {#if loading} + + {:else} + {#if emailDomain} + + {:else} +
+ + Ask an instance superadmin to setup the instance for email triggering (docs) and to set the email domain in the instance settings. + +
+ {/if} + + {#if !$enterpriseLicense} + + Email triggers on Windmill Community Edition are limited to 100 emails per day. + + {/if} + + + {/if} +
diff --git a/frontend/src/lib/components/triggers/email/EmailCapture.svelte b/frontend/src/lib/components/triggers/email/EmailCapture.svelte index 82d24744bf..828a32b0d0 100644 --- a/frontend/src/lib/components/triggers/email/EmailCapture.svelte +++ b/frontend/src/lib/components/triggers/email/EmailCapture.svelte @@ -27,7 +27,7 @@ captureLoading = false }: Props = $props() - let captureEmail = $derived(`capture+${$workspaceStore}+${local_part}@${emailDomain}`) + let captureEmail = $derived(`capture+${$workspaceStore}-${local_part}@${emailDomain}`) {#if captureInfo} diff --git a/frontend/src/lib/components/triggers/email/EmailTriggerEditorConfigSection.svelte b/frontend/src/lib/components/triggers/email/EmailTriggerEditorConfigSection.svelte index d25b6ee4d0..4a8de62444 100644 --- a/frontend/src/lib/components/triggers/email/EmailTriggerEditorConfigSection.svelte +++ b/frontend/src/lib/components/triggers/email/EmailTriggerEditorConfigSection.svelte @@ -46,9 +46,9 @@ clearTimeout(validateTimeout) } validateTimeout = setTimeout(async () => { - if (!localPart || !/^\w[a-z0-9._]*\w$/.test(localPart)) { + if (!localPart || !/^[a-z0-9._]{1,64}$/.test(localPart)) { addressError = - 'Local part not valid, only accepts lowercase alphanumeric characters, dots and underscores' + 'Local part not valid, only accepts lowercase alphanumeric characters, dots and underscores, and must be between 1 and 64 characters' } else if (await emailTriggerExists(localPart, workspaced_local_part)) { addressError = 'Email address already taken' } else { @@ -145,7 +145,7 @@ { workspaced_local_part = !workspaced_local_part dirtyLocalPart = true diff --git a/frontend/src/lib/components/triggers/email/EmailTriggerEditorInner.svelte b/frontend/src/lib/components/triggers/email/EmailTriggerEditorInner.svelte index e7a4a4c25c..62e1eecb92 100644 --- a/frontend/src/lib/components/triggers/email/EmailTriggerEditorInner.svelte +++ b/frontend/src/lib/components/triggers/email/EmailTriggerEditorInner.svelte @@ -287,7 +287,7 @@ btnClasses="ml-4 mt-2" color="dark" size="xs" - href={itemKind === 'flow' ? '/flows/add?hub=62' : '/scripts/add?hub=hub%2F19669'} + href={itemKind === 'flow' ? '/flows/add?hub=72' : '/scripts/add?hub=hub%2F19813'} target="_blank">Create from template {/if} @@ -301,6 +301,7 @@ bind:local_part bind:isValid bind:workspaced_local_part + bind:dirtyLocalPart {can_write} showTestingBadge={isEditor} isDraftOnly={trigger ? trigger.isDraft : false} diff --git a/frontend/src/lib/components/triggers/email/EmailTriggerPanel.svelte b/frontend/src/lib/components/triggers/email/EmailTriggerPanel.svelte index 4aab7fa951..12ec403aeb 100644 --- a/frontend/src/lib/components/triggers/email/EmailTriggerPanel.svelte +++ b/frontend/src/lib/components/triggers/email/EmailTriggerPanel.svelte @@ -1,26 +1,39 @@ {/if} + + {#if !$enterpriseLicense} + + Email triggers on Windmill Community Edition are limited to 100 emails per day. + + {/if} {/snippet} diff --git a/frontend/src/lib/components/triggers/http/RouteEditorConfigSection.svelte b/frontend/src/lib/components/triggers/http/RouteEditorConfigSection.svelte index 039e893121..a60d4b9534 100644 --- a/frontend/src/lib/components/triggers/http/RouteEditorConfigSection.svelte +++ b/frontend/src/lib/components/triggers/http/RouteEditorConfigSection.svelte @@ -166,7 +166,7 @@ { workspaced_route = !workspaced_route dirtyRoutePath = true diff --git a/frontend/src/lib/components/triggers/utils.ts b/frontend/src/lib/components/triggers/utils.ts index 89848c10ae..23d37413e1 100644 --- a/frontend/src/lib/components/triggers/utils.ts +++ b/frontend/src/lib/components/triggers/utils.ts @@ -1,13 +1,4 @@ -import { - Webhook, - Mail, - Calendar, - Route, - Unplug, - Database, - Terminal, - MailWarning -} from 'lucide-svelte' +import { Webhook, Mail, Calendar, Route, Unplug, Database, Terminal } from 'lucide-svelte' import KafkaIcon from '$lib/components/icons/KafkaIcon.svelte' import NatsIcon from '$lib/components/icons/NatsIcon.svelte' import MqttIcon from '$lib/components/icons/MqttIcon.svelte' @@ -48,7 +39,7 @@ export const CLOUD_DISABLED_TRIGGER_TYPES = [ export type TriggerType = | 'webhook' - | 'runnable_email' + | 'default_email' | 'email' | 'schedule' | 'http' @@ -80,7 +71,7 @@ export type Trigger = { export const triggerIconMap = { webhook: Webhook, email: Mail, - runnable_email: MailWarning, + default_email: Mail, schedule: Calendar, http: Route, websocket: Unplug, @@ -105,7 +96,7 @@ export function triggerTypeToCaptureKind(triggerType: TriggerType): CaptureTrigg const capturableTriggerTypes: TriggerType[] = [ 'webhook', 'email', - 'runnable_email', + 'default_email', 'http', 'websocket', 'postgres', @@ -134,7 +125,7 @@ export function updateTriggersCount( // Map trigger types to their corresponding count property names const countPropertyMap: Record = { webhook: undefined, - runnable_email: undefined, + default_email: undefined, schedule: 'schedule_count', http: 'http_routes_count', websocket: 'websocket_count', @@ -193,8 +184,8 @@ export function triggerKindToTriggerType(kind: TriggerKind): TriggerType | undef return 'webhook' case 'emails': return 'email' - case 'runnable_emails': - return 'runnable_email' + case 'default_emails': + return 'default_email' case 'schedules': return 'schedule' case 'routes': @@ -242,7 +233,7 @@ export async function deployTriggers( // Map of trigger types to their save functions const triggerSaveFunctions: Record = { webhook: undefined, - runnable_email: undefined, + default_email: undefined, schedule: (trigger: Trigger) => { if (trigger.isPrimary && initialPath) { trigger.draftConfig = { @@ -437,8 +428,8 @@ export function getTriggerLabel(trigger: Trigger): string { if (type === 'webhook') { return 'Webhook' - } else if (type === 'runnable_email') { - return 'Runnable email' + } else if (type === 'default_email') { + return 'Email' } else if (type === 'cli') { return 'CLI' } else if (type === 'http' && !emptyString(config?.route_path)) { @@ -473,7 +464,7 @@ export function sortTriggers(triggers: Trigger[]): Trigger[] { const triggerTypeOrder = [ 'webhook', 'cli', - 'runnable_email', + 'default_email', 'poll', 'schedule', 'http', diff --git a/frontend/src/routes/(root)/(logged)/+layout.svelte b/frontend/src/routes/(root)/(logged)/+layout.svelte index a4fa5abc59..a1b925fdb5 100644 --- a/frontend/src/routes/(root)/(logged)/+layout.svelte +++ b/frontend/src/routes/(root)/(logged)/+layout.svelte @@ -201,7 +201,8 @@ nats_used, sqs_used, mqtt_used, - gcp_used + gcp_used, + email_used } = await WorkspaceService.getUsedTriggers({ workspace: $workspaceStore ?? '' }) @@ -229,6 +230,9 @@ if (gcp_used) { usedKinds.push('gcp') } + if (email_used) { + usedKinds.push('email') + } $usedTriggerKinds = usedKinds } diff --git a/frontend/src/routes/(root)/(logged)/email_triggers/+page.svelte b/frontend/src/routes/(root)/(logged)/email_triggers/+page.svelte index 93c8ef449e..0336a36fd0 100644 --- a/frontend/src/routes/(root)/(logged)/email_triggers/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/email_triggers/+page.svelte @@ -44,7 +44,6 @@ import EmailTriggerEditor from '$lib/components/triggers/email/EmailTriggerEditor.svelte' import DeployWorkspaceDrawer from '$lib/components/DeployWorkspaceDrawer.svelte' import { ALL_DEPLOYABLE, isDeployable } from '$lib/utils_deployable' - import { isCloudHosted } from '$lib/cloud' import { getEmailAddress, getEmailDomain } from '$lib/components/triggers/email/utils' type TriggerW = EmailTrigger & { canWrite: boolean } @@ -54,6 +53,7 @@ let loading = $state(true) let deploymentDrawer: DeployWorkspaceDrawer | undefined = $state() let deployUiSettings: WorkspaceDeployUISettings | undefined = $state(undefined) + let emailDomain: string | null = $state(null) async function getDeployUiSettings() { if (!$enterpriseLicense) { @@ -71,6 +71,7 @@ } ) $usedTriggerKinds = removeTriggerKindIfUnused(triggers.length, 'emails', $usedTriggerKinds) + emailDomain = await getEmailDomain() loading = false } @@ -196,11 +197,6 @@ loadQueryFilters() }) - let emailDomain: string | null = $state(null) - getEmailDomain().then((domain) => { - emailDomain = domain - }) - run(() => { updateQueryFilters(selectedFilterKind, filterUserFolders) }) @@ -279,6 +275,12 @@
{#each items.slice(0, nbDisplayed) as { workspace_id, workspaced_local_part, path, edited_by, edited_at, script_path, is_flow, extra_perms, canWrite, marked, local_part } (path)} {@const href = `${is_flow ? '/flows/get' : '/scripts/get'}/${script_path}`} + {@const emailAddress = getEmailAddress( + local_part, + workspaced_local_part ?? false, + workspace_id, + emailDomain ?? '' + )}
@@ -317,15 +317,7 @@