export type ContactMethod = { label: string; type: string; // eg. "EMAIL", "SMS", "WHATSAPP", maybe someday "GOOGLE-CONTACT-API" value: string; }; export type Contact = { // // When adding a property, consider whether it should be added when exporting & sharing contacts, eg. DataExportSection did: string; contactMethods?: Array; iViewContent?: boolean; name?: string; nextPubKeyHashB64?: string; // base64-encoded SHA256 hash of next public key notes?: string; profileImageUrl?: string; publicKeyBase64?: string; seesMe?: boolean; // cached value of the server setting registered?: boolean; // cached value of the server setting }; /** * This is for those cases (eg. with a DB) where every field is a primitive (and not an object). * * This is so that we can reuse most of the type and don't have to maintain another copy. * Another approach uses typescript conditionals: https://chatgpt.com/share/6855cdc3-ab5c-8007-8525-726612016eb2 */ export type ContactWithJsonStrings = Omit & { contactMethods?: string; }; export const ContactSchema = { contacts: "&did, name", // no need to key by other things };