Site-imp1
This commit is contained in:
@@ -5,13 +5,15 @@
|
||||
*/
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { PlusIcon, EditIcon, SettingsIcon, EyeIcon, TrashIcon, FilterIcon, SearchIcon } from 'lucide-react';
|
||||
import { PlusIcon, EditIcon, SettingsIcon, EyeIcon, TrashIcon, FilterIcon, SearchIcon, PlugIcon } from 'lucide-react';
|
||||
import PageMeta from '../../components/common/PageMeta';
|
||||
import { Card } from '../../components/ui/card';
|
||||
import Button from '../../components/ui/button/Button';
|
||||
import SelectDropdown from '../../components/form/SelectDropdown';
|
||||
import { useToast } from '../../components/ui/toast/ToastContainer';
|
||||
import { fetchAPI } from '../../services/api';
|
||||
import SiteTypeBadge from '../../components/sites/SiteTypeBadge';
|
||||
import Badge from '../../components/ui/badge/Badge';
|
||||
|
||||
interface Site {
|
||||
id: number;
|
||||
@@ -25,6 +27,7 @@ interface Site {
|
||||
updated_at: string;
|
||||
page_count?: number;
|
||||
integration_count?: number;
|
||||
has_wordpress_integration?: boolean;
|
||||
}
|
||||
|
||||
export default function SiteList() {
|
||||
@@ -54,7 +57,24 @@ export default function SiteList() {
|
||||
setLoading(true);
|
||||
const data = await fetchAPI('/v1/auth/sites/');
|
||||
if (data && Array.isArray(data)) {
|
||||
setSites(data);
|
||||
// Check for WordPress integrations
|
||||
const sitesWithIntegrations = await Promise.all(
|
||||
data.map(async (site: Site) => {
|
||||
if (site.hosting_type === 'wordpress') {
|
||||
try {
|
||||
const integrations = await fetchAPI(`/v1/integration/integrations/?site=${site.id}&platform=wordpress`);
|
||||
return {
|
||||
...site,
|
||||
has_wordpress_integration: integrations?.results?.length > 0 || integrations?.length > 0,
|
||||
};
|
||||
} catch {
|
||||
return { ...site, has_wordpress_integration: false };
|
||||
}
|
||||
}
|
||||
return site;
|
||||
})
|
||||
);
|
||||
setSites(sitesWithIntegrations);
|
||||
}
|
||||
} catch (error: any) {
|
||||
toast.error(`Failed to load sites: ${error.message}`);
|
||||
@@ -107,7 +127,11 @@ export default function SiteList() {
|
||||
};
|
||||
|
||||
const handleCreateSite = () => {
|
||||
navigate('/site-builder');
|
||||
navigate('/sites/builder');
|
||||
};
|
||||
|
||||
const handleIntegration = (siteId: number) => {
|
||||
navigate(`/sites/${siteId}/settings?tab=integrations`);
|
||||
};
|
||||
|
||||
const handleEdit = (siteId: number) => {
|
||||
|
||||
Reference in New Issue
Block a user