import { apiFetch } from '@wordpress/data-controls';
import { getWPCOMConnectionPath } from '../routes';
import { CREATING_CONNECTION_FAILED, CREATE_CONNECTION } from './action-types';
import { WPCOMConnectionCreationPayload, WPErrorRESTResponse } from 'types';
export function* createConnection( {
payload,
}: WPCOMConnectionCreationPayload ): Generator<
ReturnType< typeof apiFetch >,
{
type: typeof CREATE_CONNECTION | typeof CREATING_CONNECTION_FAILED;
payload?: {
redirectUrl?: string;
source?: string;
error?: WPErrorRESTResponse;
};
},
{
redirect_url: string;
error: WPErrorRESTResponse;
}
> {
try {
const { redirect_url: redirectUrl } = yield apiFetch( {
path: getWPCOMConnectionPath(),
method: 'POST',
data: {
return_url: payload.returnUrl,
source: payload.source,
},
} );
return {
type: CREATE_CONNECTION,
payload: {
redirectUrl,
},
};
} catch ( error ) {
return {
type: CREATING_CONNECTION_FAILED,
payload: {
error: error as WPErrorRESTResponse,
},
};
}
}