improve update logic

This commit is contained in:
SrGooglo 2023-05-30 01:11:16 +00:00
parent 8946e0922f
commit ed7c0f9b01

View File

@ -12,14 +12,55 @@ import "./index.less"
const allowedTrackFieldChanges = [ const allowedTrackFieldChanges = [
"title", "title",
"artist", "artist",
"thumbnail", "cover",
"album", "album",
"year", "year",
"genre", "genre",
"comment", "comment",
"explicit", "explicit",
"lyricsEnabled",
"spotifyId",
"public",
] ]
function createDefaultTrackData({
uid,
tags = {},
metadata = {},
status = "uploading",
title,
artist,
album,
source,
cover = "https://storage.ragestudio.net/comty-static-assets/default_song.png",
lyricsEnabled = false,
explicit = false,
spotifyId = null,
}) {
return {
uid: uid,
title: title,
artist: artist,
album: album,
metadata: {
tags: tags,
duration: undefined,
bitrate: undefined,
sampleRate: undefined,
channels: undefined,
codec: undefined,
format: undefined,
...metadata,
},
source: source,
status: status,
cover: cover,
lyricsEnabled: lyricsEnabled,
explicit: explicit,
spotifyId: spotifyId,
}
}
export default class PlaylistCreatorSteps extends React.Component { export default class PlaylistCreatorSteps extends React.Component {
state = { state = {
playlistData: {}, playlistData: {},
@ -42,11 +83,11 @@ export default class PlaylistCreatorSteps extends React.Component {
} }
} }
updatePlaylistData = (key, data) => { updatePlaylistData = (key, value) => {
this.setState({ this.setState({
playlistData: { playlistData: {
...this.state.playlistData, ...this.state.playlistData,
[key]: data [key]: value
} }
}) })
} }
@ -164,7 +205,7 @@ export default class PlaylistCreatorSteps extends React.Component {
if (typeof key === "object") { if (typeof key === "object") {
allowedTrackFieldChanges.forEach((_key) => { allowedTrackFieldChanges.forEach((_key) => {
if (key[_key]) { if (typeof key[_key] !== "undefined") {
track[_key] = key[_key] track[_key] = key[_key]
} }
}) })
@ -196,7 +237,7 @@ export default class PlaylistCreatorSteps extends React.Component {
}) })
if (result) { if (result) {
this.handleTrackInfoChange(uid, "thumbnail", result.url) this.handleTrackInfoChange(uid, "cover", result.url)
} }
} }
@ -274,23 +315,13 @@ export default class PlaylistCreatorSteps extends React.Component {
this.setState({ this.setState({
pendingTracksUpload: pendingTracksUpload, pendingTracksUpload: pendingTracksUpload,
fileList: [...this.state.fileList, change.file], fileList: [...this.state.fileList, change.file],
trackList: [...this.state.trackList, { trackList: [...this.state.trackList, createDefaultTrackData({
uid: change.file.uid, uid: change.file.uid,
title: trackMetadata.tags.title ?? change.file.name, title: trackMetadata.tags.title ?? change.file.name,
artist: trackMetadata.tags.artist ?? null, artist: trackMetadata.tags.artist ?? null,
album: trackMetadata.tags.album ?? null, album: trackMetadata.tags.album ?? null,
metadata: { tags: trackMetadata.tags,
duration: undefined, })]
bitrate: undefined,
sampleRate: undefined,
channels: undefined,
codec: undefined,
format: undefined,
},
source: null,
status: "uploading",
thumbnail: "https://storage.ragestudio.net/comty-static-assets/default_song.png"
}]
}) })
break break
@ -490,10 +521,10 @@ export default class PlaylistCreatorSteps extends React.Component {
this.updatePlaylistData("description", description) this.updatePlaylistData("description", description)
}, },
onPlaylistCoverChange: (url) => { onPlaylistCoverChange: (url) => {
this.updatePlaylistData("thumbnail", url) this.updatePlaylistData("cover", url)
}, },
onVisibilityChange: (visibility) => { onVisibilityChange: (visibility) => {
this.updatePlaylistData("visibility", visibility) this.updatePlaylistData("public", visibility)
}, },
onDeletePlaylist: this.handleDeletePlaylist, onDeletePlaylist: this.handleDeletePlaylist,