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.
36 lines
1 KiB
JavaScript
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 (_) {} } };
|
|
}
|
|
});
|