estructura: los ficheros de la rama, donde los pondria el dev
Upstream no usa ni un solo subdirectorio en src/views, src/backend, src/models, src/client/assets/styles ni translations: todo plano. La rama habia creado dos (views/fork/ y translations/fork/), que es lo que mas se separaba de su forma de organizar el codigo. Se deshacen, y los ficheros pasan a llamarse como los suyos: views/fork/hive_nav.js -> views/hive_views.js (como main_views.js) views/fork/identities.js -> views/identities_view.js (como *_view.js) translations/fork/i18n_fork.js -> translations/i18n_fork.js (junto a i18n.js) backend/fork_routes.js -> backend/karvan_routes.js (familia karvan_*) Ademas se retira una ruta duplicada: /legacy/export estaba declarada dos veces, en backend.js (la del dev) y en el fichero de rutas de la rama, con el mismo cuerpo salvo un && defensivo. Nacio cuando el formulario se paso a GET; al devolverlo a POST quedo como copia exacta. Con ella se van legacyModel y onboardingModel, que ya no hacia falta inyectar. La cabecera del fichero de rutas explica ahora por que sigue existiendo, con los datos medidos y no de memoria: backend.js concentra 625 rutas y se reescribe en cada release (+833/-286 en la 0.9.2, +266/-31 en la 0.9.1), asi que una ruta anadida en medio entra en conflicto cada vez. Quedan diez ficheros propios, todos siguiendo la convencion de upstream, y +247 lineas repartidas en 21 ficheros suyos (sin contar OasisMobile.css, que es el tema de la rama). Comprobado tras mover: arranque, las siete rutas principales, el selector de identidades con sus siete entradas y su aviso, crear sala y enviar mensaje en Karvan, y la exportacion de identidad por la ruta del dev.
This commit is contained in:
parent
e0ff70c138
commit
5c769a5a10
8 changed files with 22 additions and 36 deletions
|
|
@ -9442,8 +9442,8 @@ const middleware = [
|
|||
await next();
|
||||
},
|
||||
// rutas propias de la rama (Karvan, barra inferior, exportacion): fuera de la cadena de upstream
|
||||
require('./fork_routes')({ cooler, pull, pmModel, checkMod, getViewerId,
|
||||
getConfig, saveConfig, legacyModel, onboardingModel,
|
||||
require('./karvan_routes')({ cooler, pull, pmModel, checkMod, getViewerId,
|
||||
getConfig, saveConfig,
|
||||
isLoopbackRequest, sendErrorPage }),
|
||||
routes,
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
"use strict";
|
||||
// Rutas propias de la rama experimental (modulo Karvan: salas efimeras en RAM,
|
||||
// mensajes temporales y senalizacion WebRTC).
|
||||
// Rutas del modulo Karvan (salas efimeras en RAM, mensajes temporales y
|
||||
// senalizacion WebRTC), mas las dos pantallas que la rama anade a los ajustes.
|
||||
//
|
||||
// Viven fuera de backend.js a proposito: ese fichero concentra las 577 rutas de
|
||||
// upstream en una sola cadena fluida y se mueve +905/-298 lineas por release, asi
|
||||
// que cualquier ruta anadida en medio entra en conflicto en cada integracion.
|
||||
// Aqui se montan en un router propio que se inserta en la cadena de middleware
|
||||
// antes del router de upstream; lo que no casa cae a next() y sigue su curso.
|
||||
// Upstream pone todas sus rutas en backend.js: 625 en una sola cadena fluida.
|
||||
// Estas viven aparte porque ese fichero se reescribe entero en cada release
|
||||
// (+833/-286 en la 0.9.2, +266/-31 en la 0.9.1), asi que una ruta anadida en
|
||||
// medio entra en conflicto cada vez. Se montan en un router propio insertado
|
||||
// antes del de upstream; lo que no casa cae a next() y sigue su curso.
|
||||
//
|
||||
// El nombre sigue a la familia del modulo: karvan_model.js, karvan_view.js,
|
||||
// karvan.js, karvan.css.
|
||||
//
|
||||
// Las dependencias se inyectan en lugar de reconstruirse: cooler abre la conexion
|
||||
// al sbot y duplicarla abriria un segundo cliente muxrpc.
|
||||
|
|
@ -19,8 +22,7 @@ const karvanModel = require('../models/karvan_model')({}); // FORK_IA_UX: salas
|
|||
const { karvanView, karvanRoomView } = require("../views/karvan_view");
|
||||
|
||||
module.exports = ({ cooler, pull, pmModel, checkMod, getViewerId,
|
||||
getConfig, saveConfig, legacyModel, onboardingModel,
|
||||
isLoopbackRequest, sendErrorPage }) => {
|
||||
getConfig, saveConfig, isLoopbackRequest, sendErrorPage }) => {
|
||||
// FORK_IA_UX Fase 2 (cross-device): relay de MENSAJES de Karvan por privados SSB. Funciona vía un pub
|
||||
// (el privado se replica al otro móvil); los SIGNAL de WebRTC NO se relayan (serían demasiados/lentos por el log).
|
||||
// No toca el arranque del SSB. Ingesta por stream EN VIVO (no polling) → eficiente.
|
||||
|
|
@ -229,22 +231,6 @@ async function karvanInviteAuthor(roomId) {
|
|||
);
|
||||
// se responde primero: si se sale antes, el navegador se queda sin pagina
|
||||
setTimeout(() => process.exit(0), 500);
|
||||
})
|
||||
// POST y no GET: en la direccion, la contraseña acaba en el historial del
|
||||
// navegador, en el registro del servidor y en el Referer de lo siguiente que
|
||||
// se cargue. En el cuerpo, no.
|
||||
.post('/legacy/export', koaBody(), async (ctx) => {
|
||||
if (!isLoopbackRequest(ctx)) { ctx.status = 403; ctx.body = ''; return; }
|
||||
const pw = ctx.request.body && ctx.request.body.password;
|
||||
if (!pw || pw.length < 32) return ctx.redirect('/legacy');
|
||||
try {
|
||||
const { filename, data } = await legacyModel.exportData({ password: pw });
|
||||
ctx.set('Content-Type', 'application/octet-stream');
|
||||
ctx.set('Content-Disposition', `attachment; filename="${filename}"`);
|
||||
ctx.set('Content-Length', String(data.length));
|
||||
ctx.body = data;
|
||||
try { onboardingModel.markStep('backup'); } catch (_) {}
|
||||
} catch (error) { sendErrorPage(ctx, error.message); }
|
||||
});
|
||||
|
||||
return forkRouter.routes();
|
||||
Loading…
Add table
Add a link
Reference in a new issue