From 320b716664afeefd929c99ed7bc6251b1144683a Mon Sep 17 00:00:00 2001 From: antebrl Date: Wed, 22 Jan 2025 23:19:18 +0000 Subject: [PATCH] feat: add clear channels api endpoint --- backend/controllers/ChannelController.js | 5 +++++ backend/server.js | 1 + backend/services/ChannelService.js | 6 ++++++ backend/services/ChannelStorage.js | 10 ++++++++++ backend/services/PlaylistService.js | 3 +++ backend/services/PlaylistUpdater.js | 1 + backend/socket/ChannelSocketHandler.js | 1 + 7 files changed, 27 insertions(+) diff --git a/backend/controllers/ChannelController.js b/backend/controllers/ChannelController.js index 9e1629f..e9969d0 100644 --- a/backend/controllers/ChannelController.js +++ b/backend/controllers/ChannelController.js @@ -53,4 +53,9 @@ module.exports = { res.status(500).json({ error: error.message }); } }, + + clearChannels(req, res) { + ChannelService.clearChannels(); + res.status(204).send(); + } }; \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index eba949e..0f118e4 100644 --- a/backend/server.js +++ b/backend/server.js @@ -21,6 +21,7 @@ app.use(express.json()); const apiRouter = express.Router(); apiRouter.get('/', channelController.getChannels); apiRouter.get('/current', channelController.getCurrentChannel); +apiRouter.delete('/clear', channelController.clearChannels); apiRouter.get('/playlist', centralChannelController.playlist); apiRouter.get('/:channelId', channelController.getChannel); apiRouter.delete('/:channelId', channelController.deleteChannel); diff --git a/backend/services/ChannelService.js b/backend/services/ChannelService.js index 3a45e1a..f49b2e3 100644 --- a/backend/services/ChannelService.js +++ b/backend/services/ChannelService.js @@ -10,6 +10,12 @@ class ChannelService { this.currentChannel = this.channels[0]; } + clearChannels() { + ChannelStorage.clear(); + this.channels = ChannelStorage.load(); + this.currentChannel = this.channels[0]; + } + getChannels() { return this.channels; } diff --git a/backend/services/ChannelStorage.js b/backend/services/ChannelStorage.js index a2f0065..9fb1ef3 100644 --- a/backend/services/ChannelStorage.js +++ b/backend/services/ChannelStorage.js @@ -1,6 +1,7 @@ const fs = require('fs'); const path = require('path'); const Channel = require('../models/Channel'); +const { clear } = require('console'); const storageFilePath = path.resolve('/channels/channels.json'); @@ -55,5 +56,14 @@ module.exports = { } catch (err) { console.error('Error saving data to storage:', err); } + }, + + clear() { + try { + fs.unlinkSync(storageFilePath); + console.log('Data cleared successfully.'); + } catch (err) { + console.error('Error clearing data from storage:', err); + } } } \ No newline at end of file diff --git a/backend/services/PlaylistService.js b/backend/services/PlaylistService.js index 938eef0..9a54974 100644 --- a/backend/services/PlaylistService.js +++ b/backend/services/PlaylistService.js @@ -27,6 +27,9 @@ class PlaylistService { } } else { content = playlist; + const fs = require('fs'); + fs.writeFileSync(`/channels/${playlistName}.txt`, playlist, { encoding: 'utf-8' }, (err) => err && console.error(err)); + console.log('Adding playlist to playlist.m3u8'); } const parsedPlaylist = m3uParser.parse(content); diff --git a/backend/services/PlaylistUpdater.js b/backend/services/PlaylistUpdater.js index cd5a98e..6877d2b 100644 --- a/backend/services/PlaylistUpdater.js +++ b/backend/services/PlaylistUpdater.js @@ -56,6 +56,7 @@ class PlaylistUpdater { try { // Fetch and renew playlist await PlaylistService.deletePlaylist(playlist.playlist); + console.log('Adding playlist with playlistUpdate:', playlist.playlistUpdate); await PlaylistService.addPlaylist( playlist.playlist, playlist.playlistName, diff --git a/backend/socket/ChannelSocketHandler.js b/backend/socket/ChannelSocketHandler.js index e11d59a..0627d7b 100644 --- a/backend/socket/ChannelSocketHandler.js +++ b/backend/socket/ChannelSocketHandler.js @@ -4,6 +4,7 @@ module.exports = (io, socket) => { socket.on('add-channel', ({ name, url, avatar, mode, headersJson }) => { try { + console.log('Adding solo channel:', url); const newChannel = ChannelService.addChannel({ name: name, url: url, avatar: avatar, mode: mode, headersJson: headersJson }); io.emit('channel-added', newChannel); // Broadcast to all clients } catch (err) {