File: /home/beaupptk/abdulfashion.shop/wp-content/plugins/surerank/src/admin-store/resolvers.js
import { toast } from '@bsf/force-ui';
import { select } from '@wordpress/data';
import { STORE_NAME } from './constants';
import * as actions from './actions';
import { ADMIN_SETTINGS_URL, SITE_SETTINGS_URL } from '@Global/constants/api';
import { addQueryArgs } from '@wordpress/url';
import { __ } from '@wordpress/i18n';
import { getDefaultPageDescription } from '@/global/constants';
import { addCategoryToSiteSeoChecks } from '@/functions/utils';
const resolvers = {
*getMetaSettings() {
yield actions.setLoading( 'pending' );
const response = yield actions.fetchFromAPI( ADMIN_SETTINGS_URL );
if ( response.success ) {
yield actions.initSettings( response.data );
return actions.setLoading( 'success' );
}
yield actions.setMessage( 'Failed to fetch meta settings' );
return actions.setLoading( 'error' );
},
*getSiteSettings() {
const response = yield actions.fetchFromAPI( SITE_SETTINGS_URL );
if ( response.success ) {
yield actions.setSiteSettings( {
...( response?.data ?? {} ),
site: {
...( response?.data?.site ?? {} ),
content: getDefaultPageDescription(),
},
} );
}
},
*getSiteSeoAnalysis() {
let report = {};
const url = surerank_globals.site_url;
// Fetch critical issues
try {
const criticalIssuesResponse = yield actions.fetchFromAPI(
addQueryArgs( '/surerank/v1/checks/general', {
url,
} )
);
if ( criticalIssuesResponse ) {
report = {
...report,
...addCategoryToSiteSeoChecks(
criticalIssuesResponse,
'general'
),
};
}
} catch ( error ) {
toast.error(
error?.message ??
__(
'Failed to fetch general seo analysis report',
'surerank'
),
{
description: __(
'An unexpected error occurred while fetching the general SEO analysis report. Please try again later.',
'surerank'
),
}
);
}
// Fetch other issues
try {
const othersIssuesResponse = yield actions.fetchFromAPI(
addQueryArgs( '/surerank/v1/checks/other', {
url,
} )
);
if ( othersIssuesResponse ) {
report = {
...report,
...addCategoryToSiteSeoChecks(
othersIssuesResponse,
'other'
),
};
}
} catch ( error ) {
toast.error(
error?.message ??
__(
'Failed to fetch other seo analysis report',
'surerank'
),
{
description: __(
'An unexpected error occurred while fetching the other SEO analysis report. Please try again later.',
'surerank'
),
}
);
}
// Fetch settings report
try {
const settingsReportResponse = yield actions.fetchFromAPI(
addQueryArgs( '/surerank/v1/checks/settings', {
url,
} )
);
if ( settingsReportResponse ) {
report = {
...report,
...addCategoryToSiteSeoChecks(
settingsReportResponse,
'settings'
),
};
}
} catch ( error ) {
toast.error(
error?.message ??
__( 'Failed to fetch analysis report', 'surerank' ),
{
description: __(
'An unexpected error occurred while fetching the settings SEO analysis report. Please try again later.',
'surerank'
),
}
);
}
return yield actions.setSiteSeoAnalysis( { report } );
},
*getSearchConsole() {
// is on the dashboard page.
let isOnDashboard = false;
try {
const urlParams = new URLSearchParams( window.location.search );
const page = urlParams.get( 'page' );
if ( page === 'surerank' ) {
isOnDashboard = true;
}
} catch ( error ) {
// Do nothing
}
const searchConsoleData = select( STORE_NAME ).getSearchConsole();
if ( ! searchConsoleData.authenticated ) {
return;
}
const updatedData = {};
// Fetch selected site
const selectedSiteResponse = yield actions.fetchFromAPI(
'/surerank/v1/google-search-console/site'
);
if ( selectedSiteResponse.success ) {
updatedData.selectedSite = selectedSiteResponse.site;
if ( ! updatedData.selectedSite ) {
if ( isOnDashboard ) {
yield actions.toggleSiteSelectorModal();
}
}
}
// Fetch sites
const sitesResponse = yield actions.fetchFromAPI(
'/surerank/v1/google-search-console/sites'
);
if ( sitesResponse.success ) {
updatedData.sites = sitesResponse.siteEntry;
if ( ! updatedData.selectedSite ) {
// Check with the current site is already in the list
const matchedSite = sitesResponse?.siteEntry?.find( ( site ) =>
site?.siteUrl?.includes( window.location.host )
);
if ( matchedSite ) {
updatedData.tempSelectedSite = matchedSite?.siteUrl ?? '';
} else {
// Select the first site
updatedData.tempSelectedSite =
sitesResponse?.siteEntry?.[ 0 ]?.siteUrl ?? '';
}
}
}
return yield actions.setSearchConsole( updatedData );
},
};
export default resolvers;