From 93fda756aaa83887166ea5619e51f737c612a4d6 Mon Sep 17 00:00:00 2001 From: coopops Date: Wed, 10 Jun 2026 12:09:51 +0000 Subject: [PATCH] =?UTF-8?q?Revert=20"feat(desktop):=20=D1=81=D0=B0=D0=B9?= =?UTF-8?q?=D1=82=20=D0=BA=D0=BE=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=20=D0=B2=20scope=5Fextensions=20=D0=B4=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D0=BC=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?PWA-=D0=BC=D0=B0=D0=BD=D0=B8=D1=84=D0=B5=D1=81=D1=82=D0=B0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit adea7038d3707d02aebed41d8646e2b75ecef0c4. --- .../src-ssr/middlewares/dynamicManifest.ts | 47 +------------------ 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/components/desktop/src-ssr/middlewares/dynamicManifest.ts b/components/desktop/src-ssr/middlewares/dynamicManifest.ts index e664dd4b375..144f003d5cd 100644 --- a/components/desktop/src-ssr/middlewares/dynamicManifest.ts +++ b/components/desktop/src-ssr/middlewares/dynamicManifest.ts @@ -9,55 +9,18 @@ import { ssrMiddleware } from 'quasar/wrappers'; // сюда бы не дошло. Поэтому отдаём по /manifest.webmanifest — статики там нет, // запрос проваливается до этого middleware. в HTML // переписывается на этот путь в generateConfig.ts. - -// Сайт кооператива (vars.website) подключается к PWA через scope_extensions: -// переходы из установленного приложения на сайт остаются в окне PWA, а не -// выкидывают в браузер. Источник — публичный getSystemInfo бэкенда (председатель -// меняет сайт в ЛК без редеплоя), кэш с TTL чтобы не дёргать бэкенд на каждый -// запрос манифеста. Работает в Chrome/Edge 138+ на десктопе при условии, что -// сайт отдаёт /.well-known/web-app-origin-association с записью -// {"https://<домен-лк>/": {"scope": "/"}}; на мобильных платформах браузеры -// scope_extensions пока не поддерживают. -let cachedWebsiteOrigin: string | null = null; -let cachedAt = 0; -const WEBSITE_TTL_MS = 5 * 60 * 1000; - -async function getWebsiteOrigin(): Promise { - if (Date.now() - cachedAt < WEBSITE_TTL_MS) return cachedWebsiteOrigin; - cachedAt = Date.now(); // и при ошибке не чаще TTL - try { - const response = await fetch(`${process.env.BACKEND_URL}/v1/graphql`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ query: '{ getSystemInfo { vars { website } } }' }), - }); - const json = await response.json(); - const website: string | undefined = json?.data?.getSystemInfo?.vars?.website; - cachedWebsiteOrigin = website - ? new URL(website.startsWith('http') ? website : `https://${website}`).origin - : null; - } catch { - cachedWebsiteOrigin = null; - } - return cachedWebsiteOrigin; -} - export default ssrMiddleware(({ app }) => { - app.get('/manifest.webmanifest', async (req, res) => { + app.get('/manifest.webmanifest', (req, res) => { const name = process.env.COOP_SHORT_NAME || 'Цифровой Кооператив'; const description = process.env.SITE_DESCRIPTION || 'кооперативная экономика для сообществ и бизнеса'; - const manifest: Record = { - // Явный id фиксирует identity приложения = "https://<домен>/" — этим же - // ключом сайт кооператива ссылается на ЛК в web-app-origin-association. - id: '/', + const manifest = { name, short_name: name, description, start_url: '/', - scope: '/', display: 'standalone', orientation: 'portrait', background_color: '#ffffff', @@ -75,12 +38,6 @@ export default ssrMiddleware(({ app }) => { ], }; - const websiteOrigin = await getWebsiteOrigin(); - const ownHost = req.get('host'); - if (websiteOrigin && ownHost && new URL(websiteOrigin).host !== ownHost) { - manifest.scope_extensions = [{ type: 'origin', origin: websiteOrigin }]; - } - res.set({ 'Content-Type': 'application/manifest+json', 'Cache-Control': 'no-cache, no-store, must-revalidate',