diff --git a/source/api/actions/member_info.ts b/source/api/actions/member_info.ts index 9fa3b5e..cf8a133 100644 --- a/source/api/actions/member_info.ts +++ b/source/api/actions/member_info.ts @@ -32,7 +32,7 @@ namespace _espe.api name_real_value : string; name_real_index : int; name_login : string; - email_address_veiled : string; + email_address_veiled : (null | string); email_address_nominal : string; } ) @@ -65,7 +65,7 @@ namespace _espe.api }, "email_address_veiled": { "type": "string", - "nullable": false, + "nullable": true, }, "email_address_nominal": { "type": "string", @@ -100,7 +100,7 @@ namespace _espe.api name_real_value : string; name_real_index : int; name_login : string; - email_address_veiled : string; + email_address_veiled : (null | string); email_address_nominal : string; } ) = await _espe.service.member.info(member_id); diff --git a/source/api/actions/member_project.ts b/source/api/actions/member_project.ts index f188cec..21cc165 100644 --- a/source/api/actions/member_project.ts +++ b/source/api/actions/member_project.ts @@ -75,7 +75,15 @@ namespace _espe.api { "membership_number": input.membership_number, "name_real_value": input.name_real_value, - "email_address_private": (input.email_address_private ?? null), + "email_address_private": ( + ("email_address_private" in input) + ? ( + (input.email_address_private !== "") + ? input.email_address_private + : null + ) + : null + ), } ); return Promise.resolve({ diff --git a/source/api/actions/member_read.ts b/source/api/actions/member_read.ts index 9d9bbe6..90de074 100644 --- a/source/api/actions/member_read.ts +++ b/source/api/actions/member_read.ts @@ -25,7 +25,7 @@ namespace _espe.api register< null, { - membership_number : string; + membership_number : (null | string); name_real_value : string; name_real_index : int; email_address_private : (null | string); @@ -36,7 +36,7 @@ namespace _espe.api email_redirect_to_private_address : boolean; email_allow_sending : boolean; password_set : boolean; - email_address_veiled : string; + email_address_veiled : (null | string); email_address_nominal : string; name_login : string; } @@ -51,7 +51,7 @@ namespace _espe.api "type": "object", "properties": { "membership_number": { - "nullable": false, + "nullable": true, "type": "string" }, "name_real_value": { @@ -95,7 +95,7 @@ namespace _espe.api "type": "boolean" }, "email_address_veiled": { - "nullable": false, + "nullable": true, "type": "string" }, "email_address_nominal": { diff --git a/source/database.ts b/source/database.ts index ee68858..433b374 100644 --- a/source/database.ts +++ b/source/database.ts @@ -19,7 +19,7 @@ namespace _espe.database /** */ const _compatible_revisions : Array = [ - "r3", + "r4", ]; diff --git a/source/services/member.ts b/source/services/member.ts index 9c5bec1..bcb513f 100644 --- a/source/services/member.ts +++ b/source/services/member.ts @@ -180,15 +180,19 @@ namespace _espe.service.member */ export function email_address_veiled( object : _espe.type.member_object - ) : string + ) : (null | string) { - return lib_plankton.string.coin( - "{{prefix}}{{membership_number}}@{{domain}}", - { - "prefix": _espe.conf.get().settings.prefix_for_nominal_email_addresses, - "membership_number": object.membership_number, - "domain": _espe.conf.get().settings.target_domain, - } + return ( + (object.membership_number === null) + ? null + : lib_plankton.string.coin( + "{{prefix}}{{membership_number}}@{{domain}}", + { + "prefix": _espe.conf.get().settings.prefix_for_nominal_email_addresses, + "membership_number": object.membership_number, + "domain": _espe.conf.get().settings.target_domain, + } + ) ); } @@ -385,7 +389,7 @@ namespace _espe.service.member name_real_value : string; name_real_index : int; name_login : string; - email_address_veiled : string; + email_address_veiled : (null | string); email_address_nominal : string; } ) diff --git a/source/types.ts b/source/types.ts index 405013c..3929d8c 100644 --- a/source/types.ts +++ b/source/types.ts @@ -24,7 +24,7 @@ namespace _espe.type /** */ export type member_object = { - membership_number : string; + membership_number : (null | string); name_real_value : string; name_real_index : int; email_address_private : (null | string);