# extendify/trunk/src/Shared/components/ProductAccountActivation/accountContext.js

Extendify, version trunk. 50 lines.

- Page: https://pluginprobe.com/plugins/extendify/trunk/code/src/Shared/components/ProductAccountActivation/accountContext.js
- Raw: https://pluginprobe.com/plugins/extendify/trunk/raw/src/Shared/components/ProductAccountActivation/accountContext.js
- Modified: 2026-09-16T19:34:02+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/extendify/trunk/code/src/Shared/components/ProductAccountActivation/accountContext.js#L10-L20`.

```javascript
import { reqDataBasics } from '@shared/lib/data';
import { ACCOUNT_STATUS } from './usePluginsActivation';

// PHP finishes the account after the browser stops waiting, so unanswered is not failed.
const rejectionStatus = ([error]) =>
	error?.code === 'fetch_error' && !error.httpStatus && !error.timedOut
		? ACCOUNT_STATUS.pending
		: ACCOUNT_STATUS.error;

const outcome = (result) => {
	if (!result) {
		return { status: ACCOUNT_STATUS.pending };
	}

	const {
		requestTimeInMs,
		captchaTimeInMs,
		captchaWasWarm,
		stepTimeInMs,
		retries,
		errors,
	} = result.status === 'fulfilled' ? result.value : result.reason;

	return {
		status:
			result.status === 'fulfilled'
				? ACCOUNT_STATUS.success
				: rejectionStatus(errors),
		requestTimeInMs,
		captchaTimeInMs,
		captchaWasWarm,
		stepTimeInMs,
		retries,
		...(errors.length > 0 && { errors }),
	};
};

export const accountContext = (selectedPlugins, results) =>
	Object.fromEntries(
		selectedPlugins.map((plugin, index) => [
			plugin.slug,
			{
				endpoint: plugin.endpoint,
				// Reporting slices per entry, so the body's top-level version won't do.
				extendifyVersion: reqDataBasics.version,
				...outcome(results?.[index]),
			},
		]),
	);

```
