From 5b7dad4b7b3b9ece38b5ffed2aaf3b841315ccf5 Mon Sep 17 00:00:00 2001 From: Antonio Date: Thu, 11 Jun 2026 17:03:19 +0200 Subject: [PATCH 1/9] fix: new Layout for phonebook section --- .../public/locales/en/translations.json | 5 + .../public/locales/it/translations.json | 5 + .../PhonebookModule/AddToPhonebookBox.tsx | 190 +++++++++++++++--- .../SearchResults/SearchNumberDetail.tsx | 36 +++- src/shared/phonebook.ts | 122 +++++++++++ src/shared/types.ts | 3 + src/shared/useNethVoiceAPI.ts | 16 +- 7 files changed, 329 insertions(+), 48 deletions(-) create mode 100644 src/shared/phonebook.ts diff --git a/src/renderer/public/locales/en/translations.json b/src/renderer/public/locales/en/translations.json index 3707b604..a57deddc 100644 --- a/src/renderer/public/locales/en/translations.json +++ b/src/renderer/public/locales/en/translations.json @@ -181,8 +181,13 @@ "Try changing your search filters": "Try changing your search filters", "Delete contact": "Delete contact", "Visibility": "Visibility", + "Everybody": "Everybody", "Only me": "Only me", "Public": "Public", + "Groups": "Groups", + "Choose one or more groups": "Choose one or more groups", + "No groups available": "No groups available", + "Select at least one group": "Select at least one group", "Open contact menu": "Open contact menu", "Last switchboard calls": "Last switchboard calls", "Last personal calls": "Last personal calls", diff --git a/src/renderer/public/locales/it/translations.json b/src/renderer/public/locales/it/translations.json index c076fb73..28514cbe 100644 --- a/src/renderer/public/locales/it/translations.json +++ b/src/renderer/public/locales/it/translations.json @@ -181,8 +181,13 @@ "Try changing your search filters": "Prova a cambiare i tuoi filtri di ricerca", "Delete contact": "Elimina contact", "Visibility": "Visibilità", + "Everybody": "Tutti", "Only me": "Solo me", "Public": "Public", + "Groups": "Gruppi", + "Choose one or more groups": "Scegli uno o più gruppi", + "No groups available": "Nessun gruppo disponibile", + "Select at least one group": "Seleziona almeno un gruppo", "Open contact menu": "Open contact menu", "Last switchboard calls": "Last switchboard calls", "Last personal calls": "Last personal calls", diff --git a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx index f760678c..d1af0436 100644 --- a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx +++ b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx @@ -1,7 +1,7 @@ import { useState, useEffect, useRef } from 'react' import { Button, TextInput } from '../../../Nethesis' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' -import { faSpinner as LoadingIcon } from '@fortawesome/free-solid-svg-icons' +import { faChevronDown, faCheck, faSpinner as LoadingIcon } from '@fortawesome/free-solid-svg-icons' import { ContactType } from '@shared/types' import { useForm, SubmitHandler } from 'react-hook-form' import { t } from 'i18next' @@ -13,15 +13,25 @@ import { Log } from '@shared/utils/logger' import { Scrollable } from '@renderer/components/Scrollable' import { ModuleTitle } from '@renderer/components/ModuleTitle' import { usePhonebookSearchModule } from '../SearchResults/hook/usePhoneBookSearchModule' +import { useSharedState, useNethlinkData } from '@renderer/store' +import { + canWritePhonebookVisibility, + normalizeSharedGroups, +} from '@shared/phonebook' +import classNames from 'classnames' export function AddToPhonebookBox({ close }) { const phoneBookSearchModule = usePhonebookSearchModule() const phonebookModule = usePhonebookModule() const [searchText] = phoneBookSearchModule.searchTextState const [selectedContact] = phonebookModule.selectedContact + const [account] = useSharedState('account') + const [operators] = useNethlinkData('operators') const submitButtonRef = useRef(null) + const sharedGroupsDropdownRef = useRef(null) const baseSchema = z.object({ privacy: z.string(), + shared_groups: z.array(z.string()).default([]), extension: z .string() .trim() @@ -60,6 +70,8 @@ export function AddToPhonebookBox({ close }) { .and(baseSchema) const [isLoading, setIsLoading] = useState(false) + const [isSharedGroupsDropdownOpen, setIsSharedGroupsDropdownOpen] = useState(false) + const [sharedGroupsError, setSharedGroupsError] = useState('') const { register, @@ -73,6 +85,7 @@ export function AddToPhonebookBox({ close }) { } = useForm({ defaultValues: { privacy: '', + shared_groups: [], type: '', name: '', company: '', @@ -86,6 +99,26 @@ export function AddToPhonebookBox({ close }) { }) const watchType = watch('type') + const watchPrivacy = watch('privacy') + const selectedGroups = watch('shared_groups') || [] + const profile = account?.data?.profile + const availableGroups = Object.keys(operators?.groups || {}).sort((left, right) => + left.localeCompare(right), + ) + const visibilityOptions = [ + { + id: 'public', + label: t('Phonebook.Everybody'), + }, + { + id: 'private', + label: t('Phonebook.Only me'), + }, + { + id: 'group', + label: t('Phonebook.Groups'), + }, + ].filter((option) => canWritePhonebookVisibility(profile, option.id as 'public' | 'private' | 'group')) useEffect(() => { !!errors.name && trigger('name') @@ -98,6 +131,7 @@ export function AddToPhonebookBox({ close }) { useEffect(() => { setValue('privacy', 'public') + setValue('shared_groups', []) setValue('type', 'person') if (searchText != undefined) { @@ -120,7 +154,46 @@ export function AddToPhonebookBox({ close }) { } }, []) + useEffect(() => { + const allowedVisibilityValues = visibilityOptions.map((option) => option.id) + if (!allowedVisibilityValues.includes(watchPrivacy || '')) { + setValue('privacy', visibilityOptions[0]?.id || 'private') + } + }, [setValue, visibilityOptions, watchPrivacy]) + + useEffect(() => { + if (watchPrivacy !== 'group') { + setValue('shared_groups', []) + setSharedGroupsError('') + setIsSharedGroupsDropdownOpen(false) + } + }, [setValue, watchPrivacy]) + + useEffect(() => { + function handleOutsideClick(event: MouseEvent) { + if ( + sharedGroupsDropdownRef.current && + !sharedGroupsDropdownRef.current.contains(event.target as Node) + ) { + setIsSharedGroupsDropdownOpen(false) + } + } + + document.addEventListener('mousedown', handleOutsideClick) + return () => document.removeEventListener('mousedown', handleOutsideClick) + }, []) + function handleSave(data: ContactType) { + if (data.privacy === 'group') { + const normalizedGroups = normalizeSharedGroups(data.shared_groups) + if (normalizedGroups.length === 0) { + setSharedGroupsError(`${t('Phonebook.Select at least one group')}`) + return + } + data.shared_groups = normalizedGroups + } + + setSharedGroupsError('') //NETHVOICE uses the value '-' when entering a company that is unnamed //data.name === '' can only be true in the case where you enter a company setIsLoading(true) @@ -167,6 +240,18 @@ export function AddToPhonebookBox({ close }) { } } + function toggleSharedGroup(groupName: string) { + const normalizedGroups = normalizeSharedGroups(selectedGroups) + const nextGroups = normalizedGroups.includes(groupName) + ? normalizedGroups.filter((group) => group !== groupName) + : [...normalizedGroups, groupName] + + setValue('shared_groups', nextGroups, { shouldDirty: true }) + if (nextGroups.length > 0) { + setSharedGroupsError('') + } + } + return ( <>

