code wiki / (root) / nx_chatmsg.nx

nx_chatmsg.nx source

↩ module page · 22 lines · 1311 B

1// nx_chatmsg.nx -- sovereign chat message state ladder: the delivery/read-receipt spine of an S-class chat 2// (exceed Telegram/Instagram/MMS). A message advances QUEUED -> SENT -> DELIVERED -> READ and NEVER regresses -- 3// a late or duplicate receipt can't un-deliver or un-read a message, and an offline message stays QUEUED (never 4// lost). Messages + receipts ride the E2E relay (nx_e2e), so the server sees only ciphertext. Pure state logic. 5// license_tier: ORIGINAL 6 7const MS_QUEUED: i64 = 0 // composed offline / not yet at the relay 8const MS_SENT: i64 = 1 // reached the relay 9const MS_DELIVERED: i64 = 2 // reached the peer's device 10const MS_READ: i64 = 3 // peer opened it 11 12// apply a receipt that claims level `ev`; MONOTONIC -- only ever advances (stale/duplicate/out-of-order safe). 13// READ implies DELIVERED implies SENT, so a higher receipt may skip levels. 14func cm_advance(state: i64, ev: i64) -> i64 { if ev > state { return ev } return state } 15func cm_is_read(state: i64) -> i64 { if state == MS_READ { return 1 } return 0 } 16// unread badge (receiver side): messages DELIVERED but not yet READ. 17func cm_badge(states: *i64, n: i64) -> i64 { 18 var c: i64 = 0 19 var i: i64 = 0 20 while i < n { if states[i] == MS_DELIVERED { c = c + 1 } i = i + 1 } 21 return c 22}