mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-05-02 11:33:05 +02:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
/**
|
|
* Public key utilities for consistent handling of 64-char full keys
|
|
* and 12-char prefixes throughout the application.
|
|
*
|
|
* MeshCore uses 64-character hex strings for public keys, but messages
|
|
* and some radio operations only provide 12-character prefixes. This
|
|
* module provides utilities for working with both formats consistently.
|
|
*/
|
|
|
|
/** Length of a public key prefix in hex characters */
|
|
const PUBKEY_PREFIX_LENGTH = 12;
|
|
|
|
/**
|
|
* Extract the 12-character prefix from a public key.
|
|
* Works with both full keys and existing prefixes.
|
|
*/
|
|
function getPubkeyPrefix(key: string): string {
|
|
return key.slice(0, PUBKEY_PREFIX_LENGTH);
|
|
}
|
|
|
|
/**
|
|
* Get a display name for a contact, falling back to pubkey prefix.
|
|
*/
|
|
export function getContactDisplayName(
|
|
name: string | null | undefined,
|
|
pubkey: string,
|
|
lastAdvert?: number | null
|
|
): string {
|
|
if (name) return name;
|
|
if (isUnknownFullKeyContact(pubkey, lastAdvert)) return '[unknown sender]';
|
|
return getPubkeyPrefix(pubkey);
|
|
}
|
|
|
|
export function isPrefixOnlyContact(pubkey: string): boolean {
|
|
return pubkey.length < 64;
|
|
}
|
|
|
|
export function isUnknownFullKeyContact(pubkey: string, lastAdvert?: number | null): boolean {
|
|
return pubkey.length === 64 && !lastAdvert;
|
|
}
|