$47 GRAYBYTE WORDPRESS FILE MANAGER $16

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/home/bravrvjk/dantho.rw/wp-content/plugins/extendify/src/Shared/lib/

HOME
Current File : /home/bravrvjk/dantho.rw/wp-content/plugins/extendify/src/Shared/lib//unsplash.js
import { AI_HOST } from '@constants';
import { useAIConsentStore } from '@shared/state/ai-consent';
import { useUnsplashCacheStore } from '@shared/state/unsplash-cache';

const { showAIConsent, userGaveConsent } = useAIConsentStore.getState();

// Additional data to send with requests
const allowList = [
	'siteId',
	'partnerId',
	'wpVersion',
	'wpLanguage',
	'devbuild',
	'isBlockTheme',
	'userId',
	'siteProfile',
];

const extraBody = {
	...Object.fromEntries(
		Object.entries(window.extSharedData).filter(([key]) =>
			allowList.includes(key),
		),
	),
	showAIConsent,
	userGaveConsent,
};

export const fetchImages = async (search, source = null) => {
	const queryString = new URLSearchParams({
		...extraBody,
		query: search,
		source,
	});

	const res = await fetch(
		`${AI_HOST}/api/draft/image/unsplash?${queryString.toString()}`,
		{
			method: 'GET',
			headers: { 'Content-Type': 'application/json' },
		},
	);

	if (!res.ok) {
		throw new Error('Bad response from server');
	}

	const images = await res.json();

	if (!Array.isArray(images)) {
		throw new Error('Bad response from server');
	}

	const result = images.map((image) => ({
		...image,
		requestMetadata: {
			id: res.headers.get('X-Request-Id'),
			total: res.headers.get('X-Total'),
			perPage: res.headers.get('X-Per-Page'),
		},
	}));

	return result;
};

export const preFetchImages = async () => {
	const cache = useUnsplashCacheStore.getState();
	if (!cache.isEmpty() && !cache.hasExpired()) {
		return cache.images;
	}

	const { aiKeywords } = window.extSharedData?.siteProfile ?? {};
	const queries = aiKeywords?.length ? aiKeywords : [];
	const images = (
		await Promise.all(queries.map((query) => fetchImages(query, 'prefetch')))
	).flat();

	const uniqueImagesMap = images.reduce((acc, image) => {
		if (!acc.has(image.id)) {
			acc.set(image.id, image);
		}
		return acc;
	}, new Map());
	cache.updateCache(Array.from(uniqueImagesMap.values()));

	return images;
};


Current_dir [ WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
6 Nov 2025 10.43 AM
bravrvjk / bravrvjk
0755
__tests__
--
6 Nov 2025 10.43 AM
bravrvjk / bravrvjk
0755
api-fetch.js
0.338 KB
15 Sep 2025 11.30 PM
bravrvjk / bravrvjk
0644
dom.js
0.248 KB
26 Mar 2025 6.03 PM
bravrvjk / bravrvjk
0644
extra-body.js
0.3 KB
16 Jul 2025 7.39 PM
bravrvjk / bravrvjk
0644
pages.js
15.938 KB
5 Sep 2025 2.23 PM
bravrvjk / bravrvjk
0644
parsing.js
0.2 KB
27 Aug 2025 5.47 PM
bravrvjk / bravrvjk
0644
unsplash.js
1.913 KB
19 May 2025 4.47 PM
bravrvjk / bravrvjk
0644
utils.js
1.679 KB
27 Aug 2025 5.47 PM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF