- {/* Settings icon */}
-
-
-
- {/* Debug icon */}
-
+
+
+
+ {/*
-
- {/* about icon */}
+ */}
diff --git a/src/renderer/pages/Options.tsx b/src/renderer/pages/Options.tsx
new file mode 100644
index 00000000..7190b465
--- /dev/null
+++ b/src/renderer/pages/Options.tsx
@@ -0,0 +1,111 @@
+import classNames from 'classnames';
+import { useState, useEffect } from 'react';
+import Nav from '../components/Nav';
+import { settings } from '../lib/settings';
+import { defaultSettings } from '../../defaultSettings';
+import Lottie from 'lottie-react';
+import LottieFile from '../../../assets/json/1713988096625.json';
+
+export default function Options() {
+ const [theme, setTheme] = useState
();
+ const [ipData, setIpData] = useState();
+ const [systemTray, setSystemTray] = useState();
+
+ useEffect(() => {
+ settings.get('theme').then((value) => {
+ setTheme(typeof value === 'undefined' ? defaultSettings.theme : value);
+ });
+ settings.get('ipData').then((value) => {
+ setIpData(typeof value === 'undefined' ? defaultSettings.ipData : value);
+ });
+ settings.get('systemTray').then((value) => {
+ setSystemTray(typeof value === 'undefined' ? defaultSettings.systemTray : value);
+ });
+ }, []);
+
+ if (
+ typeof theme === 'undefined' ||
+ typeof systemTray === 'undefined'
+ )
+ return (
+ <>
+
+ >
+ );
+
+ return (
+ <>
+
+
+
+
{
+ setIpData(!ipData);
+ settings.set('ipData', !ipData);
+ }}
+ >
+
+
+
نمایش آیپی و لوکیشن پساز اتصال
+
+
+
+
+ سایر تنظیمات
+
+
+
{
+ const tmp = theme === 'light' ? 'dark' : 'light';
+ setTheme(tmp);
+ settings.set('theme', tmp);
+ document.documentElement.setAttribute('data-bs-theme', tmp);
+ }}
+ >
+
+
+
+ مشخصکردن حالت نمایش برنامه
+
+
+
{
+ setSystemTray(!systemTray);
+ settings.set('systemTray', !systemTray);
+ }}
+ >
+
+
+
آیکون برنامه در تسکبار قرار نگیرد
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/renderer/pages/Routing.tsx b/src/renderer/pages/Routing.tsx
new file mode 100644
index 00000000..b2b1c866
--- /dev/null
+++ b/src/renderer/pages/Routing.tsx
@@ -0,0 +1,74 @@
+import classNames from 'classnames';
+import { useState, useEffect } from 'react';
+import Nav from '../components/Nav';
+import RoutingRulesModal from '../components/Modal/RoutingRules';
+import { settings } from '../lib/settings';
+import Lottie from 'lottie-react';
+import LottieFile from '../../../assets/json/1713988096625.json';
+import { toPersianNumber } from '../lib/toPersianNumber';
+
+export default function Routing() {
+ const [routingRules, setRoutingRules] = useState();
+ const [showRoutingRulesModal, setShowRoutingRulesModal] = useState(false);
+
+ // loading settings
+ useEffect(() => {
+ settings.get('routingRules').then((value) => {
+ setRoutingRules(typeof value === 'undefined' ? "" : value);
+ });
+ }, []);
+
+ const countRoutingRules = (value:any) => {
+ if (value === "") {
+ return 'غیرفعال';
+ }
+ const lines = value.split('\n');
+ return lines?.length > 0 ? toPersianNumber(lines.length)+' مورد' : 'غیرفعال';
+ };
+
+ if (
+ typeof routingRules === 'undefined'
+ )
+ return (
+ <>
+
+ >
+ );
+
+ return (
+ <>
+
+ {
+ setShowRoutingRulesModal(false);
+ }}
+ />
+
+
+
{
+ setShowRoutingRulesModal(true);
+ }}
+ >
+
+
+ {countRoutingRules(routingRules)}
+
+
جلوگیری از عبور ترافیک از وارپ
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/renderer/pages/Settings.tsx b/src/renderer/pages/Settings.tsx
index 787b065e..9844f5f8 100644
--- a/src/renderer/pages/Settings.tsx
+++ b/src/renderer/pages/Settings.tsx
@@ -4,12 +4,10 @@ import Nav from '../components/Nav';
import EndpointModal from '../components/Modal/Endpoint';
import PortModal from '../components/Modal/Port';
import LicenseModal from '../components/Modal/License';
-import RoutingRulesModal from '../components/Modal/RoutingRules';
import { settings } from '../lib/settings';
import { defaultSettings } from '../../defaultSettings';
import Lottie from 'lottie-react';
import LottieFile from '../../../assets/json/1713988096625.json';
-import { toPersianNumber } from '../lib/toPersianNumber';
export default function Settings() {
const [endpoint, setEndpoint] = useState();
@@ -21,11 +19,6 @@ export default function Settings() {
const [license, setLicense] = useState();
const [showLicenseModal, setShowLicenseModal] = useState(false);
const [gool, setGool] = useState();
- const [routingRules, setRoutingRules] = useState();
- const [showRoutingRulesModal, setShowRoutingRulesModal] = useState(false);
- const [theme, setTheme] = useState();
- const [ipData, setIpData] = useState();
- const [systemTray, setSystemTray] = useState();
// loading settings
useEffect(() => {
@@ -48,34 +41,12 @@ export default function Settings() {
console.log('🚀 - settings.get - value:', typeof value === 'undefined');
setGool(typeof value === 'undefined' ? defaultSettings.gool : value);
});
- settings.get('routingRules').then((value) => {
- setRoutingRules(typeof value === 'undefined' ? "" : value);
- });
- settings.get('theme').then((value) => {
- setTheme(typeof value === 'undefined' ? defaultSettings.theme : value);
- });
- settings.get('ipData').then((value) => {
- setIpData(typeof value === 'undefined' ? defaultSettings.ipData : value);
- });
- settings.get('systemTray').then((value) => {
- setSystemTray(typeof value === 'undefined' ? defaultSettings.systemTray : value);
- });
}, []);
- const countRoutingRules = (value:any) => {
- if (value === "") {
- return 'غیرفعال';
- }
- const lines = value.split('\n');
- return lines?.length > 0 ? toPersianNumber(lines.length)+' قانون' : 'غیرفعال';
- };
-
if (
typeof psiphon === 'undefined' ||
typeof location === 'undefined' ||
- typeof gool === 'undefined' ||
- typeof theme === 'undefined' ||
- typeof systemTray === 'undefined'
+ typeof gool === 'undefined'
)
return (
<>
@@ -89,7 +60,7 @@ export default function Settings() {
return (
<>
-
+
- {
- setShowRoutingRulesModal(false);
- }}
- />
-
{
- setShowRoutingRulesModal(true);
- }}
- >
-
-
- {countRoutingRules(routingRules)}
-
-
جلوگیری از عبور ترافیک از وارپ
-
-
-
-
- سایر تنظیمات
-
-
-
{
- const tmp = theme === 'light' ? 'dark' : 'light';
- setTheme(tmp);
- settings.set('theme', tmp);
- document.documentElement.setAttribute('data-bs-theme', tmp);
- }}
- >
-
-
-
- مشخصکردن حالت نمایش برنامه
-
-
-
{
- setIpData(!ipData);
- settings.set('ipData', !ipData);
- }}
- >
-
-
-
نمایش آیپی و لوکیشن پساز اتصال
-
-
{
- setSystemTray(!systemTray);
- settings.set('systemTray', !systemTray);
- }}
- >
-
-
-
آیکون برنامه در تسکبار قرار نگیرد
-
>
);
-}
+}
\ No newline at end of file