Commit Graph
16 Commits
Author SHA1 Message Date
4gray 7ee2cc4eea feat(db): add API to delete all playlists and related rows
Add a new IPC handler_DELETE_ALL_PLAYLIST that removes all
and related data from the SQLite database in a safe order that respects
foreign key relationships. The handler deletes favorites and recently
viewed entries first, then content, categories, and finally playlists.
Errors are logged and propagated.

Expose the new operation in the renderer preload API as
dbDeleteAllPlaylists() to allow UI code to invoke the purge. This
provides a single-call way to clear playlists and their dependent
records for testing or user-driven reset.
2025-12-06 14:46:37 +01:00
4gray a48f7d60be feat(electron-backend): add lightweight HTTP server for remote UI
Add a new HttpServer class that serves the built remote-control-web
static assets and provides a simple REST/API routing layer for remote
control endpoints.

Key changes:
- Implement server lifecycle: start, stop, updateSettings with port and
  enabled handling.
- Resolve distribution path depending on electron packaging (dev vs
  production).
- Serve static files with basic security (normalize path to prevent
  traversal) and SPA fallback to index.html for client-side routing.
- Provide registration API for remote control handlers mapped to
  /api/remote-control/* endpoints.
- Log server status and listening URL on start, and on stop.

These changes enable the Electron backend to host the remote control
web app and route API calls without external web servers, simplifying
development and packaging.
2025-11-22 11:26:22 +01:00
4gray 730200f704 feat(xtream): preserve user Xtream data during refresh
Save and restore favorited and recently viewed Xtream items when
deleting and re-importing playlist content.

- Return favoritedXtreamIds and recentlyViewedXtreamIds from
  deleteXtreamPlaylistContent so callers can capture user data before
 .
- Add restoreXtreamUserData to the database service to allow restoring
  favorites and recently viewed entries after a refresh.
- Query and collect xtreamIds and timestamps for favorites and recently
  viewed items in the backend before deleting content.
- Persist the captured user data to localStorage in the recent playlists
  component so it can be used to restore state after re-importing the
  playlist.
- Keep existing playlist metadata update flow intact.

This prevents loss of user-specific favorites and recent history when
refreshing Xtream playlists.
2025-11-13 19:26:37 +01:00
4gray d2b076f1fe feat: auto-update playlists on startup
Add automatic playlist refresh on application startup by listening
for successful playlist load and dispatching an IPC event for any
playlists with autoRefresh enabled.

- Inject Actions into AppComponent and add triggerAutoUpdatePlaylists
  that waits for PlaylistActions.loadPlaylistsSuccess, selects
  selectAllPlaylistsMeta from the store, filters playlists with
  autoRefresh, and sends AUTO_UPDATE_PLAYLISTS via DataService.
- Call triggerAutoUpdatePlaylists from ngOnInit and remove a now-
  unused commented commands list.
- Add helper functions in backend playlist events to fetch and parse
  playlists from URL or file, consolidating parsing logic and creating
  playlist objects.

This implements the previously noted TODO to trigger playlist auto-
refresh and centralizes playlist fetching/parsing for reuse and
clarity.
2025-11-11 08:25:02 +01:00
4gray 588664c3aa refactor(player): remove unused player path args 2025-11-08 23:02:15 +01:00
4gray 656c86dc30 refactor: rework ipc events handling 2025-11-08 23:02:15 +01:00
4gray ccbb08cfb4 fix(ui): correct imports, guard checks, logging and settings handling 2025-10-27 08:20:29 +01:00
4gray 8e5a643fac feat(epg): worker-based EPG handlers and fetch logic 2025-10-23 21:53:51 +02:00
4gray 0a934d2ac6 refactor(electron): migrate from tauri/plugin-sql to libsql 2025-10-18 21:31:29 +02:00
4gray d9cbb1ce87 refactor(player,epg): add MPV reuse, IPC commands, and EPG handlers
Introduce MPV process reuse and IPC control, and add basic EPG IPC
handlers.

- Add GET_CHANNEL_PROGRAMS and FETCH_EPG ipc handlers to epg.events.ts
  to expose fetching EPG data by channel or URLs.
- Rework player.events.ts:
  - Export proper bootstrap and add module-level mpvProcess and
    mpvSocketPath to track a reusable MPV instance.
  - Add sendMpvCommand helper to communicate with MPV via its IPC socket.
  - Implement OPEN_MPV_PLAYER handler that:
    - Reads MPV path and MPV_REUSE_INSTANCE setting from store.
    - Attempts to reuse an existing MPV process by sending loadfile
      command over the socket when reuse is enabled.
    - Falls back to spawning a new mpv process, creating a unique IPC
      socket path, and storing the process/socket when reuse is enabled.
    - Adds error and exit handlers to clear stored references.
  - Add necessary imports (ChildProcess, existsSync, createConnection).
  - Remove/comment unused import block for shared-interfaces and adapt
    existing code to the new flow.

Why:
- Enable reusing a single MPV instance to improve resource usage and
  provide faster playback switching.
- Add IPC endpoints for EPG to support frontend requests for program
  data.
2025-10-18 11:53:57 +02:00
4gray b61530f279 feat(preloadtauri): add external player IPC and playlist auto-update
MPV/VLC launch and playlist auto-update from the Electron preload
and migrate Tauri invoke calls to use the exposed window.electron API.

- Add openInMpv, openInVlc and autoUpdatePlaylists to the preload API,
  forwarding parameters to ipcRenderer for native handling.
- Replace tauri invoke('open_in_mpv') and invoke('open_in_vlc') calls
  with window.electron.openInMpv / openInVlc in tauri.service to use the
  unified Electron IPC surface.
- Replace file-based AUTO_UPDATE_PLAYLISTS handling with a call to
  window.electron.autoUpdatePlaylists and remove legacy file parsing
  code (now commented) so the main process owns playlist refresh logic.
- Import shared AUTO_UPDATE_PLAYLISTS/Playlist types into preload.

This centralizes native player launching and playlist updates through the
preload IPC bridge, simplifying web service code and moving file I/O to
the native/main layer for better security and separation of concerns.
2025-10-15 23:31:08 +02:00
4gray 7487738a7d refactor(nx): remove packages, fix build issues 2025-10-14 23:44:33 +02:00
4gray 2d4fdcfc1b refactor(nx): add restructuring 2025-10-13 01:33:50 +02:00
4gray 7028ff4049 refactor(nx): app restructuring 2025-10-13 00:24:54 +02:00
4gray 920afa6850 refactor(nx): created shared and m3u-utils library 2025-10-10 11:49:35 +02:00
4gray 99ed5df404 chore: back to electron + nx 2025-10-07 18:02:13 +02:00