Files
meshtastic-web/packages/web/src/core/dto/NodeNumToNodeInfoDTO.ts
T

40 lines
996 B
TypeScript

import { create } from "@bufbuild/protobuf";
import { Protobuf } from "@meshtastic/core";
function createDefaultUser(num: number): Protobuf.Mesh.User {
const userIdHex = num.toString(16).toUpperCase().padStart(2, "0");
const userId = `!${userIdHex}`;
const last4 = userIdHex.slice(-4);
const longName = `Meshtastic ${last4}`;
const shortName = last4;
return create(Protobuf.Mesh.UserSchema, {
id: userId,
longName: longName.toString(),
shortName: shortName.toString(),
});
}
export function ensureDefaultUser(
node: Protobuf.Mesh.NodeInfo,
): Protobuf.Mesh.NodeInfo {
if (!node) {
return node;
}
if (!node.user) {
if (node.num === undefined || node.num === null) {
console.error(
`NodeInfoFactory.ensureDefaultUser: Cannot create default user for node because 'num' is missing.`,
node,
);
return node;
}
// Assign the created user directly
node.user = createDefaultUser(node.num);
}
return node;
}