From 163a88bcfd0c212af1afa3264de2fccf66382cd4 Mon Sep 17 00:00:00 2001 From: Tzahi12345 Date: Wed, 10 Jun 2020 21:41:05 -0400 Subject: [PATCH] DB implementation of subs now can properly delete subs --- backend/app.js | 4 +++- backend/subscriptions.js | 13 +++++++++---- backend/utils.js | 2 ++ src/app/player/player.component.ts | 5 +---- src/app/posts.services.ts | 5 +++-- .../subscription-file-card.component.ts | 4 ++-- 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/backend/app.js b/backend/app.js index 5578a95..f09c78d 100644 --- a/backend/app.js +++ b/backend/app.js @@ -2149,10 +2149,11 @@ app.post('/api/unsubscribe', optionalJwt, async (req, res) => { app.post('/api/deleteSubscriptionFile', optionalJwt, async (req, res) => { let deleteForever = req.body.deleteForever; let file = req.body.file; + let file_uid = req.body.file_uid; let sub = req.body.sub; let user_uid = req.isAuthenticated() ? req.user.uid : null; - let success = await subscriptions_api.deleteSubscriptionFile(sub, file, deleteForever, user_uid); + let success = await subscriptions_api.deleteSubscriptionFile(sub, file, deleteForever, file_uid, user_uid); if (success) { res.send({ @@ -2181,6 +2182,7 @@ app.post('/api/getSubscription', optionalJwt, async (req, res) => { if (subscription.name && !subscription.streamingOnly) { var parsed_files = subscription.videos; if (!parsed_files) { + parsed_files = []; let base_path = null; if (user_uid) base_path = path.join(config_api.getConfigItem('ytdl_users_base_path'), user_uid, 'subscriptions'); diff --git a/backend/subscriptions.js b/backend/subscriptions.js index 6e80c8b..780b5bb 100644 --- a/backend/subscriptions.js +++ b/backend/subscriptions.js @@ -60,7 +60,7 @@ async function subscribe(sub, user_uid = null) { let success = await getSubscriptionInfo(sub, user_uid); if (success) { - sub = sub_db.get().value(); + sub = sub_db.value(); getVideosForSub(sub, user_uid); } else { logger.error('Subscribe: Failed to get subscription info. Subscribe failed.') @@ -175,16 +175,21 @@ async function unsubscribe(sub, deleteMode, user_uid = null) { } -async function deleteSubscriptionFile(sub, file, deleteForever, user_uid = null) { +async function deleteSubscriptionFile(sub, file, deleteForever, file_uid = null, user_uid = null) { let basePath = null; - if (user_uid) + let sub_db = null; + if (user_uid) { basePath = path.join(config_api.getConfigItem('ytdl_users_base_path'), user_uid, 'subscriptions'); - else + sub_db = users_db.get('users').find({uid: user_uid}).get('subscriptions').find({id: sub.id}); + } else { basePath = config_api.getConfigItem('ytdl_subscriptions_base_path'); + sub_db = db.get('subscriptions').find({id: sub.id}); + } const useArchive = config_api.getConfigItem('ytdl_subscriptions_use_youtubedl_archive'); const appendedBasePath = getAppendedBasePath(sub, basePath); const name = file; let retrievedID = null; + sub_db.get('videos').remove({uid: file_uid}).write(); return new Promise(resolve => { let filePath = appendedBasePath; var jsonPath = path.join(__dirname,filePath,name+'.info.json'); diff --git a/backend/utils.js b/backend/utils.js index 4bef941..5a82c4f 100644 --- a/backend/utils.js +++ b/backend/utils.js @@ -2,6 +2,8 @@ var fs = require('fs-extra') var path = require('path') const config_api = require('./config'); +const is_windows = process.platform === 'win32'; + function getTrueFileName(unfixed_path, type) { let fixed_path = unfixed_path; diff --git a/src/app/player/player.component.ts b/src/app/player/player.component.ts index 9b0c316..82c22eb 100644 --- a/src/app/player/player.component.ts +++ b/src/app/player/player.component.ts @@ -127,7 +127,7 @@ export class PlayerComponent implements OnInit { this.currentItem = this.playlist[0]; this.currentIndex = 0; this.show_player = true; - } else if (this.type === 'subscription' || this.fileNames) { + } else if (this.subscriptionName || this.fileNames) { this.show_player = true; this.parseFileNames(); } @@ -181,9 +181,6 @@ export class PlayerComponent implements OnInit { fileType = 'audio/mp3'; } else if (this.type === 'video') { fileType = 'video/mp4'; - } else if (this.type === 'subscription') { - // only supports mp4 for now - fileType = 'video/mp4'; } else { // error console.error('Must have valid file type! Use \'audio\', \'video\', or \'subscription\'.'); diff --git a/src/app/posts.services.ts b/src/app/posts.services.ts index 85fcf03..1619016 100644 --- a/src/app/posts.services.ts +++ b/src/app/posts.services.ts @@ -289,8 +289,9 @@ export class PostsService implements CanActivate { return this.http.post(this.path + 'unsubscribe', {sub: sub, deleteMode: deleteMode}, this.httpOptions) } - deleteSubscriptionFile(sub, file, deleteForever) { - return this.http.post(this.path + 'deleteSubscriptionFile', {sub: sub, file: file, deleteForever: deleteForever}, this.httpOptions) + deleteSubscriptionFile(sub, file, deleteForever, file_uid) { + return this.http.post(this.path + 'deleteSubscriptionFile', {sub: sub, file: file, deleteForever: deleteForever, + file_uid: file_uid}, this.httpOptions) } getSubscription(id) { diff --git a/src/app/subscription/subscription-file-card/subscription-file-card.component.ts b/src/app/subscription/subscription-file-card/subscription-file-card.component.ts index 43f583c..12794e5 100644 --- a/src/app/subscription/subscription-file-card/subscription-file-card.component.ts +++ b/src/app/subscription/subscription-file-card/subscription-file-card.component.ts @@ -71,14 +71,14 @@ export class SubscriptionFileCardComponent implements OnInit { } deleteAndRedownload() { - this.postsService.deleteSubscriptionFile(this.sub, this.file.id, false).subscribe(res => { + this.postsService.deleteSubscriptionFile(this.sub, this.file.id, false, this.file.uid).subscribe(res => { this.reloadSubscription.emit(true); this.openSnackBar(`Successfully deleted file: '${this.file.id}'`, 'Dismiss.'); }); } deleteForever() { - this.postsService.deleteSubscriptionFile(this.sub, this.file.id, true).subscribe(res => { + this.postsService.deleteSubscriptionFile(this.sub, this.file.id, true, this.file.uid).subscribe(res => { this.reloadSubscription.emit(true); this.openSnackBar(`Successfully deleted file: '${this.file.id}'`, 'Dismiss.'); });