{t('Phonebook.Visibility')}

-
- - -
-
- -
+ + + {watchPrivacy === 'group' && ( +
+

{t('Phonebook.Groups')}

+
+ + {isSharedGroupsDropdownOpen && ( +
+ {availableGroups.length > 0 ? ( + availableGroups.map((groupName) => { + const isSelected = selectedGroups.includes(groupName) + return ( + + ) + }) + ) : ( +
+ {t('Phonebook.No groups available')} +
+ )} +
+ )}
+ {sharedGroupsError && ( +

{sharedGroupsError}

+ )}
- + )}
diff --git a/src/shared/phonebook.ts b/src/shared/phonebook.ts index 002a914b..74d713d2 100644 --- a/src/shared/phonebook.ts +++ b/src/shared/phonebook.ts @@ -154,5 +154,5 @@ export function getContactVisibility(contact?: ContactLike | null) { return 'group' } - return contact.type === 'private' ? 'private' : 'public' + return contact.type === 'private' && contact.source === 'cti' ? 'private' : 'public' } From c0408b02a6ade38f25d37281a55de10355e1a2ad Mon Sep 17 00:00:00 2001 From: Antonio Date: Fri, 26 Jun 2026 12:17:03 +0200 Subject: [PATCH 5/9] fix: minor UI fix --- .../PhonebookModule/AddToPhonebookBox.tsx | 15 +++------ src/shared/phonebook.ts | 32 ++++++++----------- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx index e7015e00..b492f086 100644 --- a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx +++ b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx @@ -24,8 +24,7 @@ import { usePhonebookSearchModule } from '../SearchResults/hook/usePhoneBookSear import { useSharedState, useNethlinkData } from '@renderer/store' import { canWritePhonebookVisibility, - getAllowedOperatorGroupsIds, - getPresencePanelPermissions, + getPhonebookPermissionLevel, getVisiblePhonebookGroups, normalizeSharedGroups, } from '@shared/phonebook' @@ -118,16 +117,10 @@ export function AddToPhonebookBox({ close }) { ) const profile = account?.data?.profile const username = account?.data?.username || account?.username - const presencePanelPermissions = getPresencePanelPermissions(profile) + const canShareAllGroups = getPhonebookPermissionLevel(profile) >= 2 const availableGroups = useMemo( - () => - getVisiblePhonebookGroups( - getAllowedOperatorGroupsIds(profile), - operators?.groups, - presencePanelPermissions?.all_groups?.value, - username, - ), - [operators?.groups, presencePanelPermissions?.all_groups?.value, profile, username], + () => getVisiblePhonebookGroups(operators?.groups, canShareAllGroups, username), + [operators?.groups, canShareAllGroups, username], ) const visibilityOptions = useMemo( () => diff --git a/src/shared/phonebook.ts b/src/shared/phonebook.ts index 74d713d2..16dcf470 100644 --- a/src/shared/phonebook.ts +++ b/src/shared/phonebook.ts @@ -19,10 +19,6 @@ function getPermissionValue( return permission?.value === true } -function getGroupPermissionId(groupName: string) { - return `grp_${groupName.trim().replace(/[^a-z0-9]/gi, '').toLowerCase()}` -} - export function getPresencePanelPermissions(profile?: AccountData['profile']) { return profile?.macro_permissions?.presence_panel?.permissions || {} } @@ -35,29 +31,29 @@ export function getAllowedOperatorGroupsIds(profile?: AccountData['profile']) { }) } +/** + * Operator groups a user may share a phonebook contact with: the groups the + * user is directly a member of, plus every group when they hold full phonebook + * management permission (level 2 / ad_phonebook). + * + * Sharing must depend only on the groups assigned to the user, NOT on + * presence-panel permissions (all_groups / grp_*), mirroring the + * nethcti-middleware write validation. + */ export function getVisiblePhonebookGroups( - allowedGroupsIds: string[], allGroups: GroupsType | undefined, - canSeeAllGroups: boolean | undefined, + canShareAllGroups: boolean | undefined, username: string | undefined, ) { const groups = allGroups || {} - if (canSeeAllGroups) { + if (canShareAllGroups) { return Object.keys(groups).sort((left, right) => left.localeCompare(right)) } - const allowedGroups = Object.keys(groups).filter((groupName) => { - return allowedGroupsIds.includes(getGroupPermissionId(groupName)) - }) - - const belongingGroups = Object.keys(groups).filter((groupName) => { - return !!username && groups[groupName]?.users.includes(username) - }) - - return Array.from(new Set([...allowedGroups, ...belongingGroups])).sort((left, right) => - left.localeCompare(right), - ) + return Object.keys(groups) + .filter((groupName) => !!username && groups[groupName]?.users.includes(username)) + .sort((left, right) => left.localeCompare(right)) } export function getPhonebookPermissionLevel(profile?: AccountData['profile']) { From 7351d722aeca3c154645481cfff9df9dbf8f41bf Mon Sep 17 00:00:00 2001 From: Antonio Date: Fri, 26 Jun 2026 12:23:25 +0200 Subject: [PATCH 6/9] chore: update phone-island --- package-lock.json | 90 ++++------------------------------------------- package.json | 2 +- 2 files changed, 7 insertions(+), 85 deletions(-) diff --git a/package-lock.json b/package-lock.json index a15a7a33..01d298c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands", "@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", - "@nethesis/phone-island": "^1.0.9", + "@nethesis/phone-island": "^1.0.10-dev.5", "@tailwindcss/forms": "^0.5.7", "@types/lodash": "^4.14.202", "@types/node": "^18.19.9", @@ -2482,14 +2482,14 @@ } }, "node_modules/@nethesis/phone-island": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@nethesis/phone-island/-/phone-island-1.0.9.tgz", - "integrity": "sha512-cn7IkJSMBMRGdEZESYVN6dwge/jSECfGv5RCQEP3K5P43Jit5f0hUg9XuxG11dIAAPt8E+oqA8+kyDbcE8N8ow==", + "version": "1.0.10-dev.5", + "resolved": "https://registry.npmjs.org/@nethesis/phone-island/-/phone-island-1.0.10-dev.5.tgz", + "integrity": "sha512-CngGjuGmkAo7w12k45abTKycG2TLCR5eYmrmh7y4+ZWTsjw6aNMdzg20mmJLpWIIDzEKJKrsWn+BWtvUP+mOkQ==", "dev": true, "license": "GPL-3.0-or-later", "dependencies": { - "@fortawesome/fontawesome-svg-core": "6.2.1", - "@fortawesome/free-solid-svg-icons": "6.2.1", + "@fortawesome/fontawesome-svg-core": "6.7.2", + "@fortawesome/free-solid-svg-icons": "6.7.2", "@fortawesome/react-fontawesome": "0.2.6", "@headlessui/react": "^2.2.8", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", @@ -2515,45 +2515,6 @@ "webrtc-adapter": "^9.0.1" } }, - "node_modules/@nethesis/phone-island/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz", - "integrity": "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@nethesis/phone-island/node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz", - "integrity": "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@nethesis/phone-island/node_modules/@fortawesome/free-solid-svg-icons": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz", - "integrity": "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==", - "dev": true, - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND MIT)", - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@nethesis/phone-island/node_modules/framer-motion": { "version": "12.38.0", "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.38.0.tgz", @@ -3199,9 +3160,6 @@ "arm" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3216,9 +3174,6 @@ "arm" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3233,9 +3188,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3250,9 +3202,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3267,9 +3216,6 @@ "loong64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3284,9 +3230,6 @@ "loong64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3301,9 +3244,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3318,9 +3258,6 @@ "ppc64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3335,9 +3272,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3352,9 +3286,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3369,9 +3300,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3386,9 +3314,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3403,9 +3328,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ diff --git a/package.json b/package.json index 99b8827e..79e864b6 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands", "@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", - "@nethesis/phone-island": "^1.0.9", + "@nethesis/phone-island": "^1.0.10-dev.5", "@tailwindcss/forms": "^0.5.7", "@types/lodash": "^4.14.202", "@types/node": "^18.19.9", From 2a5e21d7603ebb7fda3c7c4be59ca57321b1cfa9 Mon Sep 17 00:00:00 2001 From: Antonio Date: Fri, 26 Jun 2026 13:26:30 +0200 Subject: [PATCH 7/9] fix: latest UI fix --- .../PhonebookModule/AddToPhonebookBox.tsx | 6 ++---- src/shared/phonebook.ts | 16 +++++----------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx index b492f086..aa1050c6 100644 --- a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx +++ b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx @@ -24,7 +24,6 @@ import { usePhonebookSearchModule } from '../SearchResults/hook/usePhoneBookSear import { useSharedState, useNethlinkData } from '@renderer/store' import { canWritePhonebookVisibility, - getPhonebookPermissionLevel, getVisiblePhonebookGroups, normalizeSharedGroups, } from '@shared/phonebook' @@ -117,10 +116,9 @@ export function AddToPhonebookBox({ close }) { ) const profile = account?.data?.profile const username = account?.data?.username || account?.username - const canShareAllGroups = getPhonebookPermissionLevel(profile) >= 2 const availableGroups = useMemo( - () => getVisiblePhonebookGroups(operators?.groups, canShareAllGroups, username), - [operators?.groups, canShareAllGroups, username], + () => getVisiblePhonebookGroups(operators?.groups, username), + [operators?.groups, username], ) const visibilityOptions = useMemo( () => diff --git a/src/shared/phonebook.ts b/src/shared/phonebook.ts index 16dcf470..e25fb431 100644 --- a/src/shared/phonebook.ts +++ b/src/shared/phonebook.ts @@ -32,25 +32,19 @@ export function getAllowedOperatorGroupsIds(profile?: AccountData['profile']) { } /** - * Operator groups a user may share a phonebook contact with: the groups the - * user is directly a member of, plus every group when they hold full phonebook - * management permission (level 2 / ad_phonebook). + * Operator groups a user may share a phonebook contact with: ONLY the groups the + * user is directly a member of (CTI Configurations > Users > Group). * - * Sharing must depend only on the groups assigned to the user, NOT on - * presence-panel permissions (all_groups / grp_*), mirroring the - * nethcti-middleware write validation. + * There is no admin / phonebook-level-2 bypass: sharing depends solely on group + * membership for everyone, mirroring the nethcti-middleware write validation, and + * does NOT consider presence-panel permissions (all_groups / grp_*). */ export function getVisiblePhonebookGroups( allGroups: GroupsType | undefined, - canShareAllGroups: boolean | undefined, username: string | undefined, ) { const groups = allGroups || {} - if (canShareAllGroups) { - return Object.keys(groups).sort((left, right) => left.localeCompare(right)) - } - return Object.keys(groups) .filter((groupName) => !!username && groups[groupName]?.users.includes(username)) .sort((left, right) => left.localeCompare(right)) From 9f5e006b7e5cc43c546a4b4e2b77ca3741a75866 Mon Sep 17 00:00:00 2001 From: Antonio Date: Fri, 26 Jun 2026 14:27:33 +0200 Subject: [PATCH 8/9] chore: update phone-island --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 01d298c9..6c03e240 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands", "@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", - "@nethesis/phone-island": "^1.0.10-dev.5", + "@nethesis/phone-island": "^1.0.10-dev.6", "@tailwindcss/forms": "^0.5.7", "@types/lodash": "^4.14.202", "@types/node": "^18.19.9", @@ -2482,9 +2482,9 @@ } }, "node_modules/@nethesis/phone-island": { - "version": "1.0.10-dev.5", - "resolved": "https://registry.npmjs.org/@nethesis/phone-island/-/phone-island-1.0.10-dev.5.tgz", - "integrity": "sha512-CngGjuGmkAo7w12k45abTKycG2TLCR5eYmrmh7y4+ZWTsjw6aNMdzg20mmJLpWIIDzEKJKrsWn+BWtvUP+mOkQ==", + "version": "1.0.10-dev.6", + "resolved": "https://registry.npmjs.org/@nethesis/phone-island/-/phone-island-1.0.10-dev.6.tgz", + "integrity": "sha512-OVqNd+XlKhWl0Y4110jFkLhvVqCyUB7eY3T3l7KtkspVVbbdXlQmjtHA02EYTl6FGDeeRDYfum/QmgL4miO/AA==", "dev": true, "license": "GPL-3.0-or-later", "dependencies": { diff --git a/package.json b/package.json index 79e864b6..9eff6af4 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands", "@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light", "@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid", - "@nethesis/phone-island": "^1.0.10-dev.5", + "@nethesis/phone-island": "^1.0.10-dev.6", "@tailwindcss/forms": "^0.5.7", "@types/lodash": "^4.14.202", "@types/node": "^18.19.9", From 54137aca783d2c7362ff87cc31d8d41e3f501754 Mon Sep 17 00:00:00 2001 From: Antonio Date: Mon, 29 Jun 2026 16:36:53 +0200 Subject: [PATCH 9/9] fix: avoid broken build --- .../Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx index aa1050c6..46e5a03a 100644 --- a/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx +++ b/src/renderer/src/components/Modules/NethVoice/PhonebookModule/AddToPhonebookBox.tsx @@ -28,7 +28,7 @@ import { normalizeSharedGroups, } from '@shared/phonebook' import classNames from 'classnames' -import { CustomThemedTooltip } from '@renderer/components/Nethesis/CurstomThemedTooltip' +import { CustomThemedTooltip } from '@renderer/components/Nethesis/CustomThemedTooltip' export function AddToPhonebookBox({ close }) { const phoneBookSearchModule = usePhonebookSearchModule() const phonebookModule = usePhonebookModule()