HEX
Server: Apache
System: Linux www 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64
User: root (0)
PHP: 8.2.1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals
Upload Files
File: /mnt/drbd/www/edenhouse/wp-content/plugins/really-simple-ssl/settings/src/Settings/Host/Host.js
import {useRef, useEffect, memo} from "@wordpress/element";
import useFields from "../FieldsData";
import AutoCompleteControl from "../AutoComplete/AutoCompleteControl";
import useHostData from "./HostData";
import {__} from "@wordpress/i18n";

const Host = ({field, showDisabledWhenSaving=true}) => {
    const {updateField, setChangedField, saveFields, handleNextButtonDisabled} = useFields();
    const disabled = useRef(false);
    const {fetchHosts, hosts, hostsLoaded} = useHostData();

    useEffect ( () => {
        if ( !hostsLoaded ) {
            fetchHosts();
        }
    }, []);
    const onChangeHandler = async (fieldValue) => {
        //force update, and get new fields.
        handleNextButtonDisabled(true);
        if (showDisabledWhenSaving) {
            disabled.current = true;
        }
        updateField(field.id, fieldValue);
        setChangedField(field.id, fieldValue);

        await saveFields(true, false);

        handleNextButtonDisabled(false);
        disabled.current = false;
    }

    let loadedHosts = hostsLoaded ? hosts : [];
    let options = [];
    let item = {
        label: __('Optional - Select your hosting provider.', 'really-simple-ssl'),
        value: '',
    };
    if ( field.value.length === 0 ) {
        options.push(item);
    }
    for (let key in loadedHosts) {
        if (loadedHosts.hasOwnProperty(key)) {
            let item = {};
            item.label = loadedHosts[key].name;
            item.value = key;
            options.push(item);
        }
    }

    return (
          <AutoCompleteControl
              className="rsssl-select"
              field={field}
              label={ field.label }
              onChange={ ( fieldValue ) => onChangeHandler(fieldValue) }
              value= { field.value }
              options={ options }
              disabled={disabled.current}
          />
    )
}
export default memo(Host);