More code cleanup and optimization

This commit is contained in:
Jack Kingsman
2026-02-24 19:59:46 -08:00
parent 1b76211d53
commit 561c8cf9c0
8 changed files with 42 additions and 95 deletions
+2 -2
View File
@@ -15,8 +15,8 @@ const REPEATER_AVATAR = {
textColor: '#ffffff',
};
// Simple hash function for strings
function hashString(str: string): number {
// DJB2 hash function for strings
export function hashString(str: string): number {
let hash = 0;
for (let i = 0; i < str.length; i++) {
const char = str.charCodeAt(i);
+1 -1
View File
@@ -13,7 +13,7 @@ const LAST_MESSAGE_KEY = 'remoteterm-lastMessageTime';
const SORT_ORDER_KEY = 'remoteterm-sortOrder';
export type ConversationTimes = Record<string, number>;
type SortOrder = 'recent' | 'alpha';
export type SortOrder = 'recent' | 'alpha';
// In-memory cache of last message times (loaded from server on init)
let lastMessageTimesCache: ConversationTimes = {};
+2 -10
View File
@@ -1,5 +1,6 @@
import { MeshCoreDecoder, PayloadType } from '@michaelhart/meshcore-decoder';
import { CONTACT_TYPE_REPEATER, type Contact, type RawPacket } from '../types';
import { hashString } from './contactAvatar';
// =============================================================================
// TYPES
@@ -114,15 +115,6 @@ export const PACKET_LEGEND_ITEMS = [
// UTILITY FUNCTIONS (Data Layer)
// =============================================================================
function simpleHash(str: string): string {
let hash = 0;
for (let i = 0; i < str.length; i++) {
hash = (hash << 5) - hash + str.charCodeAt(i);
hash = hash & hash;
}
return Math.abs(hash).toString(16).padStart(8, '0');
}
export function parsePacket(hexData: string): ParsedPacket | null {
try {
const decoded = MeshCoreDecoder.decode(hexData);
@@ -182,7 +174,7 @@ export function getPacketLabel(payloadType: number): PacketLabel {
}
export function generatePacketKey(parsed: ParsedPacket, rawPacket: RawPacket): string {
const contentHash = (parsed.messageHash || simpleHash(rawPacket.data)).slice(0, 8);
const contentHash = (parsed.messageHash || hashString(rawPacket.data).toString(16).padStart(8, '0')).slice(0, 8);
if (parsed.payloadType === PayloadType.Advert && parsed.advertPubkey) {
return `ad:${parsed.advertPubkey.slice(0, 12)}`;