createPlaylist.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import React, {useState} from 'react';
  2. // import {Link} from 'react-router-dom';
  3. // import { actionAuthLogin } from '../store/authReducer';
  4. // import { store } from '../store/store';
  5. function sendForm (url, data) {
  6. fetch(`http://player-api/api/${url}`, {
  7. method: 'POST',
  8. body: data,
  9. headers: {
  10. ...(localStorage.authToken ? {"Authorization": "Bearer " + localStorage.authToken} : {})
  11. },
  12. }).then(res => res.json())
  13. .then(data => {
  14. if(data.token) {
  15. console.log(data)
  16. return data
  17. } else {
  18. //console.log(data.login[0]);
  19. }
  20. })
  21. }
  22. export const CreatePlaylist = (props) => {
  23. const [name, setName] = useState('');
  24. const [description, setDescription] = useState('');
  25. const [privat, setPrivat] = useState(0);
  26. const [image, setImage] = useState(null);
  27. const PostCreatePlaylist = async(event) =>{
  28. event.preventDefault();
  29. const data = new FormData();
  30. data.append("name", name);
  31. data.append("description", description);
  32. data.append("private", privat);
  33. data.append("photo", image, image.name);
  34. sendForm('playlists/create', data);
  35. }
  36. return <>
  37. <form onSubmit={PostCreatePlaylist} className="authorization center align-items-center justify-content-center d-flex">
  38. <div className="border p-3 col-9">
  39. <h4 className="w-100 text-center">Create Playlist</h4>
  40. <hr/>
  41. <div className="d-flex justify-content-between">
  42. <div className="w-auto">
  43. <label className="form-label">Image</label>
  44. <input type="file" name="picture" accept="image/*" id="file" className='form-control mb-3' onChange={(e) => setImage(e.target.files[0])} multiple={false}/>
  45. <input className="form-check-input me-3" type="checkbox" id="flexCheckIndeterminate" checked={privat} onChange={e => setPrivat(e.target.checked? 1 : 0)}/>
  46. <label className="form-check-label" >Private?</label>
  47. </div>
  48. <div className="w-50">
  49. <label className="form-label">Name</label><br/>
  50. <input type="text" id="username" className='input form-control mb-3' value={name} onChange={e => setName(e.target.value)}/>
  51. <label className="form-label">Description</label>
  52. <textarea type="password" id="password" className='form-control mb-3' value={description} onChange={e => setDescription(e.target.value)}/>
  53. </div>
  54. </div>
  55. <button type='submit' className="btn btn-outline-danger" onClick={props.onHide} >Create</button>
  56. </div>
  57. </form>
  58. </>
  59. }