Nebula © Nebula Services {new Date().getUTCFullYear()}
diff --git a/src/pages/ProxyFrame.tsx b/src/pages/ProxyFrame.tsx
index 9eac2b3..340e718 100644
--- a/src/pages/ProxyFrame.tsx
+++ b/src/pages/ProxyFrame.tsx
@@ -3,8 +3,9 @@ import { searchUtil } from "../util/searchUtil";
import { useEffect, useState } from "preact/hooks";
//import our Iframe component
import { Iframe } from "../components/iframe/Iframe";
-
+import CloakedHead from "../util/CloakedHead";
import SiteSupport from "../util/SiteSupport.json";
+import { useTranslation } from "react-i18next";
declare global {
interface Window {
@@ -14,6 +15,7 @@ declare global {
}
export function ProxyFrame(props: { url: string }) {
+ const { t } = useTranslation();
// pass the URL encoded with encodeURIcomponent
const localProxy = localStorage.getItem("proxy") || "automatic";
const proxyMode = localStorage.getItem("proxyMode") || "embed";
@@ -104,6 +106,10 @@ export function ProxyFrame(props: { url: string }) {
}
return (
+
{proxyMode === "direct" &&
Loading {localProxy}...
}
{proxyMode === "aboutblank" &&
Loading {localProxy}...
}
{proxyMode === "embed" &&
}
diff --git a/src/pages/Settings/CloakPreset.tsx b/src/pages/Settings/CloakPreset.tsx
new file mode 100644
index 0000000..8d526f2
--- /dev/null
+++ b/src/pages/Settings/CloakPreset.tsx
@@ -0,0 +1,30 @@
+import { useState, useEffect } from "preact/hooks";
+
+interface Props {
+ faviconUrl: string;
+ title: string;
+}
+
+const CloakPreset = (props: Props) => {
+ const cloak = (event: any) => {
+ event.preventDefault();
+ console.log(props.faviconUrl);
+ localStorage.setItem("cloakFavicon", props.faviconUrl);
+ localStorage.setItem("cloakTitle", props.title);
+ window.location.reload();
+ };
+
+ return (
+
+ );
+};
+
+export default CloakPreset;
diff --git a/src/pages/Settings/TabSettings.tsx b/src/pages/Settings/TabSettings.tsx
index dd0e23e..a91f064 100644
--- a/src/pages/Settings/TabSettings.tsx
+++ b/src/pages/Settings/TabSettings.tsx
@@ -1,20 +1,47 @@
import { motion } from "framer-motion";
import { tabContentVariant, settingsPageVariant } from "./Variants";
+import CloakPreset from "./CloakPreset";
+import { useTranslation } from "react-i18next";
-const TabSettings = ({ id, active }) => (
-
-
-
- Coming soon!
+const TabSettings = ({ id, active }) => {
+ const { t } = useTranslation();
+
+ return (
+
+
+ {t("settings.cloaking.title")}
+ {t("settings.cloaking.subtitle")}
+
+
+
+
+
+
+
+
-
-);
-
+ );
+};
export default TabSettings;
diff --git a/src/pages/Settings/index.tsx b/src/pages/Settings/index.tsx
index 3551260..e22bb3e 100644
--- a/src/pages/Settings/index.tsx
+++ b/src/pages/Settings/index.tsx
@@ -1,17 +1,18 @@
import TabComponent from "./TabComponent";
import { HeaderRoute } from "../../components/HeaderRoute";
import tabs from "./tabs";
-import { Helmet } from "react-helmet";
import { useTranslation } from "react-i18next";
+import CloakedHead from "../../util/CloakedHead";
export function Settings() {
const { t } = useTranslation();
return (
-
- {t("titles.settings")}
-
+
);
diff --git a/src/pages/_404.tsx b/src/pages/_404.tsx
index dc2bf39..143c07f 100644
--- a/src/pages/_404.tsx
+++ b/src/pages/_404.tsx
@@ -1,16 +1,17 @@
import { useTranslation } from "react-i18next";
import { Link } from "preact-router";
import { HeaderRoute } from "../components/HeaderRoute";
-import { Helmet } from "react-helmet";
+import CloakedHead from "../util/CloakedHead";
export function NotFound() {
const { t } = useTranslation();
return (
-
- {t("titles.404")}
-
+

diff --git a/src/pages/discord.tsx b/src/pages/discord.tsx
index c301cbc..0fbaa75 100644
--- a/src/pages/discord.tsx
+++ b/src/pages/discord.tsx
@@ -1,18 +1,19 @@
import { useTranslation } from "react-i18next";
import { HeaderRoute } from "../components/HeaderRoute";
-import { Helmet } from "react-helmet";
+import CloakedHead from "../util/CloakedHead";
export function DiscordPage() {
const { t } = useTranslation();
return (
-
- {t("titles.discord")}
-
+
-

+
{t("discord.title")}
{t("discord.sub")}
diff --git a/src/util/CloakedHead.tsx b/src/util/CloakedHead.tsx
new file mode 100644
index 0000000..920b2be
--- /dev/null
+++ b/src/util/CloakedHead.tsx
@@ -0,0 +1,38 @@
+import { Helmet } from "react-helmet";
+
+interface Props {
+ originalTitle: string;
+ originalFavicon: string;
+}
+
+const CloakedHead = (props: Props) => {
+ var isTitleCloaked =
+ localStorage.getItem("cloakTitle") !== null
+ ? localStorage.getItem("cloakTitle") !== "none"
+ : false;
+
+ var isFaviconCloaked =
+ localStorage.getItem("cloakFavicon") !== null
+ ? localStorage.getItem("cloakFavicon") !== "none"
+ : false;
+
+ return (
+
+
+ {isTitleCloaked
+ ? localStorage.getItem("cloakTitle")
+ : props.originalTitle}
+
+
+
+ );
+};
+
+export default CloakedHead;