feat: enhance contact management and vCard support
- Added support for parsing and generating additional vCard properties including GENDER, LOGO, SOUND, LABEL, CALURI, CALADRURI, FBURL, and SOURCE. - Extended ContactCard interface to include new fields such as gender, media, anniversaries, online services, and personal info. - Implemented logic to handle multi-part TLDs for domain extraction in avatars. - Improved avatar component to prioritize contact photos and handle inline images in emails. - Updated localization files to include new fields and labels for contact details. - Refactored contact store to expose a method for retrieving contact photos. - Enhanced unit tests to cover new vCard properties and ensure correct parsing and generation.
This commit is contained in:
@@ -21,11 +21,19 @@ export function getContactDisplayName(contact: ContactCard): string {
|
||||
return '';
|
||||
}
|
||||
|
||||
function getContactPrimaryEmail(contact: ContactCard): string {
|
||||
export function getContactPrimaryEmail(contact: ContactCard): string {
|
||||
if (!contact.emails) return '';
|
||||
return Object.values(contact.emails)[0]?.address || '';
|
||||
}
|
||||
|
||||
export function getContactPhotoUri(contact: ContactCard): string | undefined {
|
||||
if (!contact.media) return undefined;
|
||||
for (const media of Object.values(contact.media)) {
|
||||
if (media.kind === 'photo' && media.uri) return media.uri;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
interface ContactStore {
|
||||
contacts: ContactCard[];
|
||||
addressBooks: AddressBook[];
|
||||
@@ -409,5 +417,4 @@ export const useContactStore = create<ContactStore>()(
|
||||
)
|
||||
);
|
||||
|
||||
export { getContactPrimaryEmail };
|
||||
export type { ContactName };
|
||||
|
||||
Reference in New Issue
Block a user