51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
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
|
|
// - If it's a boolean, it should be converted from a 0/1 integer in PlatformServiceMixin._mapColumnsToValues
|
|
// - If it's a JSON string, it should be converted to an object/array in PlatformServiceMixin._mapColumnsToValues
|
|
//
|
|
|
|
did: string;
|
|
contactMethods?: Array<ContactMethod>;
|
|
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<Contact, "contactMethods"> & {
|
|
contactMethods?: string;
|
|
};
|
|
|
|
/**
|
|
* This is for those cases (eg. with a DB) where field values may be all primitives or may be JSON values.
|
|
* See src/db/databaseUtil.ts parseJsonField for more details.
|
|
*
|
|
* 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 ContactMaybeWithJsonStrings = Omit<Contact, "contactMethods"> & {
|
|
contactMethods?: string | Array<ContactMethod>;
|
|
};
|
|
|
|
export const ContactSchema = {
|
|
contacts: "&did, name", // no need to key by other things
|
|
};
|