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 @@
align-items: center;
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;
}
......@@ -12,4 +12,18 @@
font-size: 32px;
}
}
}
//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 {
getSongDetail(srtbPath) {
let srtbFile = JSON.parse( fs.readFileSync(srtbPath) );
let songTrackInfo = "";
let songOggInfo = "";
srtbFile.largeStringValuesContainer.values.forEach(function(value) {
if(value.key == "SO_TrackInfo_TrackInfo") {
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
......@@ -102,9 +107,13 @@ class SRXD {
let dir = fs.readdirSync( path );
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) {
let dir = fs.readdirSync( path.join(userSettings.get('gameDirectory'), "AlbumArt") );
let fileExtension = dir.filter( elm => elm.match(new RegExp(`(${fileName}).*\.$`, 'ig')));
let fileExtension = this.getFileExtension(fileName, path.join(userSettings.get('gameDirectory'), "AlbumArt") );
if(fileExtension.length > 0) {
let finalPath = path.join(userSettings.get('gameDirectory'), "AlbumArt", fileExtension[0]);
......@@ -116,9 +125,34 @@ class SRXD {
return "";
}
}
getSongTrackInfo() {
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;
......@@ -84,6 +84,12 @@ function BuildLibrarySongDOM(songDetail, spinShareReference) {
songCharter.innerHTML = "<i class=\"mdi mdi-account-circle\"></i><span>" + songDetail[0].charter + "</span>";
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);
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