diff --git a/promo/logo-300.png b/promo/logo-300.png
new file mode 100644
index 0000000..475e1ea
Binary files /dev/null and b/promo/logo-300.png differ
diff --git a/promo/logo-64.png b/promo/logo-64.png
new file mode 100644
index 0000000..6856ec2
Binary files /dev/null and b/promo/logo-64.png differ
diff --git a/promo/opera-promo.png b/promo/opera-promo.png
new file mode 100644
index 0000000..0f5b792
Binary files /dev/null and b/promo/opera-promo.png differ
diff --git a/src/Popup/Components/FooterLink.tsx b/src/Popup/Components/FooterLink.tsx
index e9c15d3..c18409a 100644
--- a/src/Popup/Components/FooterLink.tsx
+++ b/src/Popup/Components/FooterLink.tsx
@@ -1,14 +1,24 @@
-import { Link } from 'theme-ui'
+import { Box, Link } from 'theme-ui'
const FooterLink = () => {
return (
-
- Vytal does not change your IP address. To change your IP you will need to
- use a VPN such as{' '}
+
+ Vytal does not change your IP address. To change your IP you will need a
+ VPN such as{' '}
+
{
>
ProtonVPN
-
+ .
+
)
}
diff --git a/src/Popup/Pages/AutofillPage/handleAutofillAddress.ts b/src/Popup/Pages/AutofillPage/handleAutofillAddress.ts
deleted file mode 100644
index e28a755..0000000
--- a/src/Popup/Pages/AutofillPage/handleAutofillAddress.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-const handleAutofillAddress = (value: boolean) => {
- console.log(!value)
- chrome.privacy.services.autofillAddressEnabled.clear({}, () => {
- chrome.privacy.services.autofillAddressEnabled.set(
- {
- value: !value,
- },
- () => {
- chrome.storage.local.set({
- autofillAddress: value,
- })
- }
- )
- })
-}
-
-export default handleAutofillAddress
diff --git a/src/Popup/Pages/AutofillPage/index.tsx b/src/Popup/Pages/AutofillPage/index.tsx
deleted file mode 100644
index 7fc9377..0000000
--- a/src/Popup/Pages/AutofillPage/index.tsx
+++ /dev/null
@@ -1,147 +0,0 @@
-import { Text } from 'theme-ui'
-import { useState, useEffect, ChangeEvent } from 'react'
-import Page from '../../Components/Page'
-import CheckBox from '../../Components/CheckBox'
-// import { autofillData } from '../../../types'
-import Table from '../../Components/Table'
-import TableRow from '../../Components/TableRow'
-import { Button } from 'theme-ui'
-import addresses from '../../../utils/addresses'
-import FooterLink from '../../Components/FooterLink'
-import handleAutofillAddress from './handleAutofillAddress'
-
-interface AutofillPageProps {
- tab: string
- autofillData?: any
- // reverseGeocoding: any
-}
-
-const AutofillPage = ({ tab, autofillData }: AutofillPageProps) => {
- const [autofillAddress, setAutofillAddress] = useState(false)
- const [country, setCountry] = useState('')
- const [city, setCity] = useState('')
- const [region, setRegion] = useState('')
- const [postCode, setPostCode] = useState('')
- const [address, setAddress] = useState('')
- const [phone, setPhone] = useState('9057814565')
- // const [configuration, setConfiguration] = useState('default')
-
- useEffect(() => {
- chrome.storage.local.get(['autofillAddress'], (storage) => {
- storage.autofillAddress && setAutofillAddress(storage.autofillAddress)
- })
- }, [])
-
- useEffect(() => {
- // chrome.storage.local.get(['configuration', 'autofillData'], (storage) => {
- // storage.configuration && setConfiguration(storage.configuration)
- // if (storage.autofillData) {
- // setIP(storage.autofillData)
- // } else {
- // Promise.resolve(getIP()).then((autofillData) => setIP(autofillData))
- // }
- // })
- if (autofillData?.country) {
- setCountry(autofillData.country)
- // chrome.storage.local.set({
- // country: autofillData.country,
- // })
- }
- if (autofillData?.locality) {
- setCity(autofillData.locality)
- // chrome.storage.local.set({
- // city: autofillData.city,
- // })
- }
- if (autofillData?.administrative_area_level_1) {
- setRegion(autofillData.administrative_area_level_1)
- // chrome.storage.local.set({
- // region: autofillData.regionName,
- // })
- }
- if (autofillData?.postal_code) {
- setPostCode(autofillData.postal_code)
- // chrome.storage.local.set({
- // postCode: autofillData.zip,
- // })
- }
- if (autofillData?.street_number && autofillData?.route) {
- setAddress(`${autofillData.street_number} ${autofillData.route}`)
- // chrome.storage.local.set({
- // postCode: autofillData.zip,
- // })
- }
- // autofillData?.city && setCity(autofillData.city)
- // autofillData?.regionName && setRegion(autofillData.regionName)
- // autofillData?.zip && setPostCode()
- // chrome.storage.local.set({
- // country: autofillData.country,
- // city: autofillData.city,
- // regionName: autofillData.regionName,
- // zip: autofillData.zip,
- // })
- }, [autofillData, setCity, setPostCode, setRegion])
-
- // useEffect(() => {
- // if (!postCode && reverseGeocoding?.postcode) {
- // setPostCode(reverseGeocoding?.postcode)
- // chrome.storage.local.set({
- // postCode: reverseGeocoding?.postcode,
- // })
- // }
- // if (reverseGeocoding?.house_number && reverseGeocoding?.road) {
- // setAddress(`${reverseGeocoding.house_number} ${reverseGeocoding.road}`)
- // chrome.storage.local.set({
- // address: `${reverseGeocoding.house_number} ${reverseGeocoding.road}`,
- // })
- // } else if (reverseGeocoding?.road) {
- // setAddress(reverseGeocoding.road)
- // chrome.storage.local.set({
- // address: reverseGeocoding.road,
- // })
- // }
- // }, [postCode, reverseGeocoding, setAddress])
-
- // const changeUserAgent = () => {
- // // if (userAgentType !== 'custom') {
- // // setUserAgentType('custom')
- // // chrome.storage.local.set({
- // // userAgentType: 'custom',
- // // })
- // // }
- // }
-
- const changeCheckBoxValue = (e: ChangeEvent) => {
- console.log(e.target.checked)
- handleAutofillAddress(e.target.checked)
- setAutofillAddress(e.target.checked)
- }
-
- return (
-
-
- {/* */}
-
-
-
- )
-}
-
-export default AutofillPage
diff --git a/src/Popup/Pages/ConnectionPage/index.tsx b/src/Popup/Pages/ConnectionPage/index.tsx
deleted file mode 100644
index 3317ee2..0000000
--- a/src/Popup/Pages/ConnectionPage/index.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import { ipData } from '../../../types'
-import FooterLink from '../../Components/FooterLink'
-import Page from '../../Components/Page'
-import Table from '../../Components/Table'
-import TableRow from '../../Components/TableRow'
-
-interface ConnectionPageProps {
- tab: string
- ipData?: ipData
-}
-
-const ConnectionPage = ({ tab, ipData }: ConnectionPageProps) => {
- // let options: any
-
- // function success(pos: any) {
- // var crd = pos.coords
- // console.log('Your connection position is:')
- // console.log(`Latitude : ${crd.latitude}`)
- // console.log(`Longitude: ${crd.longitude}`)
- // console.log(`More or less ${crd.accuracy} meters.`)
- // }
-
- // function error(err: any) {
- // console.error(`ERROR(${err.code}): ${err.message}`)
- // }
- // options = {
- // enableHighAccuracy: false,
- // timeout: 5000,
- // maximumAge: 0,
- // }
-
- // navigator.geolocation.watchPosition(success, error)
-
- return (
-
-
-
- )
-}
-
-export default ConnectionPage
diff --git a/src/Popup/Pages/LocationPage/index.tsx b/src/Popup/Pages/LocationPage/index.tsx
index b06a72d..2b6203f 100644
--- a/src/Popup/Pages/LocationPage/index.tsx
+++ b/src/Popup/Pages/LocationPage/index.tsx
@@ -1,22 +1,21 @@
import { useState, useEffect, ChangeEvent } from 'react'
-import { Flex, Label, Radio, Select } from 'theme-ui'
+import { Box, Flex, Label, Radio, Select } from 'theme-ui'
import Page from '../../Components/Page'
import DebouncedInput from '../../Components/DebouncedInput'
import detachDebugger from '../../../utils/detachDebugger'
import countryLocales from '../../../utils/countryLocales'
-import { ipData } from '../../../types'
import configurations from '../../../utils/configurations'
import FooterLink from '../../Components/FooterLink'
-import Table from '../../Components/Table'
-import TableRow from '../../Components/TableRow'
+import { ipData } from '../../../types'
+import getIp from '../../../utils/getIp'
+import { RotateCw } from 'react-feather'
interface LocationPageProps {
tab: string
- ipData?: ipData
- geolocation?: GeolocationCoordinates
}
-const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
+const LocationPage = ({ tab }: LocationPageProps) => {
+ const [ipData, setIpData] = useState()
const [locationType, setLocationType] = useState('')
const [timezone, setTimezone] = useState('')
const [locale, setLocale] = useState('')
@@ -24,20 +23,16 @@ const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
const [lon, setLongitude] = useState('')
const [configuration, setConfiguration] = useState('custom')
- // console.log(geolocation)
+ useEffect(() => {
+ getIp().then((ipDataRes) => {
+ setIpData(ipDataRes)
+ })
+ }, [])
useEffect(() => {
chrome.storage.local.get(
['locationType', 'configuration', 'timezone', 'locale', 'lat', 'lon'],
(storage) => {
- if (!storage.locationType || storage.locationType === 'default') {
- setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone)
- setLocale(Intl.DateTimeFormat().resolvedOptions().locale)
- if (geolocation) {
- setLatitude(`${geolocation.latitude}`)
- setLongitude(`${geolocation.longitude}`)
- }
- }
if (storage.locationType === 'matchIp' && ipData) {
setTimezone(ipData.timezone)
setLocale(countryLocales[ipData.countryCode].locale)
@@ -61,7 +56,7 @@ const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
: setLocationType('default')
}
)
- }, [geolocation, ipData])
+ }, [ipData])
const changeType = (e: ChangeEvent) => {
detachDebugger()
@@ -69,12 +64,10 @@ const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
chrome.storage.local.set({ locationType: e.target.value })
if (e.target.value === 'default') {
- setTimezone(Intl.DateTimeFormat().resolvedOptions().timeZone)
- setLocale(Intl.DateTimeFormat().resolvedOptions().locale)
- if (geolocation) {
- setLatitude(`${geolocation.latitude}`)
- setLongitude(`${geolocation.longitude}`)
- }
+ setTimezone('')
+ setLocale('')
+ setLatitude('')
+ setLongitude('')
chrome.storage.local.set({
timezone: '',
locale: '',
@@ -94,7 +87,7 @@ const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
lon: ipData.lon,
})
}
- } else if (e.target.value === 'custom')
+ } else if (e.target.value === 'custom') {
if (configuration !== 'custom') {
setTimezone(configurations[configuration].timezone)
setLocale(configurations[configuration].locale)
@@ -107,6 +100,7 @@ const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
lon: configurations[configuration].lon,
})
}
+ }
}
const changeConfiguration = (e: ChangeEvent) => {
@@ -185,17 +179,46 @@ const LocationPage = ({ tab, ipData, geolocation }: LocationPageProps) => {
{locationType === 'matchIp' && (
-
-
+
+ IP Address
+
+
+ {ipData
+ ? `${getFlagEmoji(ipData.countryCode)} ${ipData?.query}`
+ : 'loading...'}
+
+ {
+ setIpData(undefined)
+ getIp().then((ipDataRes) => {
+ setIpData(ipDataRes)
+ })
+ }}
/>
-
+
)}
{locationType === 'custom' && (
<>
diff --git a/src/Popup/Pages/OtherOptionsPage/index.tsx b/src/Popup/Pages/OtherOptionsPage/index.tsx
deleted file mode 100644
index 4578b50..0000000
--- a/src/Popup/Pages/OtherOptionsPage/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import CheckBox from '../../Components/CheckBox'
-import Page from '../../Components/Page'
-
-interface OtherOptionsPageProps {
- tab: string
-}
-
-const OtherOptionsPage = ({ tab }: OtherOptionsPageProps) => {
- return (
-
-
-
-
-
-
-
-
-
-
-
- )
-}
-
-export default OtherOptionsPage
diff --git a/src/Popup/Pages/SettingsPage/InfoItem.tsx b/src/Popup/Pages/SettingsPage/InfoItem.tsx
new file mode 100644
index 0000000..731fed7
--- /dev/null
+++ b/src/Popup/Pages/SettingsPage/InfoItem.tsx
@@ -0,0 +1,17 @@
+import { Box, Flex } from 'theme-ui'
+
+interface InfoItemProps {
+ title: string
+ children: React.ReactNode
+}
+
+const SettingsPage = ({ title, children }: InfoItemProps) => {
+ return (
+
+ {title}
+ {children}
+
+ )
+}
+
+export default SettingsPage
diff --git a/src/Popup/Pages/SettingsPage/index.tsx b/src/Popup/Pages/SettingsPage/index.tsx
index 8fae8ad..7864ce4 100644
--- a/src/Popup/Pages/SettingsPage/index.tsx
+++ b/src/Popup/Pages/SettingsPage/index.tsx
@@ -1,6 +1,6 @@
-import { Label, Select } from 'theme-ui'
+import { Link, Text } from 'theme-ui'
import Page from '../../Components/Page'
-import CheckBox from '../../Components/CheckBox'
+import InfoItem from './InfoItem'
interface SystemPageProps {
tab: string
@@ -8,30 +8,62 @@ interface SystemPageProps {
const SettingsPage = ({ tab }: SystemPageProps) => {
return (
-
-
-
-
-
+
+
+ While spoofing data a notification bar becomes visible. Hiding the bar
+ can be done by using the{' '}
+
+ --silent-debugger-extension-api
+ {' '}
+ flag.{' '}
+
+ Instructions on how to run chrome with flags
+
+ .
+
+
+ Vytal does not change your IP address. To change your IP you will need a
+ VPN such as{' '}
+
+ NordVPN
+ {' '}
+ or{' '}
+
+ ProtonVPN
+
+ .
+
+
+ Vytal utilizes the debugger API to spoof data which is completely
+ undetectable. Other similar extensions rely on{' '}
+
+ inferior script tag injections
+
+ .
+
+
+ You can test and compare Vytal and other spoofing extensions on{' '}
+
+ vytal.io
+
+ .
+
)
}
diff --git a/src/Popup/Pages/UserAgentPage/index.tsx b/src/Popup/Pages/UserAgentPage/index.tsx
index b0948bb..b01a36c 100644
--- a/src/Popup/Pages/UserAgentPage/index.tsx
+++ b/src/Popup/Pages/UserAgentPage/index.tsx
@@ -14,8 +14,8 @@ const UserAgentPage = ({ tab }: UserAgentPageProps) => {
const [userAgentType, setUserAgentType] = useState('default')
const [operatingSystem, setOperatingSystem] = useState('Windows')
const [browser, setBrowser] = useState('Chrome')
- const [userAgent, setUserAgent] = useState(navigator.userAgent)
- const [platform, setPlatform] = useState(navigator.platform)
+ const [userAgent, setUserAgent] = useState('')
+ const [platform, setPlatform] = useState('')
useEffect(() => {
chrome.storage.local.get(
@@ -36,8 +36,8 @@ const UserAgentPage = ({ tab }: UserAgentPageProps) => {
chrome.storage.local.set({ userAgentType: e.target.value })
if (e.target.value === 'default') {
- setUserAgent(navigator.userAgent)
- setPlatform(navigator.platform)
+ setUserAgent('')
+ setPlatform('')
chrome.storage.local.set({
userAgent: '',
platform: '',
@@ -55,14 +55,18 @@ const UserAgentPage = ({ tab }: UserAgentPageProps) => {
const changeOperatingSystem = async (e: ChangeEvent) => {
detachDebugger()
setOperatingSystem(e.target.value)
- setUserAgent(userAgents[e.target.value]['userAgents'][browser])
+ let browserValue = browser
+ if (!userAgents[e.target.value]['userAgents'][browser]) {
+ browserValue = Object.keys(userAgents[e.target.value]['userAgents'])[0]
+ setBrowser(browserValue)
+ }
+ setUserAgent(userAgents[e.target.value]['userAgents'][browserValue])
setPlatform(userAgents[e.target.value]['platform'])
chrome.storage.local.set({
- userAgent: userAgents[e.target.value]['userAgents'][browser],
+ userAgent: userAgents[e.target.value]['userAgents'][browserValue],
platform: userAgents[e.target.value]['platform'],
operatingSystem: e.target.value,
})
- // await attachCurrentTab()
}
const changeBrowser = (e: ChangeEvent) => {
diff --git a/src/Popup/Pages/WebRtcPage/RadioButton.tsx b/src/Popup/Pages/WebRtcPage/RadioButton.tsx
deleted file mode 100644
index a51227e..0000000
--- a/src/Popup/Pages/WebRtcPage/RadioButton.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import { ChangeEvent } from 'react'
-import { Box, Label, Radio, Text } from 'theme-ui'
-
-interface RadioButtonProps {
- value: string
- name: string
- description: string
- webRtcPolicy: string
- onChange: (e: ChangeEvent) => void
-}
-
-const RadioButton = ({
- value,
- name,
- description,
- webRtcPolicy,
- onChange,
-}: RadioButtonProps) => {
- return (
- <>
-
- {description}
- >
- )
-}
-
-export default RadioButton
diff --git a/src/Popup/Pages/WebRtcPage/getWebRTCData.ts b/src/Popup/Pages/WebRtcPage/getWebRTCData.ts
deleted file mode 100644
index 99f513e..0000000
--- a/src/Popup/Pages/WebRtcPage/getWebRTCData.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-const getWebRTC = (setWebRtcIp: any) => {
- // if (navigator.getUserMedia) {
- const ipRegex =
- /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
-
- // compatibility for firefox and chrome
- let RTCPeerConnection = window.RTCPeerConnection
-
- // minimal requirements for data connection
- const mediaConstraints = {
- optional: [{ RtpDataChannels: true }],
- }
-
- const servers = { iceServers: [{ urls: 'stun:stun.l.google.com:19302' }] }
-
- // construct a new RTCPeerConnection
- const pc = new RTCPeerConnection(servers, mediaConstraints)
-
- let ips: any = []
-
- // listen for candidate events
- pc.onicecandidate = (ice) => {
- // skip non-candidate events
- if (ice.candidate) {
- const ip = ipRegex.exec(ice.candidate.candidate)
- if (ip !== null && ip.length > 1) {
- ips.push(ip[1])
- }
- }
- }
-
- // create a bogus data channel
- pc.createDataChannel('')
-
- // create an offer sdp
- pc.createOffer(
- (result) => {
- // trigger the stun server request
- pc.setLocalDescription(
- result,
- () => {},
- () => {}
- )
- },
- () => {}
- )
-
- const waitForElement = async () => {
- if (pc.localDescription) {
- const lines = pc.localDescription.sdp.split('\n')
- lines.forEach((line) => {
- if (line.indexOf('a=candidate:') === 0) {
- const ip = ipRegex.exec(line)
- if (ip !== null && ip.length > 1) {
- ips.push(ip[1])
- }
- }
- })
- ips = [...new Set(ips)]
- console.log(ips)
- setWebRtcIp(await Promise.all(ips))
- } else {
- setTimeout(waitForElement, 1000)
- }
- }
-
- waitForElement()
- // } else {
- // setWebRTCData([])
- // }
-}
-
-export default getWebRTC
diff --git a/src/Popup/Pages/WebRtcPage/handleWebRtcPolicy.ts b/src/Popup/Pages/WebRtcPage/handleWebRtcPolicy.ts
deleted file mode 100644
index dcceea5..0000000
--- a/src/Popup/Pages/WebRtcPage/handleWebRtcPolicy.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-const handleWebRtcPolicy = (value: string) => {
- console.log(value)
- chrome.privacy.network.webRTCIPHandlingPolicy.clear({}, () => {
- chrome.privacy.network.webRTCIPHandlingPolicy.set(
- {
- value,
- },
- () => {
- chrome.storage.local.set({
- webRtcPolicy: value,
- })
- }
- )
- })
-}
-
-export default handleWebRtcPolicy
diff --git a/src/Popup/Pages/WebRtcPage/index.tsx b/src/Popup/Pages/WebRtcPage/index.tsx
deleted file mode 100644
index 4099162..0000000
--- a/src/Popup/Pages/WebRtcPage/index.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import { useState, useEffect, ChangeEvent } from 'react'
-import Page from '../../Components/Page'
-import handleWebRtcPolicy from './handleWebRtcPolicy'
-import RadioButton from './RadioButton'
-import FooterLink from '../../Components/FooterLink'
-
-interface SystemPageProps {
- tab: string
-}
-
-const WebRtcPage = ({ tab }: SystemPageProps) => {
- const [webRtcPolicy, setWebRtcPolicy] = useState('default')
-
- useEffect(() => {
- chrome.storage.local.get(['webRtcPolicy'], (storage) => {
- storage.webRtcPolicy && setWebRtcPolicy(storage.webRtcPolicy)
- })
- }, [])
-
- const changeRadioValue = (e: ChangeEvent) => {
- handleWebRtcPolicy(e.target.value)
- setWebRtcPolicy(e.target.value)
- }
-
- return (
-
-
-
-
-
-
- )
-}
-
-export default WebRtcPage
diff --git a/src/Popup/Popup.tsx b/src/Popup/Popup.tsx
index 327bf8b..03de210 100644
--- a/src/Popup/Popup.tsx
+++ b/src/Popup/Popup.tsx
@@ -1,64 +1,22 @@
-import { useState, useEffect } from 'react'
+import { useState } from 'react'
import { ThemeProvider, Flex, Box } from 'theme-ui'
import { theme } from '../theme'
-import {
- Wifi,
- MapPin,
- FileText,
- MessageSquare,
- Globe,
- Settings,
-} from 'react-feather'
+import { MapPin, Globe, Info } from 'react-feather'
import TabItem from './TabItem'
import LocationPage from './Pages/LocationPage'
import UserAgentPage from './Pages/UserAgentPage'
import SettingsPage from './Pages/SettingsPage'
-import AutofillPage from './Pages/AutofillPage'
-import WebRtcPage from './Pages/WebRtcPage'
-import ConnectionPage from './Pages/ConnectionPage'
-import { ipData } from '../types'
-import getIp from '../utils/getIp'
-// import getReverseGeocoding from '../utils/getReverseGeocoding'
import '../assets/global.css'
-import OtherOptionsPage from './Pages/OtherOptionsPage'
-import addresses from '../utils/addresses'
const Popup = () => {
const [tab, setTab] = useState('location')
- const [ipData, setIpData] = useState()
- // const [reverseGeocoding, setReverseGeocoding] = useState(undefined)
- const [geolocation, setGeolocation] = useState()
- const [autofillData, setAutofillData] = useState()
-
- useEffect(() => {
- getIp().then((ipDataRes) => {
- setIpData(ipDataRes)
- let geoIndex = (ipDataRes.lat + 90) * 180 + ipDataRes.lon
- console.log(geoIndex)
- let closest = addresses.reduce((prev: any, curr: any) => {
- return Math.abs(curr.geoIndex - geoIndex) <
- Math.abs(prev.geoIndex - geoIndex)
- ? curr
- : prev
- })
- setAutofillData(closest)
- })
- navigator.geolocation.getCurrentPosition(
- (pos) => setGeolocation(pos.coords),
- (err) => console.warn(`ERROR(${err.code}): ${err.message}`),
- {
- enableHighAccuracy: true,
- timeout: 5000,
- }
- )
- }, [])
return (
{
flexDirection: 'column',
}}
>
- {/* setTab('connection')}
- /> */}
setTab('location')}
/>
- {/* setTab('autofill')}
- />
- setTab('webRtc')}
- /> */}
setTab('userAgent')}
/>
- {/* setTab('otherOptions')}
- /> */}
setTab('settings')}
/>
- {/* window.open('https://vytal.io')}
- /> */}
-
-
-
-
+
-
- {/*
- Connection tab won't be fully spoofed until after 1st or 2nd reload.
- */}
diff --git a/src/assets/global.css b/src/assets/global.css
index 49ba1bd..552f8e9 100644
--- a/src/assets/global.css
+++ b/src/assets/global.css
@@ -5,10 +5,10 @@
}
body {
- font-family: 'Nunito';
+ font-family: 'Nunito', Arial, Helvetica, sans-serif;
font-weight: 500;
}
input {
- font-family: 'Nunito';
+ font-family: 'Nunito', Arial, Helvetica, sans-serif;
}
diff --git a/src/manifest.json b/src/manifest.json
index 35dbf9b..506a75c 100755
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -3,7 +3,7 @@
"name": "Vytal - Spoof timezone, location & user agent",
"version": "2.1.0",
"description": "Spoof Timezone, Geolocation, Locale and User Agent.",
- "permissions": ["storage", "debugger", "privacy", "geolocation"],
+ "permissions": ["storage", "debugger"],
"background": { "service_worker": "background.bundle.js" },
"action": {
"default_popup": "popup.html",
diff --git a/src/theme.ts b/src/theme.ts
index 8e230c2..46456c1 100644
--- a/src/theme.ts
+++ b/src/theme.ts
@@ -4,8 +4,6 @@ export const theme: Theme = {
colors: {
text: '#333333',
background: '#FDFDFD',
- // primary: '#B77EEE',
- // primaryDark: '#a55eea',
primary: '#a55eea',
primaryDark: '#9454d2',
red: '#fc5c65',
@@ -73,10 +71,6 @@ export const theme: Theme = {
links: {
footer: {
color: 'text',
- mb: '8px',
- fontSize: '11px',
- position: 'fixed',
- bottom: '0',
textDecoration: 'none',
},
hover: {
diff --git a/src/utils/attachDebugger.ts b/src/utils/attachDebugger.ts
index 81fe410..b4e6f28 100644
--- a/src/utils/attachDebugger.ts
+++ b/src/utils/attachDebugger.ts
@@ -14,7 +14,6 @@ const attachDebugger = (tabId: number) => {
'platform',
],
(storage) => {
- console.log(storage)
if (
storage.timezone ||
storage.lat ||
@@ -24,15 +23,6 @@ const attachDebugger = (tabId: number) => {
) {
chrome.debugger.attach({ tabId: tabId }, '1.3', () => {
if (!chrome.runtime.lastError) {
- // chrome.debugger.sendCommand(
- // { tabId: tabId },
- // 'Target.autoAttachRelated',
- // { targetId: tabId, waitForDebuggerOnStart: false },
- // (res) => {
- // console.log(res)
- // }
- // )
-
if (storage.timezone) {
chrome.debugger.sendCommand(
{ tabId: tabId },