Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const handleChangeSieve = console.log;
console.log('[FILTER]', filter);
return (
{c('Add Filter Modal').t`Custom Filter`}
<div>
<label>{c('New Label form').t`Name`}</label>
<input required="{true}" label="" placeholder="{c('New" value="{model.Name}" type="text" id="accountName">
</div>
{model.Name && type !== 'sieve' ? : null}
{type === 'sieve' ? : null}
{c('New Label form').t`Cancel`}
{c('New Label form').t`Save`}
);
}
c('Feature').t`Servers in ${vpnCountries.basic.length} countries`,
c('Feature').t`High speed`,
c('Feature').t`No logs/No ads`,
<del>{c('Feature').t`Filesharing/bitorrent support`}</del>,
<del>{c('Feature').t`Secure Core and Tor VPN`}</del>,
<del>{c('Feature').t`Advanced privacy features`}</del>,
<del>{c('Feature').t`Access blocked content`}</del>
]
},
vpnPlusPlan && {
name: vpnPlusPlan.Name,
planID: vpnPlusPlan.ID,
title: PLAN_NAMES[PLANS.VPNPLUS],
price: ,
imageSrc: professionalPlanSvg,
description: c('Description').t`Advanced security features`,
features: [
c('Feature').t`5 VPN connections`,
c('Feature').t`Servers in ${vpnCountries.all.length} countries`,
c('Feature').t`Highest speed (10 Gbps)`,
c('Feature').t`No logs/No ads`,
c('Feature').t`Filesharing/bitorrent support`,
c('Feature').t`Secure Core and Tor VPN`,
c('Feature').t`Advanced privacy features`,
c('Feature').t`Access blocked content`
]
},
visionaryPlan && {
name: visionaryPlan.Name,
planID: visionaryPlan.ID,
title: PLAN_NAMES[PLANS.VISIONARY],
price: ,
const DowngradeModal = (props) => {
return (
{c('Info').t`Your account will be downgraded in a few minutes.`}
{c('Info')
.t`Additional addresses, custom domains, and users must be removed/disabled before performing this action. Any connections to premium servers will be terminated.`}
);
};
const OpenVPNCredentialsModal = ({ username = '', password = '', fetchUserVPN, ...rest }) => {
const [loading, withLoading] = useLoading();
const api = useApi();
const { createNotification } = useNotifications();
const [credentials, setCredentials] = useState({ username, password });
const title = c('Title').t`Edit OpenVPN / IKEv2 credentials`;
const handleChangeUsername = ({ target }) => setCredentials({ ...credentials, username: target.value });
const handleChangePassword = ({ target }) => setCredentials({ ...credentials, password: target.value });
const handleSubmit = async () => {
const RESERVED_USERNAMES = ['guest'];
if (RESERVED_USERNAMES.includes(credentials.username.toLowerCase())) {
createNotification({
text: c('Error').t`'${credentials.username}' is a reserved word. Please set another username.`
});
return;
}
await api(updateVPNName(credentials.username));
await api(updateVPNPassword(credentials.password));
await fetchUserVPN();
rest.onClose();
cycle={Cycle}
planIDs={switchPlan({
planIDs,
plans,
planID: plansMap[PLANS.PROFESSIONAL].ID,
service: PLAN_SERVICES.MAIL
})}
/>
);
}}
>{c('Action').t`Upgrade`}
)
},
(isFreeVpn || hasVpnBasic(subscription)) && {
title: c('Title').t`Upgrade to ProtonVPN Plus`,
description: c('Title')
.t`Upgrade to ProtonVPN Plus to get access to higher speed servers (up to 10 Gbps) and unlock advanced features such as Secure Core VPN, Tor over VPN, and access geo-blocked content (such as Netflix, Youtube, Amazon Prime, etc...).`,
upgradeButton: (
{
createModal(
export const getIdentityPage = () => {
return {
text: c('Title').t`Identity`,
route: '/settings/identity',
icon: 'identity',
sections: [
{
text: c('Title').t`Display name & signature`,
id: 'name-signature'
},
{
text: c('Title').t`Short domain (@pm.me)`,
id: 'pmme',
permissions: [PAID_MAIL]
}
]
};
};
function RemoveEmailFilteredList({ type, email, className, onClick }) {
const { createNotification } = useNotifications();
const { request, loading } = useApiWithoutResult(deleteIncomingDefaults);
const I18N = {
blacklist: c('Title').t`blacklist`,
whitelist: c('Title').t`whitelist`
};
const handleClick = async () => {
const { Email, ID } = email;
await request([ID]);
createNotification({
text: c('Moved to black/whitelist').t`${Email} removed from ${I18N[type]}`
});
onClick(type, email);
};
return (
<>
{showDetails ? (
<>
<label>{c('Label').t`Operating system`}</label>
<input placeholder="{c('Placeholder').t`OS" value="{model.OS}" id="OS">
<label>{c('Label').t`Operating system version`}</label>
<input placeholder="{c('Placeholder').t`OS" value="{model.OSVersion}" id="OSVersion">
<label>{c('Label').t`Browser`}</label>
name="protocol"
value={protocol}
onChange={setProtocol}
options={[
{ value: PROTOCOL.UDP, label: c('Option').t`UDP` },
{ value: PROTOCOL.TCP, label: c('Option').t`TCP` }
]}
/>
<h3>{c('Title').t`3. Select connection and download`}</h3>
{c('Tab').t`Secure Core configs`}
{c('Tab').t`Country configs`}
{c('Tab').t`Server configs`}
{category === CATEGORY.SECURE_CORE && (
<>
<h3>{c('Title').t`Secure core configs`}</h3>
{c('Info')
<span>{c('Title header for members table').t`Role`}</span>
,
<>
<span>{c('Title header for members table').t`Private`}</span>
,
c('Title header for members table').t`Addresses`,
c('Title header for members table').t`Features`,
c('Title header for members table').t`Actions`
]}
/>
{membersSelected.map((member) => {
const key = member.ID;
const memberAddresses = (memberAddressesMap && memberAddressesMap[member.ID]) || [];
return (
,
,
,
,<table>
</table>