Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 274x 274x 274x 274x 137x 81x 56x 56x 137x | import { useSelect } from '@wordpress/data';
import { useCallback } from '@wordpress/element';
import { store } from '../../social-store';
import { validateConnectInputs } from './connect-input-validation';
import type {
ConnectInputValidation,
ConnectInputValues,
ValidateConnectInputsOptions,
} from './connect-input-validation';
/**
* Wires {@link validateConnectInputs} to the store's already-connected checks.
*
* @return A function validating a service's inputs.
*/
export function useConnectInputValidation() {
const { isMastodonAccountAlreadyConnected, isBlueskyAccountAlreadyConnected } = useSelect(
select => {
const selectors = select( store );
return {
isMastodonAccountAlreadyConnected: selectors.isMastodonAccountAlreadyConnected,
isBlueskyAccountAlreadyConnected: selectors.isBlueskyAccountAlreadyConnected,
};
},
[]
);
return useCallback(
(
serviceId: string,
values: ConnectInputValues,
options: Pick< ValidateConnectInputsOptions, 'allowDuplicate' > = {}
): ConnectInputValidation => {
let isAlreadyConnected: ValidateConnectInputsOptions[ 'isAlreadyConnected' ];
if ( 'mastodon' === serviceId ) {
isAlreadyConnected = isMastodonAccountAlreadyConnected;
} else Eif ( 'bluesky' === serviceId ) {
isAlreadyConnected = isBlueskyAccountAlreadyConnected;
}
return validateConnectInputs( serviceId, values, { ...options, isAlreadyConnected } );
},
[ isBlueskyAccountAlreadyConnected, isMastodonAccountAlreadyConnected ]
);
}
|