Load tool views on demand with isolated retry states

This commit is contained in:
2026-09-06 10:41:50 +03:00
parent 1a62a876e6
commit fef6f2ab89
4 changed files with 63 additions and 39 deletions
+26 -39
View File
@@ -8,36 +8,41 @@ import { SummaryCards } from './components/SummaryCards';
import { LeftSidebar } from './components/LeftSidebar';
import { TenderList } from './components/TenderList';
import { RightSidebar } from './components/RightSidebar';
import { SmartFilterBuilder } from './components/SmartFilterBuilder';
import { DetailedSearchModal } from './components/DetailedSearchModal';
import { TenderDetailModal } from './components/TenderDetailModal';
import { CompanyScannerModal } from './components/CompanyScannerModal';
import { AiSpecAnalyzerModal } from './components/AiSpecAnalyzerModal';
import { UrunAramaModal } from './components/UrunAramaModal';
import { KanbanBoard } from './components/KanbanBoard';
import { DailyBulletin } from './components/tools/DailyBulletin';
import { ResultSearch } from './components/tools/ResultSearch';
import { TenderCalendar } from './components/tools/TenderCalendar';
import { ContractSearch } from './components/tools/ContractSearch';
import { VatCalculator } from './components/tools/VatCalculator';
import { SinirDeger } from './components/tools/SinirDeger';
import { KullanimKilavuzu } from './components/KullanimKilavuzu';
import { MobilFiltreCekmecesi } from './components/MobilFiltreCekmecesi';
import { PriceAnalysis } from './components/tools/PriceAnalysis';
import { CompetitorRadar } from './components/tools/CompetitorRadar';
import { DocumentVault } from './components/tools/DocumentVault';
import { AnalyticsDashboard } from './components/tools/AnalyticsDashboard';
import { RedFlags } from './components/tools/RedFlags';
import { TedTenders } from './components/tools/TedTenders';
import { Pricing } from './components/tools/Pricing';
import { KikDecisions } from './components/tools/KikDecisions';
import { ApiWebhooks } from './components/tools/ApiWebhooks';
import { PwaSettings } from './components/tools/PwaSettings';
import { AiModelSettings } from './components/tools/AiModelSettings';
import { LoginPage } from './components/LoginPage';
import { LandingPage } from './components/LandingPage';
import { DeferredView } from './components/DeferredView';
const toolViews = {
smart_filter_builder: () => import('./components/SmartFilterBuilder').then(module => ({ default: module.SmartFilterBuilder })),
bulten: () => import('./components/tools/DailyBulletin').then(module => ({ default: module.DailyBulletin })),
sonuc: () => import('./components/tools/ResultSearch').then(module => ({ default: module.ResultSearch })),
takvim: () => import('./components/tools/TenderCalendar').then(module => ({ default: module.TenderCalendar })),
sozlesme: () => import('./components/tools/ContractSearch').then(module => ({ default: module.ContractSearch })),
kdv: () => import('./components/tools/VatCalculator').then(module => ({ default: module.VatCalculator })),
sinir: () => import('./components/tools/SinirDeger').then(module => ({ default: module.SinirDeger })),
fiyat: () => import('./components/tools/PriceAnalysis').then(module => ({ default: module.PriceAnalysis })),
kanban: () => import('./components/KanbanBoard').then(module => ({ default: module.KanbanBoard })),
rakip_radar: () => import('./components/tools/CompetitorRadar').then(module => ({ default: module.CompetitorRadar })),
dokuman_deposu: () => import('./components/tools/DocumentVault').then(module => ({ default: module.DocumentVault })),
analitik_dashboard: () => import('./components/tools/AnalyticsDashboard').then(module => ({ default: module.AnalyticsDashboard })),
kirmizi_bayrak: () => import('./components/tools/RedFlags').then(module => ({ default: module.RedFlags })),
ted_eu: () => import('./components/tools/TedTenders').then(module => ({ default: module.TedTenders })),
kik_kararlari: () => import('./components/tools/KikDecisions').then(module => ({ default: module.KikDecisions })),
planlar: () => import('./components/tools/Pricing').then(module => ({ default: module.Pricing })),
api_webhooks: () => import('./components/tools/ApiWebhooks').then(module => ({ default: module.ApiWebhooks })),
pwa_settings: () => import('./components/tools/PwaSettings').then(module => ({ default: module.PwaSettings })),
ai_ayarlari: () => import('./components/tools/AiModelSettings').then(module => ({ default: module.AiModelSettings })),
};
const MainContent = () => {
const { activeTab, isAdmin, saveError, savingCount } = useApp();
@@ -62,26 +67,8 @@ const MainContent = () => {
</>
)}
{/* Dedicated Tool Views */}
{activeTab === 'smart_filter_builder' && <SmartFilterBuilder />}
{activeTab === 'bulten' && <DailyBulletin />}
{activeTab === 'sonuc' && <ResultSearch />}
{activeTab === 'takvim' && <TenderCalendar />}
{activeTab === 'sozlesme' && <ContractSearch />}
{activeTab === 'kdv' && <VatCalculator />}
{activeTab === 'sinir' && <SinirDeger />}
{activeTab === 'fiyat' && <PriceAnalysis />}
{activeTab === 'kanban' && <KanbanBoard />}
{activeTab === 'rakip_radar' && <CompetitorRadar />}
{activeTab === 'dokuman_deposu' && <DocumentVault />}
{activeTab === 'analitik_dashboard' && <AnalyticsDashboard />}
{activeTab === 'kirmizi_bayrak' && <RedFlags />}
{activeTab === 'ted_eu' && <TedTenders />}
{activeTab === 'kik_kararlari' && <KikDecisions />}
{activeTab === 'planlar' && <Pricing />}
{activeTab === 'api_webhooks' && <ApiWebhooks />}
{activeTab === 'pwa_settings' && <PwaSettings />}
{activeTab === 'ai_ayarlari' && isAdmin && <AiModelSettings />}
{toolViews[activeTab] && (activeTab !== 'ai_ayarlari' || isAdmin) &&
<DeferredView key={activeTab} load={toolViews[activeTab]} />}
{/* Global Modals */}
<DetailedSearchModal />