123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { history } from "../App";
- import { gql } from "../helpers/gql";
- import { uploadFile } from "../helpers/uploadFile";
- import { actionAboutMe } from "./actionAboutMe";
- import { actionUpdateChat } from "./actionsForChats";
- import { actionGetAllMessage } from "./actionsMessages";
- import { actionPromise } from "./actionsPromise";
- const actionAddMedia = (typeId, mediaId, type) =>
- actionPromise('newMedia', gql(`mutation setMedia($media: MediaInput) {
- MediaUpsert(media: $media) {
- _id
-
- }
- }`, {media: {_id: mediaId, [type]: {_id: typeId}}}))
- export const actionUploadFile = (file) =>
- actionPromise('file', uploadFile(file))
- export const actionUploadFiles = (files) =>
- actionPromise('files', Promise.all(files.map(file => uploadFile(file))))
- export const actionSetUserAvatar = (file) =>
- async (dispatch, getState) => {
- let userId = getState().auth.payload.sub.id;
- let media = await dispatch(actionUploadFile(file));
- console.log(media)
- if (media._id){
- let dataId = await dispatch(actionAddMedia(userId, media._id, "userAvatar"))
- if (dataId){
- dispatch(actionAboutMe())
- }
- }
- }
- export const actionSetChatAvatar = (file, data) =>
- async (dispatch, getState) => {
- const [,route, chatId] = history.location.pathname.split('/');
- const chat = data ? data : getState().chats[chatId];
- console.log(chat)
- const media = await dispatch(actionUploadFile(file));
- if(media._id){
- const dataId = await dispatch(actionAddMedia(chat?._id, media._id, "chatAvatars"))
- if (dataId){
- //it helps to everyone to get changed chat with avatar from socket (something to change for example title)
- dispatch(actionUpdateChat({_id: chat?._id, title: chat?.title}));
- }
- return dataId
- }
- }
- export const actionAddAllMediaChat = (id, data) => ({type: 'ALLMEDIACHAT', id, data})
- export const actionGetAllMediaFromChat = (id) =>
- async(dispatch, getState) => {
- const messages = await dispatch(actionGetAllMessage(id));
- if(messages.length !== 0) {
- const media = messages.reduce((a, b) => b.media ? [...a, ...b.media] : a,[] )
- dispatch(actionAddAllMediaChat(id, media));
- }
- }
-
|