import LockedInputCopy from "@/common/LockedInputCopy";
import Separator from "@/common/Separator";
import Card, { CardContent, CardHeader } from "@/components/Card";
import CheckboxControl from "@/pages/settings/controls/CheckboxControl";
import ControlsGroup from "@/pages/settings/controls/ControlsGroup";
import { useSettingsStore } from "@/store/optionsStore";
import { useAppStore } from "@/store/store";
import { __ } from "@wordpress/i18n";
const AdvancedOthers = () => {
const { settings } = useSettingsStore();
const { cronjobPurgeURL } = window.SPCDash;
const fullCronjobPurgeURL = cronjobPurgeURL.replace('replace:cf_purge_url_secret_key', settings['cf_purge_url_secret_key'] as string || '');
const controls = [
{
id: 'cf_opcache_purge_on_flush',
type: 'toggle',
label: __('Automatically purge the OPcache when cache is purged', 'wp-cloudflare-page-cache'),
},
{
id: 'cf_object_cache_purge_on_flush',
type: 'toggle',
label: __('Automatically purge the object cache when cache is purged', 'wp-cloudflare-page-cache'),
},
{
id: 'cronjob_purge_url',
type: 'custom',
label: __('Purge the whole cache via Cronjob', 'wp-cloudflare-page-cache'),
description: __('If you want to purge the whole cache at specific intervals decided by you, you can create a cronjob that hits the following URL:', 'wp-cloudflare-page-cache'),
component: ,
},
{
id: 'cf_purge_url_secret_key',
type: 'text',
label: __('Purge cache URL secret key', 'wp-cloudflare-page-cache'),
description: __('Secret key to use to purge the whole Cloudflare cache via URL. Don\'t touch if you don\'t know how to use it.', 'wp-cloudflare-page-cache'),
},
{
id: 'cf_remove_purge_option_toolbar',
type: 'toggle',
label: __('Remove purge option from toolbar', 'wp-cloudflare-page-cache'),
},
{
id: 'cf_seo_redirect',
type: 'toggle',
label: __('SEO redirect', 'wp-cloudflare-page-cache'),
description: __('Enable this option if you want to redirect the user to the correct page when the page is not found.', 'wp-cloudflare-page-cache'),
},
{
id: 'purge_roles_custom',
label: __('Select user roles allowed to purge the cache', 'wp-cloudflare-page-cache'),
description: __('Admins are always allowed.', 'wp-cloudflare-page-cache'),
type: 'custom',
component: ,
},
{
type: 'toggle',
id: 'cf_remove_cache_buster',
label: __('Remove Cache Buster Query Parameter', 'wp-cloudflare-page-cache'),
description: __('Stop appending the cache-busting query string (?swcfpc=1) to URLs when using the default caching mode.', 'wp-cloudflare-page-cache'),
// This is here as a legacy fallback.
hide: window.SPCDash.settings?.cf_remove_cache_buster || 1,
},
{
type: 'toggle',
id: 'keep_settings_on_deactivation',
label: __('Keep settings on deactivation', 'wp-cloudflare-page-cache'),
description: __('Keep settings on plugin deactivation.', 'wp-cloudflare-page-cache'),
},
]
return (
{__('Other Settings', 'wp-cloudflare-page-cache')}
)
}
const UserRolesCheckboxes = () => {
const { wordpressRoles } = window.SPCDash;
const { settings, updateSetting } = useSettingsStore();
const { asyncLocked } = useAppStore();
const handleToggleUpdate = (id, nextValue) => {
let nextVal = [...(settings['cf_purge_roles'] || []) as string[]];
if (nextValue) {
nextVal.push(id);
} else {
nextVal = nextVal.filter(item => item != id);
}
updateSetting('cf_purge_roles', nextVal);
}
return (
{Object.entries(wordpressRoles).map(([role, name], idx) => {
return (
{(idx !== 0 && idx !== 1) &&
}
handleToggleUpdate(role, nextVal)}
disabled={asyncLocked}
/>
)
})}
)
}
export default AdvancedOthers;