Basit Anlatım (Herkes İçin)
Ne yapıyoruz? Muzibu component'lerini temizleyeceğiz. Bazı dosyalar kopyalanmış (duplicate), bazıları hiç kullanılmıyor. Bunları tespit edip temizleyeceğiz.
Duplicate ne demek? Aynı dosyanın iki farklı yerde olması. Mesela lazy-image component'i hem resources/ hem de Modules/ klasöründe var. Bu karışıklık yaratır, hangi dosyayı güncelleyeceğimizi bilemeyiz.
Ne olacak? Her component'i tek tek kontrol edeceğiz. Duplicate olanların hangisinin yeni olduğunu belirleyip eskilerini sileceğiz. Kullanılmayanları da kaldıracağız. Sonunda temiz, bakımı kolay bir component sistemi kalacak.
Neden Önemli?
Duplicate dosyalar bug'a neden olur. Birini güncellersiniz ama sistem diğerini kullanır. Kullanılmayan dosyalar yer kaplar, projeyi karmaşıklaştırır. Temiz kod = hızlı geliştirme!
Duplicate Component'ler - Fark Analizi
lazy-image ✅ TAMAMEN AYNI
İki farklı konumda mevcut, ancak içerik tamamen aynı
📁 Konum 1 (resources/)
resources/views/components/muzibu/lazy-image.blade.php
Son değişiklik: Context menu overhaul öncesi
📁 Konum 2 (Modules/)
Modules/Muzibu/resources/views/components/muzibu/lazy-image.blade.php
Son değişiklik: Context menu overhaul öncesi
Fark Analizi
İki dosya BYTE-BYTE AYNI. Hiçbir fark yok.
Öneri: resources/ versiyonunu kullan (ana component klasörü). Modules/ versiyonunu sil.
song-detail-row ⚠️ FARKLILAR
İki farklı konumda mevcut, içerik farklı (context menu cleanup)
📁 Konum 1 - ESKİ VERSİYON (resources/)
resources/views/components/muzibu/song-detail-row.blade.php
Son değişiklik: Context menu overhaul ÖNCESÏ
- artist_id ❌ (ESKİ - kaldırıldı)
- artist_slug ❌ (ESKİ - kaldırıldı)
📁 Konum 2 - YENİ VERSİYON (Modules/)
Modules/Muzibu/resources/views/components/muzibu/song-detail-row.blade.php
Son değişiklik: Context menu overhaul SONRASI
- is_favorite ✅ (gerekli)
- artist_id/slug YOK ✅ (temizlendi)
Detaylı Farklar
🔴 ESKİ (resources/) - Satır 12-16
album_id: {{ isset($contextData['album_id']) ? $contextData['album_id'] : ($song->album ? $song->album->id : 'null') }},
album_slug: '{{ $song->album?->slug ?? '' }}',
artist_id: {{ $song->artist?->artist_id ?? ($song->album?->artist?->artist_id ?? 'null') }},
artist_slug: '{{ $song->artist?->slug ?? ($song->album?->artist?->slug ?? '') }}',
is_favorite: {{ auth()->check() && method_exists($song, 'isFavoritedBy') && $song->isFavoritedBy(auth()->id()) ? 'true' : 'false' }}
🟢 YENİ (Modules/) - Satır 12-13
album_id: {{ isset($contextData['album_id']) ? $contextData['album_id'] : ($song->album ? $song->album->id : 'null') }},
is_favorite: {{ auth()->check() && method_exists($song, 'isFavoritedBy') && $song->isFavoritedBy(auth()->id()) ? 'true' : 'false' }}
album_slug, artist_id, artist_slug KALDIRILDI (context menu overhaul sonrası)
🔴 ESKİ - Touchstart event (Satır 33-37)
album_id: {{ isset($contextData['album_id']) ? $contextData['album_id'] : ($song->album ? $song->album->id : 'null') }},
album_slug: '{{ $song->album?->slug ?? '' }}',
artist_id: {{ $song->artist?->artist_id ?? ($song->album?->artist?->artist_id ?? 'null') }},
artist_slug: '{{ $song->artist?->slug ?? ($song->album?->artist?->slug ?? '') }}',
is_favorite: ...
🟢 YENİ - Touchstart event (Satır 30-31)
album_id: {{ isset($contextData['album_id']) ? $contextData['album_id'] : ($song->album ? $song->album->id : 'null') }},
is_favorite: ...
Touchstart event'te de temizlenmiş
Her İki Versiyonda da - 3-Dot Menu (Satır 124/118)
album_id: {{ isset($contextData['album_id']) ? $contextData['album_id'] : ($song->album ? $song->album->id : 'null') }},
is_favorite: ...
3-dot menu her ikisinde de temiz (album_id ve is_favorite var, diğerleri yok)
Öneri: Modules/ versiyonunu (YENİ) kullan. Context menu overhaul sonrası güncellenmiş, gereksiz veriler temizlenmiş (artist_id, artist_slug, album_slug kaldırılmış).
resources/ versiyonu ESKİ ve KİRLİ. Silme adayı.
Kullanım Kontrolü Gerekli
song-detail-row 13 yerde kullanılıyor. Hangi versiyon çağrıldığını kontrol etmeliyiz:
- Laravel component resolution priority: Modules/ klasörü önce kontrol ediliyor mu?
- Her kullanım yerinde <x-muzibu.song-detail-row> aynı dosyayı mı çağırıyor?
- Test: Modules/ versiyonunu değiştir, site bozulur mu?
Silme Adayları (Kullanılmayan Component'ler)
artist-card
resources/views/components/muzibu/artist-card.blade.php
Kullanım sayısı: 2
Sadece kendi dosyasında usage comment var. Aktif kullanım yok.
Dikkat: Silmeden önce grep ile tekrar kontrol et!
empty-state
resources/views/components/muzibu/empty-state.blade.php
Kullanım sayısı: 4
Sadece kendi dosyasında usage comment var. Aktif kullanım yok.
Dikkat: Silmeden önce grep ile tekrar kontrol et!
Kapsamlı TODO List (18 Görev)
Phase 1: Duplicate Component Temizleme (4 görev)
Hangi song-detail-row kullanılıyor kontrol et
Laravel component resolution priority'yi test et. Modules/ öncelikli mi?
# Test: Modules/ versiyonuna console.log ekle, çağrılıyor mu bak
lazy-image duplicate'ini sil (Modules/ versiyonunu)
İkisi tamamen aynı. Ana component klasörünü (resources/) kullan.
sudo rm Modules/Muzibu/resources/views/components/muzibu/lazy-image.blade.php
song-detail-row duplicate'ini sil (resources/ ESKİ versiyonunu)
Modules/ versiyonu YENİ ve TEMİZ (context menu overhaul sonrası). resources/ ESKİ ve KİRLİ.
sudo rm resources/views/components/muzibu/song-detail-row.blade.php
Duplicate temizlendikten sonra site testi
Albüm, playlist, genre detay sayfalarını aç. Şarkı listesi görünüyor mu?
- https://muzibu.com/albums/[herhangi-bir-album]
- https://muzibu.com/playlists/[herhangi-bir-playlist]
- https://muzibu.com/genres/[herhangi-bir-genre]
- Console'da hata var mı kontrol et
Phase 2: Kullanılmayan Component'leri Sil (4 görev)
artist-card kullanımını doğrula
Grep ile tüm proje taraması yap. Gerçekten kullanılmıyor mu?
grep -r "x-muzibu.artist-card" resources/ Modules/ --include="*.blade.php"
artist-card'ı sil (kullanılmıyorsa)
sudo rm resources/views/components/muzibu/artist-card.blade.php
empty-state kullanımını doğrula
grep -r "x-muzibu.empty-state" resources/ Modules/ --include="*.blade.php"
empty-state'i sil (kullanılmıyorsa)
sudo rm resources/views/components/muzibu/empty-state.blade.php
Phase 3: Tüm Component'lerin Testi (10 görev)
album-card testi
- Click: Desktop'ta sidebar preview açılıyor mu?
- Click: Mobilde detay sayfasına gidiyor mu?
- Context menu: Sağ tık çalışıyor mu?
- Context menu: "Playliste Ekle" var mı? (yeni)
- Context menu: "Sanatçıya Git" YOK mu? (kaldırıldı)
- Hover: Önizleme animasyonu çalışıyor mu?
- Favorilere ekleme/çıkarma çalışıyor mu?
playlist-card testi
- Click: Desktop preview, mobile detail page
- Context menu çalışıyor mu?
- Favorilere ekleme çalışıyor mu?
radio-card testi
- Click: Direkt çalıyor mu? (preview YOK)
- Context menu: "Sıraya Ekle" YOK mu? (kaldırıldı)
- Context menu: Sadece "Şimdi Dinle" ve "Favori" var mı?
genre-card / sector-card testi
- Click çalışıyor mu?
- Görsel yükleniyor mu?
- Responsive tasarım çalışıyor mu?
song-detail-row testi (13 kullanım yeri)
- Album detay: Şarkı listesi görünüyor mu?
- Playlist detay: Şarkı listesi görünüyor mu?
- Genre detay: Şarkı listesi görünüyor mu?
- Context menu: artist_id/artist_slug YOK mu? (temizlendi)
- Hover: Play button görünüyor mu?
- Click: Şarkı çalıyor mu?
- Favorilere ekleme çalışıyor mu?
- 3-dot menu çalışıyor mu?
- Touch/long-press (mobile) çalışıyor mu?
song-list-item testi
- Dashboard: Son çalınanlar görünüyor mu?
- Favoriler: Şarkı listesi çalışıyor mu?
- Sidebar: Queue listesi görünüyor mu?
song-row testi
- Songs index: Tablo görünümü çalışıyor mu?
- Artist detay: Şarkı listesi görünüyor mu?
- Dinleme geçmişi: Listesi çalışıyor mu?
lazy-image testi
- Skeleton loader görünüyor mu?
- Görsel yüklenince animasyon çalışıyor mu?
- Fallback icon (fa-music) çalışıyor mu?
create-playlist-modal testi
- Modal açılıyor mu?
- Playlist oluşturma çalışıyor mu?
- Muzebu store entegrasyonu çalışıyor mu?
Console error kontrolü
- Tüm sayfalarda F12 → Console aç
- Kırmızı hata var mı kontrol et
- 404 Not Found var mı bak
- JavaScript hataları var mı kontrol et
Teknik Detaylar (Geliştiriciler İçin)
Laravel Component Resolution:
- Laravel önce
resources/views/components/klasörünü kontrol eder - Sonra modül klasörlerini tarar:
Modules/*/resources/views/components/ - İlk bulduğu dosyayı kullanır (priority: resources/ > Modules/)
- Ancak namespace prefix kullanılırsa (örn:
muzibu::components.song-detail-row) modül içindeki dosyayı çağırır
Duplicate Temizleme Stratejisi:
- lazy-image: resources/ versiyonunu kullan (ana klasör), Modules/ versiyonunu sil
- song-detail-row: Modules/ versiyonunu kullan (yeni, temiz), resources/ versiyonunu sil
- Silmeden önce mutlaka test et!
Risk Değerlendirmesi
song-detail-row 13 yerde kullanılıyor. Yanlış dosyayı silersek tüm detay sayfaları bozulur. Mutlaka staging/dev ortamda test et, sonra production'a geç!
Özet ve Sonraki Adımlar
✅ Yapılacaklar (Sıralı)
- Hangi song-detail-row kullanıldığını test et
- lazy-image duplicate'ini sil (Modules/)
- song-detail-row duplicate'ini sil (resources/)
- Site test et (şarkı listeleri çalışıyor mu?)
- artist-card ve empty-state kullanımını doğrula
- Kullanılmıyorlarsa sil
- Tüm component'leri tek tek test et (18 adım)
- Console error kontrolü
- Cache temizle, production build
📊 Beklenen Sonuç
- Duplicate component'ler temizlenecek (2 dosya silinecek)
- Kullanılmayan component'ler kaldırılacak (artist-card, empty-state)
- Tüm component'ler test edilecek, bug'lar tespit edilecek
- Temiz, bakımı kolay component sistemi kalacak
⚠️ Dikkat Edilecek Noktalar
- song-detail-row silme işlemi RİSKLİ! (13 kullanım yeri)
- Önce staging'de test et, sonra production'a geç
- Backup al! (dosyaları silmeden önce)
- Context menu overhaul sonrası temizlenen datalar geri gelmesin