EditPlaylistModal.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import Button from 'react-bootstrap/Button';
  2. import Modal from 'react-bootstrap/Modal';
  3. import {connect} from 'react-redux';
  4. import React, {useState} from 'react';
  5. // import { sendForm } from './LoadTrackModal';
  6. import { sendForm } from './SendForm';
  7. export function EditPlaylistModal (props) {
  8. const [name, setName] = useState(props.playlist?.name);
  9. const [description, setDescription] = useState(props.playlist?.description);
  10. //const [privat, setPrivat] = useState(0);
  11. const [image, setImage] = useState(props.playlist?.photo);
  12. const PostEditPlaylist = async(event) =>{
  13. event.preventDefault();
  14. const data = new FormData();
  15. data.append("name", name || props.playlist?.name);
  16. data.append("description", description || props.playlist?.description);
  17. data.append("private", props.playlist?.private);
  18. image.name && data.append("photo", image, image.name);
  19. sendForm('playlists/' + props.playlist?.id + '/edit', 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. </Modal.Title>
  31. </Modal.Header>
  32. <Modal.Body >
  33. <form onSubmit={PostEditPlaylist} className="authorization center align-items-center justify-content-center d-flex" id='loadTracksForm'>
  34. <div className="border p-3 col-9">
  35. <h4 className="w-100 text-center">Edit Playlist</h4>
  36. <hr/>
  37. <div className="d-flex justify-content-between">
  38. <div className="w-auto">
  39. <label className="form-label">Image</label>
  40. <input type="file" name="picture" accept="image/*" id="file" className='form-control mb-3' onChange={(e) => setImage(e.target.files[0])} multiple={false}/>
  41. {/* <input className="form-check-input me-3" type="checkbox" id="flexCheckIndeterminate" checked={privat} onChange={e => setPrivat(e.target.checked? 1 : 0)}/>
  42. <label className="form-check-label" >Private?</label> */}
  43. </div>
  44. <div className="w-50">
  45. <label className="form-label">Name</label><br/>
  46. <input type="text" id="username" className='input form-control mb-3' value={name} onChange={e => setName(e.target.value)}/>
  47. <label className="form-label">Description</label>
  48. <textarea type="password" id="password" className='form-control mb-3' value={description} onChange={e => setDescription(e.target.value)}/>
  49. </div>
  50. </div>
  51. </div>
  52. </form>
  53. </Modal.Body>
  54. <Modal.Footer>
  55. <Button variant="outline-danger" type='submit' form='loadTracksForm' onClick={props.onHide}>Save</Button>
  56. </Modal.Footer>
  57. </Modal>)
  58. }
  59. //export const CEditPlaylistModal = connect(state => ({playlist: state.promise.plstById?.payload || []}), )(EditPlaylistModal);