From ac5b38d8c9accef1e8d4b94261687dcdc6cb72f9 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Fri, 19 Jun 2026 00:45:09 +0200 Subject: [PATCH] check --- .../assets/apps/user-self-management/app.js | 24 +++++++++++++++++-- src/App/UserSelfManagementService.php | 6 ++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/public/assets/apps/user-self-management/app.js b/public/assets/apps/user-self-management/app.js index cf0c6dd9..c9289719 100644 --- a/public/assets/apps/user-self-management/app.js +++ b/public/assets/apps/user-self-management/app.js @@ -280,6 +280,18 @@ return Array.from(next); }; + const syncSelectionWithCheckedState = (collection, value, isChecked) => { + const next = new Set(collection); + + if (isChecked) { + next.add(value); + } else { + next.delete(value); + } + + return Array.from(next); + }; + const buildPatch = (state) => ({ profile: state.draft.profile, desktop: { @@ -388,13 +400,21 @@ } if (target.dataset.appId) { - state.draft.apps.enabled_ids = toggleSelection(state.draft.apps.enabled_ids, target.dataset.appId); + state.draft.apps.enabled_ids = syncSelectionWithCheckedState( + state.draft.apps.enabled_ids, + target.dataset.appId, + target.checked + ); renderApp(root, state); return; } if (target.dataset.widgetId) { - state.draft.widgets.active_ids = toggleSelection(state.draft.widgets.active_ids, target.dataset.widgetId); + state.draft.widgets.active_ids = syncSelectionWithCheckedState( + state.draft.widgets.active_ids, + target.dataset.widgetId, + target.checked + ); renderApp(root, state); } }); diff --git a/src/App/UserSelfManagementService.php b/src/App/UserSelfManagementService.php index f4f7eab3..177a8a52 100644 --- a/src/App/UserSelfManagementService.php +++ b/src/App/UserSelfManagementService.php @@ -314,6 +314,10 @@ final class UserSelfManagementService { $trimmed = trim($value); - return mb_substr($trimmed, 0, $maxLength); + if (function_exists('mb_substr')) { + return mb_substr($trimmed, 0, $maxLength); + } + + return substr($trimmed, 0, $maxLength); } }