index.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. import { backURL, gql } from "../helpers";
  2. import { actionPromise } from "./types";
  3. export const actionUserUpdate = ({ _id, login, password, nick, avatar }) =>
  4. actionPromise(
  5. "userUpdate",
  6. gql(
  7. `mutation userUpdate($user:UserInput){
  8. UserUpsert(user: $user){
  9. _id login nick avatar {
  10. _id, url
  11. }
  12. }
  13. }
  14. `,
  15. {
  16. user: {
  17. _id,
  18. login,
  19. password,
  20. nick,
  21. avatar,
  22. },
  23. }
  24. )
  25. );
  26. export const actionChangePassword = (login, password, newPassword) =>
  27. actionPromise(
  28. "changePassword",
  29. gql(
  30. `mutation changePass($login:String!, $password:String!, $newPassword:String!){
  31. changePassword(login:$login, password: $password, newPassword: $newPassword){
  32. _id login
  33. }
  34. }`,
  35. { login, password, newPassword },
  36. true
  37. )
  38. );
  39. export const actionLogin = (login, password) =>
  40. actionPromise(
  41. "login",
  42. gql(
  43. `query log($login:String!, $password:String!){
  44. login(login: $login, password: $password)
  45. }`,
  46. { login, password }
  47. )
  48. );
  49. export const actionRegister = (login, password) =>
  50. actionPromise(
  51. "registration",
  52. gql(
  53. `mutation reg($login:String!, $password:String!) {
  54. createUser(login:$login, password: $password) {
  55. _id login
  56. }
  57. }
  58. `,
  59. { login, password }
  60. )
  61. );
  62. export const actionFindUser = (_id, type = "myUser") =>
  63. actionPromise(
  64. `${type}`,
  65. gql(
  66. `query findUser($q:String){
  67. UserFindOne(query:$q){
  68. _id login nick createdAt avatar {
  69. _id url
  70. }
  71. }
  72. }
  73. `,
  74. { q: JSON.stringify([{ _id }]) }
  75. )
  76. );
  77. export const actionFindUsers = () =>
  78. actionPromise(
  79. "users",
  80. gql(
  81. `query findUsers($q:String){
  82. UserFind(query: $q){
  83. _id login nick avatar {
  84. _id url
  85. }
  86. }
  87. }
  88. `,
  89. { q: "[{}]" }
  90. )
  91. );
  92. export const actionFindTracks = (skip) =>
  93. actionPromise(
  94. "tracks",
  95. gql(
  96. `query findTracks($q:String){
  97. TrackFind(query: $q) {
  98. _id url originalFileName
  99. id3 {
  100. title, artist
  101. }
  102. playlists {
  103. _id, name
  104. }
  105. owner {
  106. _id login nick
  107. }
  108. }
  109. }
  110. `,
  111. {
  112. q: JSON.stringify([
  113. {},
  114. {
  115. sort: [{ _id: -1 }],
  116. skip: [skip || 0],
  117. limit: [30],
  118. },
  119. ]),
  120. }
  121. )
  122. );
  123. export const actionFindUserTracks = (_id, type = "myTracks") =>
  124. // поиск по айди пользователя его треков
  125. actionPromise(
  126. `${type}`,
  127. gql(
  128. `query findTracks($q:String){
  129. TrackFind(query: $q) {
  130. _id url originalFileName
  131. id3 {
  132. title, artist
  133. }
  134. playlists {
  135. _id, name
  136. }
  137. }
  138. }
  139. `,
  140. { q: JSON.stringify([{ ___owner: _id }]) }
  141. )
  142. );
  143. export const actionUserTracks = (_id) =>
  144. // поиск одного трека по его айди
  145. actionPromise(
  146. "userTracks",
  147. gql(
  148. `
  149. query getUserTracks($q: String!) {
  150. TrackFind(query: $q) {
  151. _id url originalFileName
  152. id3 {
  153. title, artist
  154. }
  155. playlists {
  156. _id, name
  157. }
  158. owner {
  159. _id login nick
  160. }
  161. }
  162. }
  163. `,
  164. { q: JSON.stringify([{ _id }]) }
  165. )
  166. );
  167. export const actionUserPlaylists = (_id) =>
  168. actionPromise(
  169. "userPlaylists",
  170. gql(
  171. `
  172. query getPlaylistByOwnerId($q:String!) {
  173. PlaylistFind(query: $q) {
  174. _id name owner {login} tracks {_id url originalFileName}
  175. }
  176. }
  177. `,
  178. { q: JSON.stringify([{ ___owner: _id }]) }
  179. )
  180. );
  181. export const actionCreatePlaylist = (name) =>
  182. actionPromise(
  183. "createPlaylist",
  184. gql(
  185. `mutation p($playlist:PlaylistInput) {
  186. PlaylistUpsert(playlist:$playlist) {
  187. _id
  188. }
  189. }`,
  190. { playlist: { name } }
  191. )
  192. );
  193. export const actionFindPlaylistTracks = (_id) =>
  194. actionPromise(
  195. "playlistTracks",
  196. gql(
  197. `query playlistTracks($q:String) {
  198. PlaylistFindOne(query:$q) {
  199. _id name tracks {_id url originalFileName} owner {_id login}
  200. }
  201. }`,
  202. { q: JSON.stringify([{ _id }]) }
  203. )
  204. );
  205. export const actionLoadTracksToPlaylist = (idPlaylist, array) =>
  206. actionPromise(
  207. "loadTracksToPlaylist",
  208. gql(
  209. `mutation loadTracksToPlaylist($playlist:PlaylistInput) {
  210. PlaylistUpsert(playlist:$playlist) {
  211. _id name tracks {_id url originalFileName} owner {_id login}
  212. }
  213. }`,
  214. { playlist: { _id: idPlaylist, tracks: array } }
  215. )
  216. );
  217. export const actionUploadFile = (file, type = "photo") => {
  218. let fd = new FormData();
  219. fd.append(type, file);
  220. return actionPromise(
  221. `${type === "photo" ? "uploadPhoto" : "uploadTrack"}`,
  222. fetch(`${backURL}/${type === "photo" ? "upload" : "track"}`, {
  223. method: "POST",
  224. headers: localStorage.authToken
  225. ? { Authorization: "Bearer " + localStorage.authToken }
  226. : {},
  227. body: fd,
  228. }).then((res) => res.json())
  229. );
  230. };