OASIS_MOBILE/src/server/phone_screen_android.js
hacklab 83f26ba19e integrar la 1.3.5 del dev y perfiles Minimo, Acampada y Activista
Lo del dev, tal cual desde el nodejs-project de su APK oficial 1.3.5, mezclado
a tres bandas con la 1.3.3 como base. Lo que no habiamos tocado se coge entero.

Conflictos:
- backend.js: su middleware nuevo de media va delante de nuestro router.
- main_views.js y bookmark_view.js: lo suyo. Su menu de tarjeta (⋯) ya aparta
  borrar del pulgar, que era lo que hacia nuestro cambio.
- settings_view.js y tribes_view.js: lo suyo mas nuestra linea de enganche.

La 1.3.5 trae una cabecera de modulo para el movil (apkModbar) que se lleva la
primera caja de fichas, el buscador y los contadores. Con el skin Activista su
CSS (OasisMobile.css) no se carga: se le da estilo en mobile_ux.css, los avisos
suben encima con order y se ajusta la cabecera nueva de las tarjetas. Filtrar
va ahora dentro de la caja de fichas (casilla + etiqueta) para viajar con ella.

Perfiles: Minimo (6 modulos, de serie), Acampada (16), Activista (24, con
tribus, votaciones, campañas, encuestas y tareas) y despues los del dev por
numero de modulos.
2026-10-22 12:12:20 +02:00

36 lines
1 KiB
JavaScript

const fs = require('fs');
const net = require('net');
const path = require('path');
const { jpegSplitter } = require('./phone_module');
const MARKER = path.join(__dirname, '..', '..', '.audio_bridge');
const bridgePort = () => {
try {
const port = Number(String(fs.readFileSync(MARKER, 'utf8')).trim());
return Number.isFinite(port) && port > 0 ? port : 0;
} catch (_) {
return 0;
}
};
module.exports = () => ({
available: () => bridgePort() > 0,
open({ onJpeg, onEnd }) {
const port = bridgePort();
if (!port) return null;
let ended = false;
const finish = () => {
if (ended) return;
ended = true;
try { onEnd(); } catch (_) {}
};
const sock = net.connect(port, '127.0.0.1');
sock.setNoDelay(true);
sock.on('error', finish);
sock.on('close', finish);
sock.on('connect', () => sock.write('C'));
sock.on('data', jpegSplitter((jpeg) => { if (!ended) onJpeg(jpeg); }));
return { stop() { ended = true; try { sock.destroy(); } catch (_) {} } };
}
});