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
6ee8b77639
commit
9cadc45c1d
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.
|
||||
|
|
@ -213,22 +215,6 @@ async function karvanInviteAuthor(roomId) {
|
|||
// que es quien sabe como hacerlo. Basta con anotarla y reiniciar.
|
||||
accounts.setActive(name);
|
||||
ctx.redirect('/settings');
|
||||
})
|
||||
// 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();
|
||||
|
|
@ -13,7 +13,7 @@ languages.forEach(language => {
|
|||
});
|
||||
|
||||
try {
|
||||
const overlay = require('./fork/i18n_fork.js');
|
||||
const overlay = require('./i18n_fork.js');
|
||||
languages.forEach(l => Object.assign(i18n[l] = i18n[l] || {}, overlay[l] || overlay.en || {}));
|
||||
} catch (e) {}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,9 @@
|
|||
// cada integracion. Aqui solo depende de i18n, que se inyecta porque main_views
|
||||
// lo muta en cada peticion sin reasignarlo.
|
||||
|
||||
const { a, button, div, form, h2, h3, img, input, label, nav, p, section, span } = require("../../server/node_modules/hyperaxe");
|
||||
const { getConfig } = require("../../configs/config-manager.js");
|
||||
const sharedState = require("../../configs/shared-state");
|
||||
const { a, button, div, form, h2, h3, img, input, label, nav, p, section, span } = require("../server/node_modules/hyperaxe");
|
||||
const { getConfig } = require("../configs/config-manager.js");
|
||||
const sharedState = require("../configs/shared-state");
|
||||
|
||||
module.exports = ({ i18n }) => {
|
||||
// === Oasis UX (portado de 0.8.7_UX): topbar + bottombar + hive ===
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
module.exports = ({ i18n, html }) => {
|
||||
const { form, button, div, h2, p, section, input, span, ul, li, a } = html;
|
||||
const accounts = require('../../backend/accounts.js');
|
||||
const accounts = require('../backend/accounts.js');
|
||||
|
||||
const renderIdentities = (activeAccount) => {
|
||||
const names = accounts.list();
|
||||
|
|
@ -1190,9 +1190,9 @@ const renderTasksLink = () => {
|
|||
};
|
||||
|
||||
// === Oasis UX: topbar + bottombar + hive ===
|
||||
// La implementacion vive en ./fork/hive_nav.js para que las reescrituras de
|
||||
// La implementacion vive en ./hive_views.js para que las reescrituras de
|
||||
// upstream sobre este fichero no arrastren la interfaz de la rama.
|
||||
const forkNav = require('./fork/hive_nav')({ i18n });
|
||||
const forkNav = require('./hive_views')({ i18n });
|
||||
const renderMobileTopbar = forkNav.renderMobileTopbar;
|
||||
const renderBottomBar = forkNav.renderBottomBar;
|
||||
const renderHiveNav = forkNav.renderHiveNav;
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ const { template, selectedLanguage, i18n, setLanguage } = require('./main_views'
|
|||
const i18nBase = require("../client/assets/translations/i18n");
|
||||
const { WORKFLOWS, currentWorkflow } = require('../models/workflows_model');
|
||||
const html = require("../server/node_modules/hyperaxe");
|
||||
// selector de identidades: la implementacion vive en ./fork/identities.js
|
||||
const { renderIdentities } = require('./fork/identities')({ i18n, html });
|
||||
// selector de identidades: la implementacion vive en ./identities_view.js
|
||||
const { renderIdentities } = require('./identities_view')({ i18n, html });
|
||||
|
||||
const snhUrl = "https://wiki.solarnethub.com/socialnet/overview";
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue