Skip to content

Commit a868adc

Browse files
authored
fix: missing contact detail if company (#47)
1 parent e4951a9 commit a868adc

File tree

7 files changed

+105
-58
lines changed

7 files changed

+105
-58
lines changed

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
"@nethesis/nethesis-brands-svg-icons": "github:nethesis/Font-Awesome#ns-brands",
5050
"@nethesis/nethesis-light-svg-icons": "github:nethesis/Font-Awesome#ns-light",
5151
"@nethesis/nethesis-solid-svg-icons": "github:nethesis/Font-Awesome#ns-solid",
52-
"@nethesis/phone-island": "^0.8.43",
52+
"@nethesis/phone-island": "^0.8.45",
5353
"@tailwindcss/forms": "^0.5.7",
5454
"@types/lodash": "^4.14.202",
5555
"@types/node": "^18.19.9",

src/renderer/src/components/Modules/NethVoice/BaseModule/ContactNameAndAction.tsx

Lines changed: 78 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,32 @@
1-
import { NumberCaller } from "../../../NumberCaller"
2-
import { ContactType } from "@shared/types"
3-
import { isDev } from "@shared/utils/utils"
4-
import { FavouriteStar } from "./FavouritesStar"
5-
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
6-
import { useAccount } from "@renderer/hooks/useAccount"
7-
import { useNethlinkData } from "@renderer/store"
8-
import { usePhoneIslandEventHandler } from "@renderer/hooks/usePhoneIslandEventHandler"
9-
import { Avatar } from "../../../Nethesis"
10-
import {
11-
faPhone as CallIcon,
12-
} from '@fortawesome/free-solid-svg-icons'
13-
import { t } from "i18next"
14-
import { ReactNode } from "react"
15-
import classNames from "classnames"
16-
export const ContactNameAndActions = ({ contact, number, isHighlight, displayedNumber, avatarDim, username, isFavourite, isSearchData }: {
17-
contact: ContactType,
18-
number: string,
19-
isHighlight: boolean,
20-
displayedNumber: string | ReactNode[],
21-
avatarDim: "small" | "base" | "extra_small" | "large" | "extra_large",
22-
username: string | undefined,
1+
import { NumberCaller } from '../../../NumberCaller'
2+
import { ContactType } from '@shared/types'
3+
import { isDev } from '@shared/utils/utils'
4+
import { FavouriteStar } from './FavouritesStar'
5+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
6+
import { useAccount } from '@renderer/hooks/useAccount'
7+
import { useNethlinkData } from '@renderer/store'
8+
import { usePhoneIslandEventHandler } from '@renderer/hooks/usePhoneIslandEventHandler'
9+
import { Avatar } from '../../../Nethesis'
10+
import { faPhone as CallIcon } from '@fortawesome/free-solid-svg-icons'
11+
import { t } from 'i18next'
12+
import { ReactNode } from 'react'
13+
import classNames from 'classnames'
14+
export const ContactNameAndActions = ({
15+
contact,
16+
number,
17+
isHighlight,
18+
displayedNumber,
19+
avatarDim,
20+
username,
21+
isFavourite,
22+
isSearchData
23+
}: {
24+
contact: ContactType
25+
number: string
26+
isHighlight: boolean
27+
displayedNumber: string | ReactNode[]
28+
avatarDim: 'small' | 'base' | 'extra_small' | 'large' | 'extra_large'
29+
username: string | undefined
2330
isFavourite: boolean
2431
isSearchData: boolean
2532
}) => {
@@ -28,46 +35,79 @@ export const ContactNameAndActions = ({ contact, number, isHighlight, displayedN
2835
const { callNumber } = usePhoneIslandEventHandler()
2936
const avatarSrc = username && operators?.avatars?.[username]
3037

31-
const isOperator = username && !!(operators?.operators?.[username])
38+
const isOperator = username && !!operators?.operators?.[username]
3239

3340
return (
34-
<div className={classNames(avatarDim === 'small' ? 'gap-3' : 'gap-6', "flex flex-row items-center w-full max-w-full")}
41+
<div
42+
className={classNames(
43+
avatarDim === 'small' ? 'gap-3' : 'gap-6',
44+
'flex flex-row items-center w-full max-w-full'
45+
)}
3546
>
3647
<Avatar
3748
size={avatarDim}
3849
src={avatarSrc}
3950
status={isOperator ? operators?.operators?.[username]?.mainPresence : undefined}
4051
bordered={true}
41-
placeholderType={operators?.extensions[contact.speeddial_num || ''] ? 'operator' : 'person'}
52+
placeholderType={
53+
operators?.extensions[contact?.speeddial_num || '']
54+
? 'operator'
55+
: contact?.kind === 'company'
56+
? 'company'
57+
: 'person'
58+
}
4259
/>
43-
<div className='relative w-full h-[44px] '>
60+
<div className="relative w-full h-[44px] ">
4461
<div className="absolute top-0 left-0 flex flex-col gap-1 w-full ">
4562
<div className="flex flex-row gap-2 w-full overflow-hidden">
46-
<div className='dark:text-titleDark text-titleLight font-medium text-[14px] leading-5 truncate break-all whitespace-nowrap '>
47-
{isFavourite ? (contact.company || `${t('Common.Unknown')}`) : (contact.name || contact.company || `${t('Common.Unknown')}`)}
48-
{isDev() && <span
49-
onClick={() => {
50-
navigator.clipboard.writeText(JSON.stringify({ contact, number, isHighlight, displayedNumber, avatarDim, username, isFavourite, isSearchData }))
51-
}}
52-
className='absolute top-[-4px] left-[-26px] text-[8px] cursor-pointer'>[{contact.id}]</span>}
63+
<div className="dark:text-titleDark text-titleLight font-medium text-[14px] leading-5 truncate break-all whitespace-nowrap ">
64+
{isFavourite
65+
? contact.company || `${t('Common.Unknown')}`
66+
: contact.name || contact.company || `${t('Common.Unknown')}`}
67+
{isDev() && (
68+
<span
69+
onClick={() => {
70+
navigator.clipboard.writeText(
71+
JSON.stringify({
72+
contact,
73+
number,
74+
isHighlight,
75+
displayedNumber,
76+
avatarDim,
77+
username,
78+
isFavourite,
79+
isSearchData
80+
})
81+
)
82+
}}
83+
className="absolute top-[-4px] left-[-26px] text-[8px] cursor-pointer"
84+
>
85+
[{contact.id}]
86+
</span>
87+
)}
5388
</div>
5489
{isOperator && <FavouriteStar contact={contact} isSearchData={isSearchData} />}
5590
</div>
5691
<div className="flex flex-row gap-2 items-center">
57-
{!isHighlight &&
92+
{!isHighlight && (
5893
<FontAwesomeIcon
5994
className="dark:text-gray-400 text-gray-600 text-base"
6095
icon={CallIcon}
6196
onClick={() => callNumber(contact.speeddial_num!)}
6297
/>
63-
}
98+
)}
6499
<NumberCaller
65100
number={number}
66-
disabled={!isCallsEnabled}
67-
className="dark:text-textBlueDark text-textBlueLight font-normal hover:underline"
101+
disabled={displayedNumber?.length === 0 || !isCallsEnabled}
102+
className={`${displayedNumber?.length === 0 ? '' : 'dark:text-textBlueDark text-textBlueLight'}font-normal hover:underline`}
68103
isNumberHiglighted={isHighlight}
69104
>
70-
{displayedNumber}
105+
{displayedNumber !== ' ' &&
106+
displayedNumber !== '' &&
107+
displayedNumber !== null &&
108+
(!Array.isArray(displayedNumber) || displayedNumber.length > 0)
109+
? displayedNumber
110+
: '-'}
71111
</NumberCaller>
72112
</div>
73113
</div>

src/renderer/src/components/Modules/NethVoice/SearchResults/SearchNumber.tsx

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ export function SearchNumber({ user, className }: SearchNumberProps) {
3636
while (index !== -1) {
3737
parts.push(number.substring(lastIndex, index))
3838
parts.push(
39-
<span key={`highlight_${index}`} className="dark:text-textBlueDark text-textBlueLight font-medium text-[1rem]">
39+
<span
40+
key={`highlight_${index}`}
41+
className="dark:text-textBlueDark text-textBlueLight font-medium text-[1rem]"
42+
>
4043
{number.substring(index, index + searchText.length)}
4144
</span>
4245
)
@@ -76,7 +79,7 @@ export function SearchNumber({ user, className }: SearchNumberProps) {
7679
<div className="group">
7780
<div className="flex justify-between w-full min-h-14 py-2 px-5 dark:text-titleDark text-titleDark dark:hover:bg-hoverDark hover:bg-hoverLight">
7881
<ContactNameAndActions
79-
avatarDim='small'
82+
avatarDim="small"
8083
contact={user}
8184
number={phoneNumber}
8285
displayedNumber={highlightedNumber}
@@ -85,18 +88,20 @@ export function SearchNumber({ user, className }: SearchNumberProps) {
8588
isFavourite={false}
8689
isSearchData={true}
8790
/>
88-
<Button
89-
className="group-hover:bg-transparent"
90-
variant="ghost"
91-
disabled={!isCallsEnabled}
92-
onClick={() => {
93-
callNumber(phoneNumber!)
94-
}}
95-
>
96-
<p className="dark:text-textBlueDark text-textBlueLight font-medium text-[14px] leading-5">
97-
{t('Operators.Call')}
98-
</p>
99-
</Button>
91+
{phoneNumber && phoneNumber !== '' && (
92+
<Button
93+
className="group-hover:bg-transparent"
94+
variant="ghost"
95+
disabled={!isCallsEnabled}
96+
onClick={() => {
97+
callNumber(phoneNumber!)
98+
}}
99+
>
100+
<p className="dark:text-textBlueDark text-textBlueLight font-medium text-[14px] leading-5">
101+
{t('Operators.Call')}
102+
</p>
103+
</Button>
104+
)}
100105
</div>
101106
</div>
102107
)

src/renderer/src/components/Modules/NethVoice/SearchResults/hook/usePhoneBookSearchModule.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export const usePhonebookSearchModule = (): {
3737
return mapContact(contact)
3838
})
3939
const filteredNumbers = receivedPhoneNumbers.rows.filter(
40-
(phoneNumber) => !(!phoneNumber.name || phoneNumber.name === '')
40+
(phoneNumber) => !(!phoneNumber?.displayName || phoneNumber?.displayName === '')
4141
)
4242
return filteredNumbers
4343
}

src/shared/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ export type ContactType = {
237237
privacy?: string
238238
favorite?: boolean
239239
selectedPrefNum?: string
240+
kind?: string
240241
}
241242

242243
export type ParkingType = {

src/shared/useNethVoiceAPI.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ export const useNethVoiceAPI = (loggedAccount: Account | undefined = undefined)
252252
//DEFAULT VALUES
253253
favorite: false,
254254
selectedPrefNum: 'extension',
255+
kind: 'person'
255256
}
256257
await _POST(`/webrest/phonebook/create`, newContact)
257258
return newContact

0 commit comments

Comments
 (0)