Commit 15e96f5a authored by Andreas Heimann's avatar Andreas Heimann Committed by GitHub

Merge pull request #16 from jy1263/deletesongsnew

Allowed for deleting songs from library
parents b2549b86 cc6f97a0
...@@ -9,3 +9,16 @@ ...@@ -9,3 +9,16 @@
align-items: center; align-items: center;
font-size: 32px; font-size: 32px;
} }
.song-delete-button {
position: absolute;
display: flex;
align-self: flex-start;
background-color: rgba(0, 0, 0, 0.8);
border-bottom-left-radius: 0;
border-top-right-radius: 0;
color: white;
}
.song-delete-button:hover {
background-color: #000000;
color: white;
}
...@@ -13,3 +13,17 @@ ...@@ -13,3 +13,17 @@
} }
} }
} }
//styling for delete button
.song-delete-button {
position: absolute;
display: flex;
align-self: flex-start;
background-color: rgba(0, 0, 0, 0.8);
border-bottom-left-radius: 0;
border-top-right-radius: 0;
color: white;
&:hover {
background-color: rgba(0, 0, 0, 1);
color: white;
}
}
\ No newline at end of file
...@@ -82,14 +82,19 @@ class SRXD { ...@@ -82,14 +82,19 @@ class SRXD {
getSongDetail(srtbPath) { getSongDetail(srtbPath) {
let srtbFile = JSON.parse( fs.readFileSync(srtbPath) ); let srtbFile = JSON.parse( fs.readFileSync(srtbPath) );
let songTrackInfo = ""; let songTrackInfo = "";
let songOggInfo = "";
srtbFile.largeStringValuesContainer.values.forEach(function(value) { srtbFile.largeStringValuesContainer.values.forEach(function(value) {
if(value.key == "SO_TrackInfo_TrackInfo") { if(value.key == "SO_TrackInfo_TrackInfo") {
songTrackInfo = JSON.parse( value.val ); songTrackInfo = JSON.parse( value.val );
} }
if(value.key == "SO_ClipInfo_ClipInfo_0") {
songOggInfo = JSON.parse( value.val );
}
}); });
return [songTrackInfo, this.getSongCover(songTrackInfo.albumArtReference.assetName)]; return [songTrackInfo, this.getSongCover(songTrackInfo.albumArtReference.assetName), this.getSongAssetDirectory(songOggInfo.clipAssetReference.assetName, "AudioClips"), this.getSongAssetDirectory(songTrackInfo.albumArtReference.assetName, "AlbumArt"), srtbPath];
} }
// Used to find files by file extension // Used to find files by file extension
...@@ -102,9 +107,13 @@ class SRXD { ...@@ -102,9 +107,13 @@ class SRXD {
let dir = fs.readdirSync( path ); let dir = fs.readdirSync( path );
return dir.filter( elm => elm.match(new RegExp(`.*\.srtb$`, 'ig'))); return dir.filter( elm => elm.match(new RegExp(`.*\.srtb$`, 'ig')));
} }
getFileExtension(fileName, path)
{
let dir = fs.readdirSync( path );
return dir.filter( elm => elm.match(new RegExp(`(${fileName}).*\.$`, 'ig')));
}
getSongCover(fileName) { getSongCover(fileName) {
let dir = fs.readdirSync( path.join(userSettings.get('gameDirectory'), "AlbumArt") ); let fileExtension = this.getFileExtension(fileName, path.join(userSettings.get('gameDirectory'), "AlbumArt") );
let fileExtension = dir.filter( elm => elm.match(new RegExp(`(${fileName}).*\.$`, 'ig')));
if(fileExtension.length > 0) { if(fileExtension.length > 0) {
let finalPath = path.join(userSettings.get('gameDirectory'), "AlbumArt", fileExtension[0]); let finalPath = path.join(userSettings.get('gameDirectory'), "AlbumArt", fileExtension[0]);
...@@ -116,9 +125,34 @@ class SRXD { ...@@ -116,9 +125,34 @@ class SRXD {
return ""; return "";
} }
} }
getSongTrackInfo() { getSongTrackInfo() {
return this.songTrackInfo; return this.songTrackInfo;
} }
//Gets directory of files to delete
getSongAssetDirectory(fileName, fileType) {
let fileExtension = this.getFileExtension(fileName, path.join(userSettings.get('gameDirectory'), fileType));
if (fileExtension.join() != '') {
let finalPath = path.join(userSettings.get('gameDirectory'), fileType, fileExtension.join());
return finalPath;
}
else {return fileName;}
}
//Deletes Files
deleteFiles(songDetail) {
var deleteFiles = [songDetail[2], songDetail[3], songDetail[4]];
console.log('Deleting files:')
for(var i = 0; i < deleteFiles.length; i++){
try {
fs.unlinkSync(deleteFiles[i]);
console.log("Deleted " + deleteFiles[i]);
} catch(err) {
console.error(deleteFiles[i] + " doesn't exist, therefore weren't deleted: " + err)
}
}
RefreshLibrary();
}
} }
module.exports = SRXD; module.exports = SRXD;
...@@ -84,6 +84,12 @@ function BuildLibrarySongDOM(songDetail, spinShareReference) { ...@@ -84,6 +84,12 @@ function BuildLibrarySongDOM(songDetail, spinShareReference) {
songCharter.innerHTML = "<i class=\"mdi mdi-account-circle\"></i><span>" + songDetail[0].charter + "</span>"; songCharter.innerHTML = "<i class=\"mdi mdi-account-circle\"></i><span>" + songDetail[0].charter + "</span>";
songCharterInfo.appendChild(songCharter); songCharterInfo.appendChild(songCharter);
let songDeleteButton = document.createElement("button"); //Creates delete button
songDeleteButton.classList.add("song-delete-button");
songDeleteButton.addEventListener("click", function(){srxdControl.deleteFiles(songDetail);});
songDeleteButton.innerHTML = "X";
songCharter.appendChild(songDeleteButton);
songCover.appendChild(songCharterInfo); songCover.appendChild(songCharterInfo);
songContainer.appendChild(songCover); songContainer.appendChild(songCover);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment