mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 17:06:15 -08:00
* perf(playlist): make the playlist import and shared UI components OnPush Plan item C6 step 3 for libs/playlist (import/feature and shared/ui): the twelve Eager components switch to OnPush. Two of them rendered plain fields written after an await, outside any template event, which only an Eager check on the next zone tick picked up: - playlist-item's portal status dot (PWA, after the async portal check) now reads a signal; - playlist-info's playlist is backed by a signal behind its existing getter/setter name, so the EPG source list follows removals and file picks that land after awaited cleanup and dialogs. A regression test for each fails on OnPush with the plain field and passes with the signal. The Stalker import's post-await patchValue needs no change (see the zoneless checklist). The m3u feature-player components stay Eager for the playback PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(playlist): check the OnPush dialogs without forcing a render Review follow-ups (Greptile, Codex): - The portal-status and EPG-row tests forced detectChanges() after their await, so they passed with plain fields. They now let the fixture render on its own; with portalStatus back on a plain field the status test fails. - New: the playlist info dialog enables Save and shows the path after a native EPG file pick, without a forced render. pristine and valid read the form's state signals, so the OnPush dialog follows on its own. - New render spec for the add-playlist dialog with the real URL form: Add enables after typing and after a patch from outside the child (as an auto-detect prefill does). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: 4gray <fourgray@proton.me> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>