diff --git a/backend/.sqlx/query-21e9a9fc33dcdb66a2c8e95b1359ca1b3e04b4ecf155757abf5798834ebfd0ce.json b/backend/.sqlx/query-f11d3a43f804a33e412a69be54824d7666d4dac0b824095c4c4fefb1f802c6f7.json
similarity index 63%
rename from backend/.sqlx/query-21e9a9fc33dcdb66a2c8e95b1359ca1b3e04b4ecf155757abf5798834ebfd0ce.json
rename to backend/.sqlx/query-f11d3a43f804a33e412a69be54824d7666d4dac0b824095c4c4fefb1f802c6f7.json
index 036de3ec31..2da26a9958 100644
--- a/backend/.sqlx/query-21e9a9fc33dcdb66a2c8e95b1359ca1b3e04b4ecf155757abf5798834ebfd0ce.json
+++ b/backend/.sqlx/query-f11d3a43f804a33e412a69be54824d7666d4dac0b824095c4c4fefb1f802c6f7.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "SELECT email FROM password ORDER BY email",
+ "query": "SELECT email FROM password ORDER BY email LIMIT 1000",
"describe": {
"columns": [
{
@@ -16,5 +16,5 @@
false
]
},
- "hash": "21e9a9fc33dcdb66a2c8e95b1359ca1b3e04b4ecf155757abf5798834ebfd0ce"
+ "hash": "f11d3a43f804a33e412a69be54824d7666d4dac0b824095c4c4fefb1f802c6f7"
}
diff --git a/backend/windmill-api-users/src/users.rs b/backend/windmill-api-users/src/users.rs
index 94e9e7cc9d..f1cf27df1f 100644
--- a/backend/windmill-api-users/src/users.rs
+++ b/backend/windmill-api-users/src/users.rs
@@ -431,7 +431,7 @@ async fn list_instance_emails(
));
}
require_admin(authed.is_admin, &authed.username)?;
- let rows = sqlx::query_scalar!("SELECT email FROM password ORDER BY email")
+ let rows = sqlx::query_scalar!("SELECT email FROM password ORDER BY email LIMIT 1000")
.fetch_all(&db)
.await?;
Ok(Json(rows))
diff --git a/frontend/src/lib/components/AddUser.svelte b/frontend/src/lib/components/AddUser.svelte
index f3d252c5a2..37b4f90d86 100644
--- a/frontend/src/lib/components/AddUser.svelte
+++ b/frontend/src/lib/components/AddUser.svelte
@@ -37,6 +37,7 @@
getAutomateUsernameCreationSetting()
let allInstanceEmails: string[] | undefined = $state(undefined)
+ let emailsLoading = $state(!isCloudHosted())
let instanceEmails = $derived.by(() => {
if (!allInstanceEmails) return undefined
@@ -47,11 +48,13 @@
})
async function loadInstanceEmails() {
- if (isCloudHosted()) return
+ if (isCloudHosted() || !$workspaceStore) return
try {
- allInstanceEmails = await UserService.listInstanceEmails({ workspace: $workspaceStore! })
+ allInstanceEmails = await UserService.listInstanceEmails({ workspace: $workspaceStore })
} catch {
allInstanceEmails = undefined
+ } finally {
+ emailsLoading = false
}
}
loadInstanceEmails()
@@ -95,8 +98,9 @@
dispatch('new')
}
+ let emailTouched = $state(false)
let emailError = $derived.by(() => {
- if (!email) return undefined
+ if (!email || !emailTouched) return undefined
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
return emailRegex.test(email) ? undefined : 'Please enter a valid email address'
})
@@ -115,17 +119,30 @@
Add a new user
Email
- {#if instanceEmails}
+ {#if emailsLoading}
+
+ {:else if instanceEmails}
(emailTouched = true)}
/>
{:else}
(emailTouched = true)
+ }}
bind:value={email}
error={!!emailError}
/>