# extendify/3.1.1/src/Shared/components/ProductAccountActivation/usePluginsActivation.js

Extendify, version 3.1.1. 50 lines.

- Page: https://pluginprobe.com/plugins/extendify/3.1.1/code/src/Shared/components/ProductAccountActivation/usePluginsActivation.js
- Raw: https://pluginprobe.com/plugins/extendify/3.1.1/raw/src/Shared/components/ProductAccountActivation/usePluginsActivation.js
- Modified: 2026-06-11T18:37:12+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/3.1.1/code/src/Shared/components/ProductAccountActivation/usePluginsActivation.js#L10-L20`.

```javascript
import { AI_HOST } from '@constants';
import useSWRImmutable from 'swr/immutable';

export const ACTIVATION_STATUS = {
	displayed: 'displayed',
	completed: 'completed',
	skipped: 'skipped',
};

const getPluginsScriptData = async (slugs) => {
	const params = new URLSearchParams(slugs.map((slug) => ['plugins', slug]));
	params.append('siteId', window.extSharedData.siteId);
	params.append('partnerId', window.extSharedData.partnerId);

	const response = await fetch(`${AI_HOST}/api/plugins/activate?${params}`);
	return response.json();
};

const patchActivation = async ({
	activationId,
	selectedPlugins,
	status,
	context,
}) => {
	await fetch(`${AI_HOST}/api/plugins/activate`, {
		method: 'PATCH',
		headers: { 'Content-Type': 'application/json' },
		body: JSON.stringify({ activationId, selectedPlugins, status, context }),
	});
};

export const usePluginsActivation = (plugins) => {
	const slugs = plugins.map((plugin) => plugin.slug);
	const {
		data,
		isLoading: loading,
		error,
	} = useSWRImmutable(slugs, getPluginsScriptData);
	const { activationId, ...scriptData } = data ?? {};

	const selectedPlugins = plugins
		.filter((plugin) => plugin.selected)
		.map((plugin) => plugin.slug);

	const activatePlugins = ({ status, context = undefined }) =>
		patchActivation({ activationId, selectedPlugins, status, context });

	return { scriptData, activatePlugins, loading, error };
};

```
