diff --git a/frontend/src/app/shared/components/global-footer/global-footer.component.scss b/frontend/src/app/shared/components/global-footer/global-footer.component.scss
index 81a8c2a57..0dac11966 100644
--- a/frontend/src/app/shared/components/global-footer/global-footer.component.scss
+++ b/frontend/src/app/shared/components/global-footer/global-footer.component.scss
@@ -12,15 +12,11 @@ footer p {
}
footer .row.main {
- padding: 40px 0;
- max-width: 1200px;
+ padding: 40px 0 24px 0;
+ max-width: 1140px;
margin: 0 auto;
}
-footer .row.main .branding {
- text-align: center;
-}
-
footer .row.main .branding > p {
margin-bottom: 45px;
}
@@ -38,16 +34,20 @@ footer .row.main .branding .cta {
margin: 25px auto 25px auto;
}
-footer .row.main .links.outer {
- padding-left: 24px;
- padding-top: 10px;
+footer .link-tree .links:nth-child(1), footer .link-tree .links:nth-child(4) {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+footer .link-tree .links p {
+ padding-right: 5px;
}
footer .row.main .links > div:first-child {
margin-bottom: 20px;
}
-footer .row.main .links .category {
+footer .links .category {
color: #4a68b9;
font-weight: 700;
}
@@ -56,13 +56,27 @@ footer .row.main .links .category:not(:first-child) {
margin-top: 1rem;
}
+footer .site-options {
+ float: right;
+ margin-top: -8px;
+}
+
footer .selector {
- margin: 20px 0;
+ margin: 20px 5px;
+ display: inline-block;
+}
+
+footer .row.link-tree {
+ max-width: 1140px;
+ margin: 0 auto;
+ display: flex;
+ justify-content: space-between;
+ flex-wrap: nowrap;
}
footer .row.social-links {
text-align: center;
- margin-bottom: 24px;
+ margin: 24px 0;
}
footer .row.social-links a {
@@ -90,22 +104,79 @@ footer .row.version p a {
}
.main-logo {
- max-width: 220px;
- margin: 0 auto 20px auto;
+ width: 220px;
+ margin: 0;
+ display: inline-block;
}
-@media (max-width: 992px) {
+@media (max-width: 1200px) {
- footer .row.main .links.outer {
+ .main-logo {
+ width: 200px;
+ }
+
+ footer .row.main {
+ max-width: 90%;
+ }
+
+ footer .row.link-tree {
+ max-width: 90%;
+ font-size: 13px;
+ gap: 20px;
+ }
+
+ footer .row.social-links svg {
+ width: 18px;
+ }
+
+}
+
+@media (max-width: 900px) {
+
+ .main-logo {
+ width: 220px;
+ }
+
+ footer .row.link-tree {
+ font-size: 16px;
+ }
+
+ footer .row.social-links svg {
+ width: 20px;
+ }
+
+ footer .row.link-tree {
+ display: block;
text-align: center;
}
- footer .row.main .links.outer > .row {
- margin-top: 20px;
- }
-
- footer .row.main .links.outer > .row > div:first-child {
+ footer .link-tree .links {
margin-bottom: 20px;
}
+ footer .row.main .branding {
+ text-align: center;
+ }
+
+ .main-logo {
+ display: block;
+ margin: 0 auto;
+ }
+
+ footer .site-options {
+ float: none;
+ margin-top: 30px;
+ }
+
+ footer .row.social-links {
+ margin: 48px 0 24px 0;
+ }
+
+ footer .selector {
+ margin: 10px 0 0 0;
+ }
+
+ footer .selector:not(:last-child) {
+ margin-right: 10px;
+ }
}
diff --git a/unfurler/package.json b/unfurler/package.json
index ec0a153b6..e9d2dca25 100644
--- a/unfurler/package.json
+++ b/unfurler/package.json
@@ -9,7 +9,7 @@
"main": "index.ts",
"scripts": {
"tsc": "./node_modules/typescript/bin/tsc",
- "build": "npm run tsc",
+ "build": "npm run tsc && cp -r src/resources dist/resources",
"start": "node --max-old-space-size=2048 dist/index.js",
"unfurler": "node --max-old-space-size=4096 dist/index.js",
"lint": "./node_modules/.bin/eslint . --ext .ts",
diff --git a/unfurler/src/index.ts b/unfurler/src/index.ts
index de13215e4..f3acd61bf 100644
--- a/unfurler/src/index.ts
+++ b/unfurler/src/index.ts
@@ -8,6 +8,7 @@ import ReusablePage from './concurrency/ReusablePage';
import ReusableSSRPage from './concurrency/ReusablePage';
import { parseLanguageUrl } from './language/lang';
import { matchRoute } from './routes';
+import nodejsPath from 'path';
import logger from './logger';
import { TimeoutError } from "puppeteer";
const puppeteerConfig = require('../puppeteer.config.json');
@@ -50,6 +51,12 @@ class Server {
this.canonicalHost = canonical;
this.startServer();
+
+ setTimeout(async () => {
+ logger.info(`killing myself now`);
+ await this.stopServer();
+ process.exit(0);
+ }, 3600_000 * (1 + Math.random()))
}
async startServer() {
@@ -222,11 +229,7 @@ class Server {
if (!img) {
// proxy fallback image from the frontend
- if (this.secureHost) {
- https.get(config.SERVER.HOST + matchedRoute.fallbackImg, (got) => got.pipe(res));
- } else {
- http.get(config.SERVER.HOST + matchedRoute.fallbackImg, (got) => got.pipe(res));
- }
+ res.sendFile(nodejsPath.join(__dirname, matchedRoute.fallbackImg));
} else {
res.contentType('image/png');
res.send(img);
diff --git a/unfurler/src/resources/img/bisq.png b/unfurler/src/resources/img/bisq.png
new file mode 100644
index 000000000..2b5e1250b
Binary files /dev/null and b/unfurler/src/resources/img/bisq.png differ
diff --git a/unfurler/src/resources/img/dashboard.png b/unfurler/src/resources/img/dashboard.png
new file mode 100644
index 000000000..60c8bcc6a
Binary files /dev/null and b/unfurler/src/resources/img/dashboard.png differ
diff --git a/unfurler/src/resources/img/lightning.png b/unfurler/src/resources/img/lightning.png
new file mode 100644
index 000000000..4686b0ef0
Binary files /dev/null and b/unfurler/src/resources/img/lightning.png differ
diff --git a/unfurler/src/resources/img/liquid.png b/unfurler/src/resources/img/liquid.png
new file mode 100644
index 000000000..72942110c
Binary files /dev/null and b/unfurler/src/resources/img/liquid.png differ
diff --git a/unfurler/src/resources/img/mempool.png b/unfurler/src/resources/img/mempool.png
new file mode 100644
index 000000000..60c8bcc6a
Binary files /dev/null and b/unfurler/src/resources/img/mempool.png differ
diff --git a/unfurler/src/resources/img/mining.png b/unfurler/src/resources/img/mining.png
new file mode 100644
index 000000000..6a2aa1b41
Binary files /dev/null and b/unfurler/src/resources/img/mining.png differ
diff --git a/unfurler/src/routes.ts b/unfurler/src/routes.ts
index f9280369c..1beb0380a 100644
--- a/unfurler/src/routes.ts
+++ b/unfurler/src/routes.ts
@@ -30,7 +30,7 @@ const routes = {
},
lightning: {
title: "Lightning",
- fallbackImg: '/resources/previews/lightning.png',
+ fallbackImg: '/resources/img/lightning.png',
routes: {
node: {
render: true,
@@ -68,7 +68,7 @@ const routes = {
},
mining: {
title: "Mining",
- fallbackImg: '/resources/previews/mining.png',
+ fallbackImg: '/resources/img/mining.png',
routes: {
pool: {
render: true,
@@ -83,13 +83,13 @@ const routes = {
const networks = {
bitcoin: {
- fallbackImg: '/resources/previews/dashboard.png',
+ fallbackImg: '/resources/img/dashboard.png',
routes: {
...routes // all routes supported
}
},
liquid: {
- fallbackImg: '/resources/liquid/liquid-network-preview.png',
+ fallbackImg: '/resources/img/liquid.png',
routes: { // only block, address & tx routes supported
block: routes.block,
address: routes.address,
@@ -97,7 +97,7 @@ const networks = {
}
},
bisq: {
- fallbackImg: '/resources/bisq/bisq-markets-preview.png',
+ fallbackImg: '/resources/img/bisq.png',
routes: {} // no routes supported
}
};