upstream: integrar Oasis 1.3.1
Base del merge a tres bandas: git 0.9.5 de epsylon, esta rama y el src de la
APK oficial 1.3.1 (la variante movil: OASIS_MOBILE, regex sin \p{}, audio y
video de Android). Corre en el mismo nodejs-mobile 18.20.4 que ya usabamos.
Se conserva de la rama: Karvan, identidades y multicuenta, topbar y barra
inferior, borrado de EXIF sin sharp, filtro hot del foro, RTC sin STUN y los
modulos apagados en movil (wallet, banking, torrents).
Se toma de upstream lo que ya hace de serie: respuesta citada en chats, ssb-lan
en movil, configuracion en ~/.ssb/oasis (sobrevive a reinstalar el backend).
El asistente de bienvenida deja elegir workflow tambien en movil.
This commit is contained in:
parent
8d838dd8b1
commit
c332afd6ea
265 changed files with 80970 additions and 29167 deletions
28
src/models/phone_number.js
Normal file
28
src/models/phone_number.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
const crypto = require('crypto');
|
||||
|
||||
const FEED_ID = /^@[A-Za-z0-9+/]{43}=\.ed25519$/;
|
||||
const MSG_ID = /^%[A-Za-z0-9+/]{43}=?\.sha256$/;
|
||||
|
||||
const digitsOf = (id) => {
|
||||
const n = crypto.createHash('sha256').update(String(id)).digest().readUInt32BE(0) % 1000000;
|
||||
const s = String(n).padStart(6, '0');
|
||||
return `${s.slice(0, 3)}-${s.slice(3)}`;
|
||||
};
|
||||
const phoneNumberOf = (id) => (FEED_ID.test(String(id || '')) ? digitsOf(id) : null);
|
||||
const roomNumberOf = (id) => (MSG_ID.test(String(id || '')) ? digitsOf(id) : null);
|
||||
|
||||
const normalizeNumber = (value) => {
|
||||
const digits = String(value || '').replace(/[^0-9A-Za-z]/g, '');
|
||||
return /^\d{6}$/.test(digits) ? `${digits.slice(0, 3)}-${digits.slice(3)}` : null;
|
||||
};
|
||||
|
||||
const resolveNumber = (value, known) => {
|
||||
const number = normalizeNumber(value);
|
||||
if (!number) return [];
|
||||
return [...(known || new Map())]
|
||||
.filter(([id]) => phoneNumberOf(id) === number)
|
||||
.map(([id, hop]) => ({ id, hop: Number(hop) }))
|
||||
.sort((a, b) => a.hop - b.hop);
|
||||
};
|
||||
|
||||
module.exports = { phoneNumberOf, roomNumberOf, normalizeNumber, resolveNumber };
|
||||
Loading…
Add table
Add a link
Reference in a new issue