From efac62c156cbbc866ab38775e35017eaad9b46c4 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 19 Mar 2026 16:25:54 +0100 Subject: [PATCH] [Glitch] Split `invite_users` permission into `invite_bypass_approval` Port 1ee457f2d37c2b77a7fbce246a7c72ac9f9d3056 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/entrypoints/admin.tsx | 39 +++++++++++++++++++ .../glitch/styles/mastodon/forms.scss | 4 ++ 2 files changed, 43 insertions(+) diff --git a/app/javascript/flavours/glitch/entrypoints/admin.tsx b/app/javascript/flavours/glitch/entrypoints/admin.tsx index 1ec50cf59e..92f97a72db 100644 --- a/app/javascript/flavours/glitch/entrypoints/admin.tsx +++ b/app/javascript/flavours/glitch/entrypoints/admin.tsx @@ -166,6 +166,38 @@ on('change', '#domain_block_severity', ({ target }) => { if (target instanceof HTMLSelectElement) onDomainBlockSeverityChange(target); }); +const onChangeInviteUsersPermission = (target: HTMLInputElement) => { + const inviteBypassApprovalCheckbox = document.querySelector( + 'input#user_role_permissions_as_keys_invite_bypass_approval', + ); + + if (inviteBypassApprovalCheckbox) { + inviteBypassApprovalCheckbox.disabled = !target.checked; + + if (target.checked) { + inviteBypassApprovalCheckbox.parentElement?.classList.remove('disabled'); + inviteBypassApprovalCheckbox.parentElement?.parentElement?.classList.remove( + 'disabled', + ); + } else { + inviteBypassApprovalCheckbox.parentElement?.classList.add('disabled'); + inviteBypassApprovalCheckbox.parentElement?.parentElement?.classList.add( + 'disabled', + ); + } + } +}; + +on( + 'change', + 'input#user_role_permissions_as_keys_invite_users', + ({ target }) => { + if (target instanceof HTMLInputElement) { + onChangeInviteUsersPermission(target); + } + }, +); + function onEnableBootstrapTimelineAccountsChange(target: HTMLInputElement) { const bootstrapTimelineAccountsField = document.querySelector( @@ -291,6 +323,13 @@ ready(() => { ); if (registrationMode) onChangeRegistrationMode(registrationMode); + const inviteUsersPermissionChecbkox = + document.querySelector( + 'input#user_role_permissions_as_keys_invite_users', + ); + if (inviteUsersPermissionChecbkox) + onChangeInviteUsersPermission(inviteUsersPermissionChecbkox); + const checkAllElement = document.querySelector( '#batch_checkbox_all', ); diff --git a/app/javascript/flavours/glitch/styles/mastodon/forms.scss b/app/javascript/flavours/glitch/styles/mastodon/forms.scss index 5dc5f07758..ecdb660bf1 100644 --- a/app/javascript/flavours/glitch/styles/mastodon/forms.scss +++ b/app/javascript/flavours/glitch/styles/mastodon/forms.scss @@ -507,6 +507,10 @@ code { margin: 0; } } + + .checkbox.disabled { + opacity: 0.5; + } } label.checkbox {