import { useEffect } from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import { useQueryClient } from '@tanstack/react-query';
import { Lock } from 'lucide-react';
import { isParticleDeleted, type Particle } from '@/api/types';
import { useLiveParticle } from '@/hooks/use-particle';
import { particlePath, type ParticlePath } from '@/lib/particle-path';
import { Button } from '@/components/ui/button';
import Layout from '@/features/layout';
import { StreamView } from '@/features/particles/stream-view';
import { FolderView } from '@/features/particles/folder-view';
import { MediaParticleView } from '@/features/particles/media-particle-view';
import { TextParticleView } from '@/features/particles/text-particle-view';
import { TaskParticleView } from '@/features/particles/task-particle-view';
import { FallbackParticleView } from '@/features/particles/fallback-particle-view';
import { DeletedParticleView } from '@/features/particles/deleted-particle-view';
/**
* Route-level component for /:networkId/*.
* Reads params from the router, resolves the particle, and renders
* the appropriate view based on particle type.
*/
export default function ParticleViewResolver() {
const { networkId, '*': rest } = useParams();
if (!networkId)
throw new Error('ParticleViewResolver requires a :networkId route param');
const segments = (rest ?? '').split('/').filter(Boolean);
const path = particlePath(networkId, segments); // path of current container particle
const { particle, isLoading, error } = useLiveParticle(path);
if (isLoading) {
return (
Loading...
This particle isn't available
It may have been deleted, or your access was removed.