import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider' import { useNostr } from '@/providers/NostrProvider' import { closestCenter, DndContext, DragEndEvent, KeyboardSensor, PointerSensor, useSensor, useSensors } from '@dnd-kit/core' import { restrictToParentElement, restrictToVerticalAxis } from '@dnd-kit/modifiers' import { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy } from '@dnd-kit/sortable' import { ensureTrendingInFavoriteRelayList } from '@/lib/wisp-trending-relay' import { useMemo } from 'react' import { useTranslation } from 'react-i18next' import RelayItem from './RelayItem' export default function FavoriteRelayList() { const { t } = useTranslation() const { pubkey } = useNostr() const { favoriteRelays, blockedRelays, reorderFavoriteRelays, favoriteRelaysFromPublishedList } = useFavoriteRelays() const displayRelays = useMemo( () => ensureTrendingInFavoriteRelayList(favoriteRelays), [favoriteRelays] ) const sensors = useSensors( useSensor(PointerSensor), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }) ) const handleDragEnd = (event: DragEndEvent) => { const { active, over } = event if (over && active.id !== over.id) { const oldIndex = favoriteRelays.findIndex((relay) => relay === active.id) const newIndex = favoriteRelays.findIndex((relay) => relay === over.id) const reorderedRelays = arrayMove(favoriteRelays, oldIndex, newIndex) reorderFavoriteRelays(reorderedRelays) } } return (
{t('favoriteRelaysDefaultsBanner', { defaultValue: 'No favorite-relays list (kind 10012) is loaded for this account yet. The relays below are app defaults and local relay sets, not a published list from your relays.' })}
)}