{"version":3,"sources":["Api.ts","ApiManager.ts","AuthContext.ts","MedialistManager.tsx","env.ts","SearchPanel.tsx","SigninPage.tsx","App.tsx","index.tsx"],"names":["_settings","decrypt","data","substr","length","pos","i","c","test","split","firstLength","secLength","chars","j","decryptedChars","b","parseInt","map","String","fromCharCode","join","medianumUrl","request","ignoreSettings","Error","REACT_APP_MUSICME_API_URL","partner_name","partner_key","getLoginUrl","email","pwd","getPlaylistsUrl","userId","playlistId","includes","getPlaylistUrl","getSearchUrl","query","resources","getSimilarUrl","artist","getSearchArtistsUrl","getDiscoUrl","artistId","count","url","getAlbumUrl","upc","isCryptedDataRegexp","isCryptedData","fetchUrl","options","a","fetch","signal","undefined","method","body","headers","res","text","json","JSON","parse","getLogin","playlist","results","tmp","tracks","tr","uid","Math","random","toString","setPlaylist","name","stringify","barcode","renamePlaylist","createPlaylist","deletePlaylist","getSearchArtists","getDisco","getSimilarArtists","AuthContext","React","createContext","isLogged","username","login","rememberme","Promise","resolve","logout","user","library","settings","error","AuthProvider","Provider","Consumer","EmptyDropZone","addTrack","useDrop","accept","drop","item","monitor","track","ref","style","width","height","border","borderRadius","display","alignItems","justifyContent","formatDuration","duration","seconds","minutes","floor","hours","secStr","padStart","minStr","cleanPlaylistId","id","splited","TrackItem","moveTrack","delTrack","onClick","isOwner","flippedProps","useState","hover","setHover","droped","type","index","collect","hovered","isOver","collectedProps","dropRef","useDrag","dragging","isDragging","collectedProps2","dragRef","flexFlow","marginBottom","borderTopColor","boxSizing","backgroundColor","cursor","onMouseOver","onMouseLeave","position","src","cover_url","alt","title","marginRight","flexShrink","key","top","opacity","color","left","padding","Typography","flexGrow","textOverflow","paddingRight","align","noWrap","Close","variant","memo","onRenamePlaylist","onRemovePlaylist","setName","setTracks","useContext","mmePlayerRef","useRef","console","log","useEffect","getPlaylist","then","indexedTracks","push","indexOf","newTracks","current","addEventListener","audios","document","getElementsByTagName","classList","contains","pause","openRenameDialog","setOpenRenameDialog","to","arrayMove","loadPlaylist","slice","findIndex","openDialog","setOpenDialog","Paper","Lock","paragraph","reduce","t1","t2","Button","disabled","message","callback","pid","partner_id","window","location","hostname","process","w","min","screen","h","open","marginTop","apikey","partnerid","partnername","context","maxHeight","overflowY","flipKey","sort","flipId","idx","t","player","play","RenamePlaylistDialog","onClose","onValid","oldName","YesOrNo","yesOrNo","Dialog","DialogTitle","DialogContent","TextField","autoFocus","margin","label","fullWidth","value","onChange","evt","target","DialogActions","DialogContentText","useStyles","makeStyles","artistAvatar","albumCard","albumCover","abort","AbortController","artistPic","ArtistAvatar","albumCount","albumLength","onClickMore","setSearchText","anchorEl","setAnchorEl","isLoading","setIsLoading","similars","setSimilars","styles","finishedLoading","onClickSimilar","event","currentTarget","handleCloseSimilar","Grid","xs","className","Avatar","Link","href","artistName","marginLeft","Menu","keepMounted","Boolean","hidden","art","MenuItem","ListItemAvatar","useAlbumStyle","root","backgroundRepeat","backgroundSize","backgroundPosition","paddingLeft","backgroundImage","props","cover","content","overflow","AlbumCard","album","onClickTrack","playingTrack","expanded","setExpanded","getAlbum","albumTracks","catch","err","sm","md","lg","ExpansionPanel","ExpansionPanelSummary","expandIcon","ExpandMore","classes","ntracks","ExpansionPanelDetails","List","dense","PlayingAlbumTrack","isPlaying","REACT_APP_SAMPLE_URL","useAudio","autoPlay","audio","state","controls","ListItem","onMouseEnter","ContainerProps","ListItemIcon","PauseCircleFilled","ListItemText","primary","ListItemSecondaryAction","SearchPanel","setQuery","useLocalStorage","history","setHistory","artists","setArtists","discos","setDiscos","queryPending","setQueryPending","setPlayingTrack","disco","filter","d","di","albums","newDiscos","pushArtistHistory","newHistory","typeQuery","queryValue","aborted","queryAbort","response","ids","artAlbums","forEach","Object","keys","discogs","find","all","discography","meta","total","useDebounce","searchText","CircularProgress","size","right","container","spacing","loadMoreAlbums","alb","setter","Center","children","direction","justify","SigninPage","setUsername","password","setPassword","setRememberme","rembered","setRemembered","loading","setLoading","_login","remember","alignSelf","FormControl","FormHelperText","FormControlLabel","control","Checkbox","checked","labelPlacement","theme","createMuiTheme","palette","main","contrastText","secondary","SelectPlaylistMemo","playlists","foreignPlaylists","labelWidth","setLabelWidth","node","ReactDOM","findDOMNode","offsetWidth","InputLabel","htmlFor","Select","input","OutlinedInput","Divider","AuthentifiedApp","auth","setAuth","info","code","user_status","localStorage","removeItem","ThemedApp","App","useTheme","setPlaylistId","createPlaylistOpen","setCreatePlaylistOpen","setPlaylists","getPlaylists","pls","pl","self","owner_id","onValidCreatePlaylist","newPlaylists","p","newName","bg_color","lineHeight","alignContent","textTransform","firstname","lastname","AccountCircle","Tooltip","ExitToApp","Fab","aria-label","bottom","Add","CreatePlaylistDialog","render","backend","HTML5Backend","getElementById","navigator","serviceWorker","getRegistrations","registrations","unregister"],"mappings":"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","file":"static/js/main.6f88df7e.chunk.js","sourcesContent":["import { REACT_APP_MUSICME_API_URL } from './env'\r\n\r\nlet _settings: { partner_name: string, partner_key: string } | null = null\r\nexport function setSettings(settings: { partner_name: string, partner_key: string } | null) {\r\n _settings = settings\r\n console.log('SETTINGS', settings)\r\n}\r\n\r\nexport function decrypt(data : string) {\r\n data = data.substr(10, data.length - 18);\r\n let pos = -1;\r\n for (let i = 0; i < 10 && pos < 0; i++) {\r\n const c = data[i];\r\n if (i % 2 === 1 && (c === \"8\" || c === \"B\")) {\r\n pos = i + 1;\r\n }\r\n }\r\n if (pos === -1) {\r\n pos = 10;\r\n }\r\n data = data.substr(pos);\r\n const test = data.split('');\r\n\r\n const firstLength = test.length / 2 - (test.length / 2) % 2;\r\n const secLength = test.length - firstLength;\r\n let chars = [];\r\n for (let j = 0; j < firstLength; j++)\r\n chars[j + secLength] = test[j];\r\n for (let j = 0; j < secLength; j++)\r\n chars[j] = test[firstLength + j];\r\n var decryptedChars = [];\r\n for (let i = 0; i < chars.length / 2; i++) {\r\n const b = parseInt('0x' + chars[i * 2] + chars[i * 2 + 1]);\r\n decryptedChars[i] = (b ^ 170);\r\n }\r\n const res = decryptedChars.map(c => String.fromCharCode(c));\r\n return res.join('');\r\n}\r\n\r\nfunction medianumUrl(request: string, ignoreSettings = false) {\r\n if (_settings === null && !ignoreSettings)\r\n throw new Error()\r\n\r\n return REACT_APP_MUSICME_API_URL +\r\n '/medianum/' +\r\n request +\r\n '&format=json' +\r\n '&client={\"type\":\"web\",\"context\":\"playlist-editor\"}' +\r\n (_settings != null ? `&partner=${_settings.partner_name}&key=${_settings.partner_key}` : '')\r\n}\r\n\r\nexport function getLoginUrl(email: string, pwd: string) {\r\n return medianumUrl(`medialibrary/signin?login=${email}&password=${pwd}`, true)\r\n}\r\n\r\nexport function getPlaylistsUrl(userId: string, playlistId?: string) {\r\n if (playlistId && playlistId.includes('-'))\r\n playlistId = playlistId.split('-')[1];\r\n return medianumUrl(`my/playlists${ playlistId ? ('/' + playlistId) : '' }?userid=${userId}&filters={includeForeign:1}`)\r\n}\r\n\r\nexport function getPlaylistUrl(userId: string, playlistId?: string) {\r\n if (playlistId && playlistId.includes('-'))\r\n playlistId = playlistId.split('-')[1];\r\n return medianumUrl(`playlist${playlistId ? ('/' + playlistId) : ''}?userid=${userId}&resources=tracks`)\r\n}\r\n\r\ntype searchResource = 'artists'\r\n | 'albums'\r\n | 'artists,albums'\r\n | 'albums,artists'\r\nexport function getSearchUrl(query: string, resources: searchResource) {\r\n return medianumUrl(`search?query=${query}&resources=${resources}&filters={\"maxResults\":5}`)\r\n}\r\n\r\nexport function getSimilarUrl(artist: number) {\r\n return medianumUrl(`artist/${artist}?resources=related-artists{maxResults:6}`)\r\n}\r\n\r\nexport function getSearchAlbumsUrl(query: string) {\r\n return getSearchUrl(query, 'albums')\r\n}\r\n\r\nexport function getSearchArtistsUrl(query: string) {\r\n return getSearchUrl(query, 'artists')\r\n}\r\n\r\nexport function getSearchAllUrl(query: string) {\r\n return getSearchUrl(query, 'artists,albums')\r\n}\r\n\r\nexport function getDiscoUrl(artistId: number, count?: number) {\r\n let url = `artist/${artistId}?resources=albums`\r\n if (!!count) {\r\n url += `&filters={\"maxResults\":${count}}`\r\n }\r\n return medianumUrl(url)\r\n}\r\n\r\nexport function getAlbumUrl(upc: string) {\r\n return medianumUrl(`album/${upc}?resources=tracks`)\r\n}","import {\r\n getPlaylistsUrl,\r\n getPlaylistUrl,\r\n getSearchAlbumsUrl,\r\n getSearchArtistsUrl,\r\n getSearchAllUrl,\r\n getAlbumUrl,\r\n getDiscoUrl,\r\n getSimilarUrl,\r\n decrypt,\r\n getLoginUrl,\r\n} from './Api'\r\n\r\nconst isCryptedDataRegexp = /^[A-Z0-9]*$/\r\nfunction isCryptedData(data: string) {\r\n return data && data.length > 10 && isCryptedDataRegexp.test(data)\r\n}\r\n\r\nasync function fetchUrl(\r\n url: string,\r\n options?: {\r\n signal?: AbortSignal,\r\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE',\r\n body?: string,\r\n }) {\r\n try {\r\n const res = await fetch(url, {\r\n signal: options ? options.signal : undefined,\r\n method: options ? options.method : 'GET',\r\n body: options ? options.body : undefined,\r\n headers: { 'Content-type': 'application/json' },\r\n })\r\n\r\n // try {\r\n // const json = await res.json()\r\n // console.log('json', json)\r\n // return json\r\n // } catch (err) {\r\n // const text = await res.text()\r\n // if (!text)\r\n // return null\r\n // const json = JSON.parse(decrypt(text))\r\n // console.log('json', json)\r\n // return json\r\n // }\r\n\r\n const text = await res.text()\r\n if (!text)\r\n return null\r\n if (isCryptedData(text))\r\n {\r\n const json = JSON.parse(decrypt(text))\r\n return json\r\n }\r\n else\r\n {\r\n const json = JSON.parse(text)\r\n return json\r\n }\r\n } catch (error) {\r\n // console.log('error', error)\r\n throw error;\r\n }\r\n}\r\n\r\n// async function putUrl(url: string, body: string) {\r\n// try {\r\n// const res = await fetch(url, {\r\n// // signal: signal,\r\n// method: 'PUT',\r\n// body: body,\r\n// })\r\n// } catch (error) {\r\n// throw error\r\n// }\r\n// }\r\n\r\nexport async function getLogin(email: string, pwd: string) {\r\n return await fetchUrl(getLoginUrl(email, pwd))\r\n}\r\n\r\nexport interface Playlist {\r\n id: string\r\n type: string\r\n name: string\r\n uri: string\r\n track_count: number\r\n owner_id: string\r\n img_url: string\r\n tile_url: string\r\n tile_alt_url: string\r\n preview_artists: {\r\n id: number,\r\n name: string,\r\n img_url: string,\r\n uri: string,\r\n }[]\r\n}\r\nexport interface PlaylistsResponse {\r\n results: Playlist[]\r\n}\r\n\r\nexport async function getPlaylists(userId: string): Promise {\r\n return await fetchUrl(getPlaylistsUrl(userId))\r\n}\r\n\r\nexport interface PlaylistResponse {\r\n item: {\r\n id: string\r\n name: string\r\n tile_url: string\r\n }\r\n results: {\r\n tracks: Track[]\r\n }\r\n}\r\nexport interface Track {\r\n barcode: string\r\n cover_url: string\r\n album: string\r\n title: string\r\n artists: {\r\n id: number,\r\n name: string,\r\n img_url: string,\r\n uri: string,\r\n }[]\r\n duration: number\r\n streamable: number\r\n opencatalog: number\r\n features: number\r\n album_uri: string\r\n street_date: string\r\n scoring: number\r\n uid: string\r\n}\r\nexport async function getPlaylist(userId: string, playlistId: string): Promise {\r\n var playlist = await fetchUrl(getPlaylistUrl(userId, playlistId))\r\n \r\n if(playlist.results)\r\n {\r\n var tmp = playlist.results.tracks.map((tr: any)=>{return {...tr,uid : Math.random().toString(36).substr(2, 9)}})\r\n playlist.results.tracks=tmp;\r\n }\r\n return playlist\r\n}\r\nexport async function setPlaylist(userId: string, playlistId: string, name: string, tracks: Track[]): Promise {\r\n return await fetchUrl(getPlaylistUrl(userId, playlistId), {\r\n method: 'PUT',\r\n body: JSON.stringify({\r\n name,\r\n tracks: tracks.map(tr => ({ barcode: tr.barcode }))\r\n }),\r\n })\r\n}\r\n\r\nexport async function renamePlaylist(\r\n userId: string,\r\n playlistId: string,\r\n name: string) {\r\n return await fetchUrl(getPlaylistUrl(userId, playlistId), {\r\n method: 'POST',\r\n body: JSON.stringify({ name }),\r\n })\r\n}\r\n\r\nexport async function createPlaylist(userId: string, name: string): Promise {\r\n return await fetchUrl(getPlaylistUrl(userId), {\r\n method: 'POST',\r\n body: JSON.stringify({ name }),\r\n })\r\n}\r\n\r\nexport async function deletePlaylist(userId: string, playlistId: string) {\r\n return await fetchUrl(getPlaylistsUrl(userId, playlistId), {\r\n method: 'DELETE',\r\n })\r\n}\r\n\r\ninterface SearchAllResponse {\r\n\r\n}\r\nexport async function getSearchAll(query: string) {\r\n return await fetchUrl(getSearchAllUrl(query))\r\n}\r\n\r\ninterface SearchAlbumsResponse {\r\n\r\n}\r\nexport async function getSearchAlbums(query: string) {\r\n return await fetchUrl(getSearchAlbumsUrl(query))\r\n}\r\n\r\nexport interface Artist {\r\n id: number\r\n name: string\r\n img_url: string\r\n match: string\r\n uri: string\r\n albums?: Album[]\r\n}\r\nexport interface SearchArtistsResponse {\r\n results: {\r\n artists: Artist[]\r\n } | undefined\r\n}\r\nexport async function getSearchArtists(query: string, signal?: AbortSignal): Promise {\r\n return await fetchUrl(getSearchArtistsUrl(query), { signal })\r\n}\r\n\r\nexport interface Album {\r\n barcode: string\r\n name: string\r\n artists: {\r\n id: number\r\n name: string\r\n img_url: string\r\n uri: string\r\n }[];\r\n ntracks: number\r\n duration: number\r\n streetdate: string\r\n cover_url: string\r\n streamable: number\r\n opencatalog: number\r\n features: number\r\n uri: string\r\n}\r\nexport interface DiscographyResponse {\r\n meta: {\r\n albums?: {\r\n total: number\r\n }[]\r\n }\r\n item: {\r\n id: number\r\n name: string\r\n img_url: string\r\n style: string\r\n theme: number\r\n uri: string \r\n }\r\n results: {\r\n albums: Album[]\r\n } | undefined\r\n}\r\nexport async function getDisco(artistId: number, options?: {\r\n signal?: AbortSignal | undefined,\r\n count?: number,\r\n}): Promise {\r\n return await fetchUrl(getDiscoUrl(artistId, options && options.count), {\r\n signal: options && options.signal\r\n })\r\n}\r\n\r\nexport interface Track {\r\n barcode: string\r\n cover_url: string\r\n artists: {\r\n id: number\r\n name: string\r\n img_url: string\r\n uri: string\r\n }[]\r\n album: string\r\n title: string\r\n duration: number\r\n streamable: number\r\n opencatalog: number\r\n features: number\r\n album_uri: string\r\n street_date: string\r\n plays: number\r\n scoring: number\r\n}\r\n\r\ninterface AlbumResponse {\r\n item: {\r\n barcode: string\r\n name: string\r\n artists: {\r\n id: number\r\n name: string\r\n img_url: string\r\n uri: string\r\n }[]\r\n ntracks: number\r\n duration: number\r\n streetdate: string\r\n cover_url: string\r\n streamable: number\r\n opencatalog: number\r\n features: number\r\n uri: string\r\n }\r\n results: {\r\n tracks: Track[]\r\n } | undefined\r\n}\r\n\r\nexport async function getAlbum(barcode: string, signal?: AbortSignal): Promise {\r\n return await fetchUrl(getAlbumUrl(barcode), {\r\n signal\r\n })\r\n}\r\n\r\nexport interface SimilarArtist {\r\n id: number,\r\n name: string,\r\n img_url: string,\r\n uri: string,\r\n}\r\nexport interface SimilarArtistResponse {\r\n meta: {\r\n session_name: string,\r\n session_id: string,\r\n kind: string,\r\n title: string,\r\n relatedartists: [\r\n {\r\n bench: number\r\n }\r\n ]\r\n },\r\n item: {\r\n name: string,\r\n img_url: string,\r\n id: number,\r\n style: string,\r\n theme: number,\r\n uri: string,\r\n mmix: number,\r\n },\r\n results: {\r\n \"related-artists\": SimilarArtist[]\r\n }\r\n}\r\nexport async function getSimilarArtists(artistId: number): Promise {\r\n return await fetchUrl(getSimilarUrl(artistId))\r\n}","import React from 'react'\r\n// import { any } from 'prop-types';\r\n// import { } from './ApiManager'\r\n\r\nconst AuthContext = React.createContext({\r\n isLogged: false,\r\n username: '',\r\n login: async (email:string, pwd: string, rememberme: boolean) => await Promise.resolve(),\r\n logout: () => {},\r\n user: undefined as any,\r\n library: undefined as any,\r\n settings: undefined as any,\r\n error: undefined as string | undefined,\r\n // login: login,\r\n})\r\n\r\nexport const AuthProvider = AuthContext.Provider\r\nexport const AuthConsumer = AuthContext.Consumer\r\nexport default AuthContext","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n Paper,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport { Close as CloseIcon, Lock as LockIcon, PlayCircleOutline as PlayArrowIcon } from '@material-ui/icons';\r\nimport arrayMove from 'array-move';\r\nimport React, { memo, useContext, useEffect, useRef, useState } from 'react';\r\nimport { DragSourceMonitor, DropTargetMonitor, useDrag, useDrop } from 'react-dnd';\r\nimport { Flipped, Flipper } from 'react-flip-toolkit';\r\n\r\nimport { getPlaylist, setPlaylist, Track } from './ApiManager';\r\nimport AuthContext from './AuthContext';\r\nimport { REACT_APP_EXPORT_PLAYLIST_URL } from './env'\r\n\r\n// import { Track } from './ApiManager'\r\nfunction EmptyDropZone({\r\n addTrack,\r\n}: {\r\n addTrack: (track: Track, index?: number) => void,\r\n}) {\r\n const [, ref] = useDrop({\r\n accept: 'album-track',\r\n drop: (item: any, monitor: DropTargetMonitor) => {\r\n addTrack(item.track)\r\n },\r\n })\r\n\r\n return
\r\n Glissez-déposez une piste ici\r\n
\r\n}\r\n\r\nfunction formatDuration(duration: number) {\r\n const seconds = duration % 60\r\n const minutes = Math.floor((duration % 3600) / 60)\r\n const hours = Math.floor(duration / 3600)\r\n\r\n const secStr = seconds.toString().padStart(2, '0')\r\n const minStr = minutes.toString().padStart(2, '0')\r\n\r\n if (duration < 60)\r\n return `0:${secStr}`\r\n if (duration < 3600)\r\n return `${minutes}:${secStr}`\r\n return `${hours}:${minStr}:${secStr}`\r\n}\r\n\r\nfunction cleanPlaylistId(id: string) {\r\n const splited = id.split('-')\r\n return splited.length === 2 ? splited[1] : splited[0]\r\n}\r\n\r\nfunction TrackItem({ track, moveTrack, addTrack, delTrack, onClick, isOwner, flippedProps }: {\r\n track: IndexedTrack,\r\n isOwner: boolean,\r\n moveTrack: (track: IndexedTrack, index: number) => void,\r\n addTrack: (track: Track, index: number) => void,\r\n delTrack: (track: IndexedTrack) => void,\r\n onClick: () => void,\r\n flippedProps: any,\r\n}) {\r\n const [hover, setHover] = useState(false)\r\n // const [tmpHover, setTmpHover] = useState(null)\r\n const [collectedProps, dropRef] = useDrop({\r\n // ref: myRef,\r\n accept: ['album-track', 'playlist-track'],\r\n drop: (droped: any, monitor: DropTargetMonitor) => {\r\n if (droped.type === 'album-track') {\r\n addTrack(droped.track, track.index)\r\n } else if (droped.type === 'playlist-track') {\r\n moveTrack(droped.track, track.index)\r\n }\r\n return droped\r\n },\r\n // hover: (item: any, monitor: DropTargetMonitor) => {\r\n // if (item.track.index === track.index)\r\n // return\r\n \r\n // moveTrack(item.track, track.index)\r\n\r\n // setTmpHover(item.track)\r\n // },\r\n collect: (monitor: DropTargetMonitor) => {\r\n return {\r\n hovered: monitor.isOver()\r\n } \r\n },\r\n })\r\n const [collectedProps2, dragRef] = useDrag({\r\n // ref: ref,\r\n item: { barcode: track.barcode, track: track, type: 'playlist-track' },\r\n collect: (monitor: DragSourceMonitor) => {\r\n return {\r\n dragging: monitor.isDragging(),\r\n }\r\n }\r\n })\r\n // const hover = useHoverDirty(ref)\r\n const { hovered } = collectedProps\r\n const { dragging } = collectedProps2\r\n\r\n //console.log('COLLECTED PROPS', collectedProps)\r\n\r\n function onMouseOver() {\r\n setHover(true)\r\n }\r\n function onMouseLeave() {\r\n setHover(false)\r\n }\r\n\r\n return
\r\n
\r\n
\r\n {track.title}\r\n { hover\r\n ? [
, ] : null\r\n }\r\n
\r\n {/* {\r\n hover\r\n ? \r\n : ()\r\n } */}\r\n \r\n {track.title}\r\n \r\n {\r\n hover && isOwner\r\n ? delTrack(track)} />\r\n : \r\n {formatDuration(track.duration)}\r\n \r\n }\r\n
\r\n
\r\n}\r\n\r\ntype MedialistManagerProps = {\r\n userId: string | null\r\n isOwner: boolean,\r\n playlistId: string | null\r\n onRenamePlaylist: (name: string) => void\r\n onRemovePlaylist: () => void\r\n}\r\n\r\ninterface IndexedTrack extends Track {\r\n index: number\r\n}\r\n\r\ninterface PlaylistHistory {\r\n [userId: string]: {\r\n [playlistId: string]: {\r\n revisions: {\r\n tracks: IndexedTrack[]\r\n }[]\r\n }\r\n }\r\n}\r\n\r\n// const history = {} as PlaylistHistory\r\n\r\n// function pushHistory(\r\n// userId: string,\r\n// playlistId: string,\r\n// name: string,\r\n// tracks: IndexedTrack[]) {\r\n// // let storedHistory = localStorage.getItem('history')\r\n// // let history = storedHistory\r\n// // ? JSON.parse(storedHistory) as PlaylistHistory\r\n// // : {}\r\n\r\n// if (!(history[userId]))\r\n// history[userId] = {}\r\n// if (!(history[userId][playlistId]))\r\n// history[userId][playlistId] = { revisions: [] }\r\n\r\n// const revisions = history[userId][playlistId].revisions\r\n// revisions.push({ tracks })\r\n// // localStorage.setItem('history', JSON.stringify(history))\r\n// // setPlaylist(userId!, playlistId!, name, tracks)\r\n// }\r\n\r\n// function popHistory(\r\n// userId: string,\r\n// playlistId: string,\r\n// name: string): IndexedTrack[] {\r\n// const history = localStorage.getItem('history') as unknown as PlaylistHistory\r\n// const revisions = history[userId][playlistId].revisions\r\n// const lastRevision = revisions.pop()\r\n// if (!lastRevision)\r\n// return []\r\n// // localStorage.setItem('history', JSON.stringify(history))\r\n// // setPlaylist(userId!, playlistId!, name, lastRevision.tracks)\r\n// return lastRevision.tracks\r\n// }\r\n\r\n// function isDescendant(parent: HTMLElement, child: HTMLElement) {\r\n// let node = child.parentNode;\r\n// while (node != null) {\r\n// console.log('node', node)\r\n// if (node === parent) {\r\n// return true;\r\n// }\r\n// node = node.parentNode;\r\n// }\r\n// return false;\r\n// }\r\n\r\nfunction MedialistManager({\r\n userId,\r\n isOwner,\r\n playlistId,\r\n onRenamePlaylist,\r\n onRemovePlaylist,\r\n}: MedialistManagerProps) {\r\n\r\n const [name, setName] = useState('')\r\n const [tracks, setTracks] = useState([] as IndexedTrack[])\r\n // const [currentTrack, setCurrentTrack] = useState(-1)\r\n const { settings } = useContext(AuthContext)\r\n const mmePlayerRef = useRef(null as MMEEmbeddedPlayer | null)\r\n\r\n console.log('settings', settings)\r\n\r\n useEffect(() => {\r\n if (!userId || !playlistId)\r\n return\r\n getPlaylist(userId, playlistId).then(res => {\r\n setName(res.item.name)\r\n if (res.results) {\r\n const indexedTracks = [] as IndexedTrack[]\r\n console.log(res.results.tracks)\r\n\r\n for (let track of res.results.tracks) {\r\n indexedTracks.push({\r\n ...track,\r\n index: res.results.tracks.indexOf(track),\r\n })\r\n }\r\n const newTracks = indexedTracks //.sort(tr => tr.index)\r\n console.log(newTracks)\r\n\r\n setTracks(newTracks)\r\n // pushHistory(userId!, playlistId!, name, newTracks)\r\n } else {\r\n setTracks([])\r\n // pushHistory(userId!, playlistId!, name, [])\r\n }\r\n })\r\n }, [userId, playlistId])\r\n\r\n useEffect(() => {\r\n if (!mmePlayerRef || !mmePlayerRef.current) {\r\n return\r\n }\r\n mmePlayerRef.current.addEventListener('play', () => {\r\n const audios = document.getElementsByTagName('audio')\r\n for (var i = 0; i < audios.length; i++) {\r\n if (!audios[i].classList.contains('mme-player')) {\r\n audios[i].pause()\r\n }\r\n }\r\n })\r\n // }, [mmePlayerRef.current])\r\n })\r\n\r\n const [openRenameDialog, setOpenRenameDialog] = useState(false)\r\n\r\n const moveTrack = async (track: IndexedTrack, to: number) => {\r\n console.log({track,to})\r\n // to represente la position finale dans le tableau si elle est > a la position initiale\r\n // il faut tenir compte du fait qu'il faudra retirer le l'élément avant de le replacer dans le tableau\r\n // final donc décrémenter la valeur de to\r\n if(to>track.index) { to-- }\r\n const newTracks = arrayMove(tracks, track.index, to).map((tr, i) => ({ ...tr, index: i }))\r\n setTracks(newTracks)\r\n // pushHistory(userId!, playlistId!, name, newTracks)\r\n \r\n await setPlaylist(userId!, playlistId!, name, newTracks)\r\n\r\n if (mmePlayerRef.current && playlistId) {\r\n mmePlayerRef.current.loadPlaylist(cleanPlaylistId(playlistId))\r\n }\r\n }\r\n\r\n const addTrack = async (track: Track, index?: number) => {\r\n if (!index) {\r\n const newTracks = [ ...tracks, {\r\n ...track,\r\n uid: Math.random().toString(36).substr(2, 9),\r\n index: tracks.length\r\n }]\r\n setTracks(newTracks)\r\n // setPlaylist(userId!, playlistId!, name, newTracks)\r\n // pushHistory(userId!, playlistId!, name, newTracks)\r\n await setPlaylist(userId!, playlistId!, name, newTracks)\r\n if (mmePlayerRef.current && playlistId) {\r\n mmePlayerRef.current.loadPlaylist(cleanPlaylistId(playlistId))\r\n }\r\n return\r\n }\r\n\r\n const newTracks = [\r\n ...tracks.slice(0, index),\r\n {...track, uid: Math.random().toString(36).substr(2, 9)},\r\n ...tracks.slice(index),\r\n ].map((tr, i) => ({ ...tr, index: i }))\r\n setTracks(newTracks)\r\n // setPlaylist(userId!, playlistId!, name, newTracks)\r\n // pushHistory(userId!, playlistId!, name, newTracks)\r\n await setPlaylist(userId!, playlistId!, name, newTracks)\r\n if (mmePlayerRef.current && playlistId) {\r\n mmePlayerRef.current.loadPlaylist(cleanPlaylistId(playlistId))\r\n }\r\n }\r\n\r\n const delTrack = async (track: IndexedTrack) => {\r\n\r\n const index = tracks.findIndex((tr)=>{return (tr.uid === track.uid)})\r\n\r\n const newTracks = [\r\n ...tracks.slice(0, index),\r\n ...tracks.slice(index + 1),\r\n ].map((tr, i) => ({ ...tr, index: i }))\r\n setTracks(newTracks)\r\n await setPlaylist(userId!, playlistId!, name, newTracks)\r\n if (mmePlayerRef.current && playlistId) {\r\n mmePlayerRef.current.loadPlaylist(cleanPlaylistId(playlistId))\r\n }\r\n // pushHistory(userId!, playlistId!, name, newTracks)\r\n }\r\n\r\n const [openDialog, setOpenDialog] = useState(null as {\r\n title: string,\r\n message: string,\r\n callback: ()=>void,\r\n } | null)\r\n // const [openDialogResult, setOpenDialogResult] = useState(false)\r\n function openYesOrNo(title: string, message: string, callback: ()=>void) {\r\n setOpenDialog({\r\n title,\r\n message,\r\n callback,\r\n })\r\n }\r\n\r\n function closeYesOrNo(yesOrNo: boolean) {\r\n setOpenDialog(null)\r\n // setOpenDialogResult(yesOrNo)\r\n }\r\n\r\n // const [openIframe, setOpenIframe] = useState(null as string | null)\r\n\r\n if (name === '')\r\n return null\r\n\r\n return \r\n
\r\n {isOwner ? null : }\r\n \r\n {name}\r\n \r\n
\r\n \r\n {tracks.length} track{tracks.length > 1 ? 's' : ''} - {formatDuration(tracks\r\n .map(tr => tr.duration)\r\n .reduce((t1, t2) => t1 + t2, 0))}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {\r\n !!playlistId ? : null\r\n }\r\n
\r\n {/* onClick={() => {\r\n popHistory(userId!, playlistId!, name)\r\n }} */}\r\n {/* \r\n { \r\n }} /> */}\r\n
\r\n
\r\n tr.index).map(tr => tr.uid).join('-')}>\r\n {\r\n tracks\r\n .sort(tr => tr.index)\r\n .map((tr, i) => {flippedProps => moveTrack(tr, i)}\r\n addTrack={addTrack}\r\n delTrack={delTrack}\r\n onClick={() => {\r\n const idx = tracks.findIndex((t)=>{return (tr.uid === t.uid)})\r\n // setCurrentTrack(idx)\r\n const player = document.getElementsByTagName('mme-player') as HTMLCollectionOf\r\n if (player.length >= 1) {\r\n console.log('players', player)\r\n console.log('players[0]', player[0])\r\n player[0].play(idx)\r\n }\r\n }}\r\n />})\r\n }\r\n \r\n
\r\n { isOwner ? : null }\r\n {\r\n setOpenRenameDialog(false)\r\n }} onValid={name => {\r\n setName(name)\r\n onRenamePlaylist(name)\r\n }} oldName={name} />\r\n {}}\r\n onClose={closeYesOrNo} />\r\n {/* setOpenIframe(null)} /> */}\r\n
\r\n}\r\n\r\nexport default memo(MedialistManager)\r\n\r\nfunction RenamePlaylistDialog({ open, onClose, onValid, oldName }: {\r\n oldName: string,\r\n open: boolean,\r\n onClose: ()=>void,\r\n onValid: (name: string)=>void,\r\n }) {\r\n const [name, setName] = useState(oldName)\r\n \r\n return {\r\n setName('')\r\n onClose()\r\n }}>\r\n Renommer la playlist\r\n \r\n {/* \r\n */}\r\n setName(evt.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\nfunction YesOrNo({ title, message, open, onClose, callback }: {\r\n open: boolean,\r\n title: string,\r\n message: string,\r\n onClose: (yesOrNo: boolean)=>void,\r\n callback: ()=>void,\r\n}) {\r\n return onClose(false)}>\r\n {title}\r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\n// function IframeDialog({ src, open, onClose }: {\r\n// src: string | null,\r\n// open: boolean,\r\n// onClose: ()=>void,\r\n// }) {\r\n// return \r\n// \r\n//