diff --git a/public/index.html b/public/index.html
index 30fd0073..d2f1ab0f 100644
--- a/public/index.html
+++ b/public/index.html
@@ -8,7 +8,7 @@
+ content="default-src 'self'; child-src 'none'; worker-src 'self'; frame-src youtube.com www.youtube.com https://platform.twitter.com https://embed.tidal.com https://w.soundcloud.com https://www.mixcloud.com https://open.spotify.com https://player.twitch.tv; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; connect-src wss://* ws://*:* 'self' https://*; img-src * data:; font-src https://fonts.gstatic.com; media-src *; script-src 'self' https://static.cloudflareinsights.com https://platform.twitter.com https://embed.tidal.com;" />
diff --git a/src/Const.ts b/src/Const.ts
index a037de0d..1fabf33d 100644
--- a/src/Const.ts
+++ b/src/Const.ts
@@ -135,7 +135,14 @@ export const SoundCloudRegex = /soundcloud\.com\/(?!live)([a-zA-Z0-9]+)\/([a-zA-
/**
* Mixcloud regex
*/
-
export const MixCloudRegex = /mixcloud\.com\/(?!live)([a-zA-Z0-9]+)\/([a-zA-Z0-9-]+)/;
+/**
+ * Spotify embed regex
+ */
export const SpotifyRegex = /open\.spotify\.com\/(track|album|playlist|episode)\/([a-zA-Z0-9]+)/;
+
+/**
+ * Twitch embed regex
+ */
+export const TwitchRegex = /twitch.tv\/([a-z0-9_]+$)/i;
diff --git a/src/Element/HyperText.tsx b/src/Element/HyperText.tsx
index b6f51835..057812b1 100644
--- a/src/Element/HyperText.tsx
+++ b/src/Element/HyperText.tsx
@@ -10,6 +10,7 @@ import {
SoundCloudRegex,
MixCloudRegex,
SpotifyRegex,
+ TwitchRegex,
} from "Const";
import { RootState } from "State/Store";
import SoundCloudEmbed from "Element/SoundCloudEmded";
@@ -18,6 +19,7 @@ import SpotifyEmbed from "Element/SpotifyEmbed";
import TidalEmbed from "Element/TidalEmbed";
import { ProxyImg } from "Element/ProxyImg";
import { HexKey } from "Nostr";
+import TwitchEmbed from "./TwitchEmbed";
export default function HyperText({ link, creator }: { link: string; creator: HexKey }) {
const pref = useSelector((s: RootState) => s.login.preferences);
@@ -43,6 +45,7 @@ export default function HyperText({ link, creator }: { link: string; creator: He
const soundcloundId = SoundCloudRegex.test(a) && RegExp.$1;
const mixcloudId = MixCloudRegex.test(a) && RegExp.$1;
const spotifyId = SpotifyRegex.test(a);
+ const twitchId = TwitchRegex.test(a);
const extension = FileExtensionRegex.test(url.pathname.toLowerCase()) && RegExp.$1;
if (extension) {
switch (extension) {
@@ -109,6 +112,8 @@ export default function HyperText({ link, creator }: { link: string; creator: He
return ;
} else if (spotifyId) {
return ;
+ } else if (twitchId) {
+ return ;
} else {
return (
e.stopPropagation()} target="_blank" rel="noreferrer" className="ext">
diff --git a/src/Element/TwitchEmbed.tsx b/src/Element/TwitchEmbed.tsx
new file mode 100644
index 00000000..2151db82
--- /dev/null
+++ b/src/Element/TwitchEmbed.tsx
@@ -0,0 +1,8 @@
+const TwitchEmbed = ({ link }: { link: string }) => {
+ const channel = link.split("/").slice(-1);
+
+ const args = `?channel=${channel}&parent=${window.location.hostname}&muted=true`;
+ return ;
+};
+
+export default TwitchEmbed;
diff --git a/src/translations/hu.json b/src/translations/hu.json
index 3993d82e..e6291322 100644
--- a/src/translations/hu.json
+++ b/src/translations/hu.json
@@ -43,7 +43,6 @@
"9WRlF4": "Küldés",
"9gqH2W": "Bejelentkezés",
"9wO4wJ": "Lightning Számla",
- "ADmfQT": "Szülő",
"ASRK0S": "Ez a felhasználó némítva",
"Adk34V": "Profilod kitöltése",
"AyGauy": "Bejelentkezés",
@@ -117,7 +116,7 @@
"RhDAoS": "Biztos hogy törölni akarod a {id}",
"RoOyAh": "Csomópontok",
"Sjo1P4": "Egyedi",
- "TpgeGw": "Hex Salt..",
+ "TpgeGw": "Hex só..",
"UQ3pOC": "A Nostr-án sok embernek ugyanaz a felhasználóneve. A felhasználónév és a személyazonosság két különböző dolog. A következő lépésben tudsz magadnak egyedi azonosítót szerezni.",
"Up5U7K": "Tiltás",
"VOjC1i": "Válaszd ki mely szolgáltatóhoz legyenek a fájlok feltöltve",
@@ -134,13 +133,13 @@
"YXA3AH": "Reakciók engedélyezése",
"ZKORll": "Aktiválás",
"ZLmyG9": "Közreműködők",
- "ZUZedV": "Lightning adomány:",
+ "ZUZedV": "Villám adomány:",
"a5UPxh": "Támogasd a fejlesztőket és a platform szolgáltatókat akik NIP-05 azonosító szolgáltatásokat biztosítanak",
"aWpBzj": "Mutass többet",
"brAXSu": "Válassz felhasználónevet",
"bxv59V": "Csak most",
- "c35bj2": "Ha kérdése van a NIP-05 azonosító rendelésével kapcsolatban, kérjük, írjon üzenetet {link}",
- "cQfLWb": "Cím..",
+ "c35bj2": "Ha kérdése van a NIP-05 rendelésével kapcsolatban, kérjük, írjon DM-et {link}",
+ "cQfLWb": "URL..",
"cWx9t8": "Mind némítása",
"cuV2gK": "név már foglalt",
"cyR7Kh": "Vissza",
@@ -152,10 +151,10 @@
"eR3YIn": "Bejegyzések",
"filwqD": "Olvasás",
"flnGvv": "Mi jár a fejedben?",
- "g5pX+a": "Rólam",
+ "g5pX+a": "Rólunk",
"gBdUXk": "Mentsd el a kulcsaidat!",
"gDZkld": "A Snort a Nostr protokollnak egyik felülete. A Nostr pedig a ”bejegyzésekˇ tárolására és megosztására létrehozott decentralizált protokoll.",
- "gDzDRs": "Emoji küldése, amikor egy bejegyzésre reagál",
+ "gDzDRs": "Emoji küldendő, amikor reagál egy jegyzetre",
"gjBiyj": "Betöltés...",
"hCUivF": "A bejegyzések a globális és bejegyzések fül alatt valós időben jelennek meg",
"hK5ZDk": "a világ",
@@ -169,29 +168,28 @@
"ieGrWo": "Követem",
"itPgxd": "Profil",
"izWS4J": "Követés visszavonása",
- "jA3OE/": "{n,plural,=1{{n} sat} other{{n} sats}}",
+ "jA3OE/": "{n} {n, plural, =1 {sat} other {sats}}",
"jCA7Cw": "Előnézet a Snort-on",
- "jfV8Wr": "Vissza",
"juhqvW": "A belépés biztonságának növelése böngésző kiegészítőkkel",
"jvo0vs": "Mentés",
"k2veDA": "Írás",
- "k7sKNy": "A mi saját NIP-05 azonosítási szolgáltatásunk, amelynek a használatával ennek az oldalnak a fejlesztését segítheted és ezzel egy speciális kitüntetést is szerezhetsz!",
+ "k7sKNy": "A mi saját NIP-05 azonosítási szolgáltatásunk, amelynek a használatával ennek az oldalnak a fejlesztését segítheted és ezzel egy speciális kitüntetést szerezhetsz!",
"lCILNz": "Vásárlás",
"lD3+8a": "Fizetem",
"lgg1KN": "Felhasználói felület",
"ll3xBp": "Képmegosztó szolgáltató",
"lnaT9F": "Követek {n}",
"lvlPhZ": "Számla fizetése",
- "mH91FY": "Minden közreműködő az adományok és a NIP-05 rendelések egy bizonyos százalékát kapja. A megosztott összegeket alább láthatja",
+ "mH91FY": "Minden közreműködő az adományok és a NIP-05 rendelések egy százalékát kapja, a megosztott összegeket alább láthatja",
"mKAr6h": "Követem mindet",
"mKh2HS": "Fájl feltöltő szolgáltatás",
"mKhgP9": "{n, plural, =0 {} =1 {zapp-olva} other {zapp-olva}}",
"n1xHAH": "Szerezz egy azonosítót (opcionális)",
"nDejmx": "Tiltás visszavonása",
"nN9XTz": "Oszd meg a gondolataidat {link}",
- "nn1qb3": "Adományait nagyra értékeljük",
+ "nn1qb3": "Nagyra értékeljük adományait",
"nwZXeh": "{n} tiltott",
- "o6Uy3d": "Csak a titkos privát kulccsal lehetséges bármely közzététel (események aláírása), minden más csak olvasható módban kerül naplózásra.",
+ "o6Uy3d": "Csak a titkos kulcs használható közzétételre (események aláírására), minden más csak olvasható módban naplózza.",
"o7e+nJ": "{n} követők",
"odFwjL": "Csak a követőimnek",
"odhABf": "Bejelentkezés",
@@ -218,7 +216,7 @@
"uSV4Ti": "A megosztásokhoz manuális megerősítés szükséges",
"usAvMr": "Profil módosítása",
"ut+2Cd": "Szerezz egy partner azonosítót",
- "vOKedj": "{n,plural,=1{& {n} egyéb} other{& {n} egyebek}}",
+ "vOKedj": "{n,plural,=1{& {n} other} other{& {n} others}}",
"vZ4quW": "A NIP-05 egy DNS alapú azonosítási specifikáció, ami segít a valós személyed bizonyításában.",
"wEQDC6": "Módosítás",
"wLtRCF": "A kulcsod",
@@ -228,7 +226,7 @@
"x82IOl": "Némítás",
"xIoGG9": "Menj ide",
"xJ9n2N": "A te publikus kulcsod",
- "xKdNPm": "Küldés",
+ "xKdNPm": "Küld",
"xKflGN": "{username} a Nostr-án követ",
"xbVgIm": "Média automatikus betöltése",
"xmcVZ0": "Keresés",