LoadTrackModal.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import Button from 'react-bootstrap/Button';
  2. import Modal from 'react-bootstrap/Modal';
  3. import {connect} from 'react-redux';
  4. import React, {useState, useEffect} from 'react';
  5. import { store } from '../store/store';
  6. import { sendForm } from './SendForm';
  7. import { actionPlaylistById} from '../store/promiseReducer';
  8. import { actionFullSetPlaylist, actionFullSetTrack, actionFullSetTrackCount} from '../store/playerReducer';
  9. export function LoadTrackModal (props) {
  10. const [tracks, setTrack] = useState(null);
  11. const PostLoadTracks = async(event) =>{
  12. event.preventDefault();
  13. const data = new FormData();
  14. data.append("id", store.getState().promise.plstById.payload.id);
  15. let i = 0;
  16. for (let track of tracks) {
  17. data.append(`tracks[${i++}]`, track);
  18. }
  19. sendForm('playlists/load-tracks', data);
  20. }
  21. return(
  22. <Modal
  23. {...props}
  24. size="lg"
  25. aria-labelledby="contained-modal-title-vcenter"
  26. centered
  27. >
  28. <Modal.Header closeButton>
  29. <Modal.Title id="contained-modal-title-vcenter">
  30. Add Tracks
  31. </Modal.Title>
  32. </Modal.Header>
  33. <Modal.Body >
  34. <form onSubmit={PostLoadTracks} className="authorization center align-items-center justify-content-center d-flex" id='loadTracksForm'>
  35. <div className="mb-3">
  36. <label className="form-label">Add your tracks</label>
  37. <input className="form-control" accept=".mp3" type="file" id="formFileMultiple" multiple onChange={(e) => setTrack(e.target.files)}/>
  38. </div>
  39. </form>
  40. </Modal.Body>
  41. <Modal.Footer>
  42. <Button variant="outline-danger" type='submit' form='loadTracksForm' onClick={() => {
  43. props.onHide();
  44. setTimeout(() => {
  45. store.dispatch(actionPlaylistById(props.id));
  46. setTimeout(() => store.dispatch(actionFullSetPlaylist(store.getState().promise.plstById?.payload?.tracks)), 1000);
  47. }
  48. , 1000);
  49. }
  50. }>Save</Button>
  51. </Modal.Footer>
  52. </Modal>)
  53. }