Started work on implementing user playlists
This commit is contained in:
parent
e629c63b2c
commit
aefc2dc1bd
7 changed files with 228 additions and 33 deletions
|
|
@ -556,7 +556,6 @@ channelSchema.methods.getPlaylists = function(){
|
|||
const playlists = [];
|
||||
|
||||
//For each channel emote
|
||||
//this.media.playlists.forEach((playlist) => {
|
||||
for(let playlist of this.media.playlists){
|
||||
//Push an object with select information from the emote to the emote list
|
||||
playlists.push(playlist.dehydrate());
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ const flairModel = require('../flairSchema');
|
|||
const permissionModel = require('../permissionSchema');
|
||||
const emoteModel = require('../emoteSchema');
|
||||
const emailChangeModel = require('./emailChangeSchema');
|
||||
const playlistSchema = require('../channel/media/playlistSchema');
|
||||
//Utils
|
||||
const hashUtil = require('../../utils/hashUtils');
|
||||
const mailUtil = require('../../utils/mailUtils');
|
||||
|
|
@ -141,7 +142,8 @@ const userSchema = new mongoose.Schema({
|
|||
alts:[{
|
||||
type: mongoose.SchemaTypes.ObjectID,
|
||||
ref: "user"
|
||||
}]
|
||||
}],
|
||||
playlists: [playlistSchema]
|
||||
});
|
||||
|
||||
//This is one of those places where you really DON'T want to use an arrow function over an anonymous one!
|
||||
|
|
@ -535,6 +537,60 @@ userSchema.methods.deleteEmote = async function(name){
|
|||
}
|
||||
}
|
||||
|
||||
userSchema.methods.getPlaylists = function(){
|
||||
//Create an empty array to hold our emote list
|
||||
const playlists = [];
|
||||
|
||||
//For each channel emote
|
||||
for(let playlist of this.playlists){
|
||||
//Push an object with select information from the emote to the emote list
|
||||
playlists.push(playlist.dehydrate());
|
||||
}
|
||||
|
||||
//return the emote list
|
||||
return playlists;
|
||||
}
|
||||
|
||||
userSchema.methods.playlistCrawl = function(cb){
|
||||
for(let listIndex in this.playlists){
|
||||
//Grab the associated playlist
|
||||
playlist = this.playlists[listIndex];
|
||||
|
||||
//Call the callback with the playlist and list index as arguments
|
||||
cb(playlist, listIndex);
|
||||
}
|
||||
}
|
||||
|
||||
userSchema.methods.getPlaylistByName = function(name){
|
||||
//Create null value to hold our found playlist
|
||||
let foundPlaylist = null;
|
||||
|
||||
//Crawl through active playlists
|
||||
this.playlistCrawl((playlist, listIndex) => {
|
||||
//If we found a match based on name
|
||||
if(playlist.name == name){
|
||||
//Keep it
|
||||
foundPlaylist = playlist;
|
||||
//Pass down the list index
|
||||
foundPlaylist.listIndex = listIndex;
|
||||
}
|
||||
});
|
||||
|
||||
//return the given playlist
|
||||
return foundPlaylist;
|
||||
}
|
||||
|
||||
userSchema.methods.deletePlaylistByName = async function(name){
|
||||
//Find the playlist
|
||||
const playlist = this.getPlaylistByName(name);
|
||||
|
||||
//splice out the given playlist
|
||||
this.playlists.splice(playlist.listIndex, 1);
|
||||
|
||||
//save the channel document
|
||||
await this.save();
|
||||
}
|
||||
|
||||
userSchema.methods.tattooIPRecord = async function(ip){
|
||||
//Hash the users ip
|
||||
const ipHash = hashUtil.hashIP(ip);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue