Progress on dms, code cleanup
Progress on dms, code cleanup
This commit is contained in:
@@ -163,6 +163,7 @@ export const followAccount = (id, reblogs = true) => (dispatch, getState) => {
|
||||
dispatch(followAccountRequest(id, locked))
|
||||
|
||||
api(getState).post(`/api/v1/accounts/${id}/follow`, { reblogs }).then((response) => {
|
||||
console.log("response:", response)
|
||||
dispatch(followAccountSuccess(response.data, alreadyFollowing))
|
||||
}).catch((error) => {
|
||||
dispatch(followAccountFail(error, locked))
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
import api from '../api'
|
||||
import { me } from '../initial_state'
|
||||
|
||||
export const MESSAGE_INPUT_CHANGE = 'MESSAGE_INPUT_CHANGE'
|
||||
export const MESSAGE_INPUT_RESET = 'MESSAGE_INPUT_RESET'
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const messageInputChange = (text) => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
|
||||
//Ensure has conversation
|
||||
const conversationId = getState().getIn(['chat_conversations', 'current', 'conversation_id'], null)
|
||||
if (!conversationId) return
|
||||
|
||||
dispatch({
|
||||
type: MESSAGE_INPUT_CHANGE,
|
||||
text,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const messageInputReset = (dispatch) => {
|
||||
dispatch({ type: MESSAGE_INPUT_RESET })
|
||||
}
|
||||
111
app/javascript/gabsocial/actions/chat_conversation_messages.js
Normal file
111
app/javascript/gabsocial/actions/chat_conversation_messages.js
Normal file
@@ -0,0 +1,111 @@
|
||||
import { Map as ImmutableMap, List as ImmutableList, toJS } from 'immutable'
|
||||
import noop from 'lodash.noop'
|
||||
import api, { getLinks } from '../api'
|
||||
import { me } from '../initial_state'
|
||||
import { importFetchedChatMessages } from './importer'
|
||||
|
||||
export const CHAT_CONVERSATION_MESSAGES_EXPAND_REQUEST = 'CHAT_CONVERSATION_MESSAGES_EXPAND_REQUEST'
|
||||
export const CHAT_CONVERSATION_MESSAGES_EXPAND_SUCCESS = 'CHAT_CONVERSATION_MESSAGES_EXPAND_SUCCESS'
|
||||
export const CHAT_CONVERSATION_MESSAGES_EXPAND_FAIL = 'CHAT_CONVERSATION_MESSAGES_EXPAND_FAIL'
|
||||
|
||||
//
|
||||
|
||||
export const CHAT_CONVERSATION_MESSAGES_CONNECT = 'CHAT_CONVERSATION_MESSAGES_CONNECT'
|
||||
export const CHAT_CONVERSATION_MESSAGES_DISCONNECT = 'CHAT_CONVERSATION_MESSAGES_DISCONNECT'
|
||||
export const CHAT_CONVERSATION_MESSAGES_CLEAR = 'CHAT_CONVERSATION_MESSAGES_CLEAR'
|
||||
export const CHAT_CONVERSATION_MESSAGES_SCROLL_BOTTOM = 'CHAT_CONVERSATION_MESSAGES_SCROLL_BOTTOM'
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const connectChatMessageConversation = (chatConversationId) => ({
|
||||
type: CHAT_CONVERSATION_MESSAGES_CONNECT,
|
||||
chatConversationId,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const disconnectChatMessageConversation = (chatConversationId) => ({
|
||||
type: CHAT_CONVERSATION_MESSAGES_DISCONNECT,
|
||||
chatConversationId,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const clearChatMessageConversation = (chatConversationId) => (dispatch) => {
|
||||
dispatch({
|
||||
type: CHAT_CONVERSATION_MESSAGES_CLEAR,
|
||||
chatConversationId
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const scrollBottomChatMessageConversation = (chatConversationId, top) => ({
|
||||
type: CHAT_CONVERSATION_MESSAGES_SCROLL_BOTTOM,
|
||||
chatConversationId,
|
||||
top,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const expandChatMessages = (chatConversationId, params = {}, done = noop) => (dispatch, getState) => {
|
||||
if (!me || !chatConversationId) return
|
||||
|
||||
const chatConversation = getState().getIn(['chat_messages', chatConversationId], ImmutableMap())
|
||||
const isLoadingMore = !!params.maxId
|
||||
|
||||
if (!!chatConversation && (chatConversation.get('isLoading') || chatConversation.get('isError'))) {
|
||||
done()
|
||||
return
|
||||
}
|
||||
|
||||
if (!params.maxId && chatConversation.get('items', ImmutableList()).size > 0) {
|
||||
params.sinceId = chatConversation.getIn(['items', 0])
|
||||
}
|
||||
|
||||
const isLoadingRecent = !!params.sinceId
|
||||
|
||||
dispatch(expandChatMessagesRequest(chatConversationId, isLoadingMore))
|
||||
|
||||
api(getState).get(`/api/v1/chat_conversations/messages/${chatConversationId}`, { params }).then((response) => {
|
||||
console.log("response:", response)
|
||||
const next = getLinks(response).refs.find(link => link.rel === 'next')
|
||||
console.log("next:", next, getLinks(response).refs)
|
||||
dispatch(importFetchedChatMessages(response.data))
|
||||
dispatch(expandChatMessagesSuccess(chatConversationId, response.data, next ? next.uri : null, response.code === 206, isLoadingRecent, isLoadingMore))
|
||||
done()
|
||||
}).catch((error) => {
|
||||
console.log("error:", error)
|
||||
dispatch(expandChatMessagesFail(chatConversationId, error, isLoadingMore))
|
||||
done()
|
||||
})
|
||||
}
|
||||
|
||||
export const expandChatMessagesRequest = (chatConversationId, isLoadingMore) => ({
|
||||
type: CHAT_CONVERSATION_MESSAGES_EXPAND_REQUEST,
|
||||
chatConversationId,
|
||||
skipLoading: !isLoadingMore,
|
||||
})
|
||||
|
||||
export const expandChatMessagesSuccess = (chatConversationId, chatMessages, next, partial, isLoadingRecent, isLoadingMore) => ({
|
||||
type: CHAT_CONVERSATION_MESSAGES_EXPAND_SUCCESS,
|
||||
chatConversationId,
|
||||
chatMessages,
|
||||
next,
|
||||
partial,
|
||||
isLoadingRecent,
|
||||
skipLoading: !isLoadingMore,
|
||||
})
|
||||
|
||||
export const expandChatMessagesFail = (chatConversationId, error, isLoadingMore) => ({
|
||||
type: CHAT_CONVERSATION_MESSAGES_EXPAND_FAIL,
|
||||
chatConversationId,
|
||||
error,
|
||||
skipLoading: !isLoadingMore,
|
||||
})
|
||||
|
||||
@@ -3,13 +3,35 @@ import { fetchRelationships } from './accounts'
|
||||
import { importFetchedAccounts } from './importer'
|
||||
import { me } from '../initial_state'
|
||||
|
||||
export const CONVERSATION_BLOCKS_FETCH_REQUEST = 'CONVERSATION_BLOCKS_FETCH_REQUEST'
|
||||
export const CONVERSATION_BLOCKS_FETCH_SUCCESS = 'CONVERSATION_BLOCKS_FETCH_SUCCESS'
|
||||
export const CONVERSATION_BLOCKS_FETCH_FAIL = 'CONVERSATION_BLOCKS_FETCH_FAIL'
|
||||
//
|
||||
|
||||
export const CONVERSATION_BLOCKS_EXPAND_REQUEST = 'CONVERSATION_BLOCKS_EXPAND_REQUEST'
|
||||
export const CONVERSATION_BLOCKS_EXPAND_SUCCESS = 'CONVERSATION_BLOCKS_EXPAND_SUCCESS'
|
||||
export const CONVERSATION_BLOCKS_EXPAND_FAIL = 'CONVERSATION_BLOCKS_EXPAND_FAIL'
|
||||
export const CHAT_CONVERSATIONS_APPROVED_FETCH_REQUEST = 'CHAT_CONVERSATIONS_APPROVED_FETCH_REQUEST'
|
||||
export const CHAT_CONVERSATIONS_APPROVED_FETCH_SUCCESS = 'CHAT_CONVERSATIONS_APPROVED_FETCH_SUCCESS'
|
||||
export const CHAT_CONVERSATIONS_APPROVED_FETCH_FAIL = 'CHAT_CONVERSATIONS_APPROVED_FETCH_FAIL'
|
||||
|
||||
export const CHAT_CONVERSATIONS_APPROVED_EXPAND_REQUEST = 'CHAT_CONVERSATIONS_APPROVED_EXPAND_REQUEST'
|
||||
export const CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS = 'CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS'
|
||||
export const CHAT_CONVERSATIONS_APPROVED_EXPAND_FAIL = 'CHAT_CONVERSATIONS_APPROVED_EXPAND_FAIL'
|
||||
|
||||
//
|
||||
|
||||
export const CHAT_CONVERSATIONS_CREATE_REQUEST = 'CHAT_CONVERSATIONS_CREATE_REQUEST'
|
||||
export const CHAT_CONVERSATIONS_CREATE_SUCCESS = 'CHAT_CONVERSATIONS_CREATE_SUCCESS'
|
||||
export const CHAT_CONVERSATIONS_CREATE_FAIL = 'CHAT_CONVERSATIONS_CREATE_FAIL'
|
||||
|
||||
export const CHAT_CONVERSATIONS_DELETE_REQUEST = 'CHAT_CONVERSATIONS_DELETE_REQUEST'
|
||||
export const CHAT_CONVERSATIONS_DELETE_SUCCESS = 'CHAT_CONVERSATIONS_DELETE_SUCCESS'
|
||||
export const CHAT_CONVERSATIONS_DELETE_FAIL = 'CHAT_CONVERSATIONS_DELETE_FAIL'
|
||||
|
||||
//
|
||||
|
||||
export const CHAT_CONVERSATION_BLOCKS_FETCH_REQUEST = 'CHAT_CONVERSATION_BLOCKS_FETCH_REQUEST'
|
||||
export const CHAT_CONVERSATION_BLOCKS_FETCH_SUCCESS = 'CHAT_CONVERSATION_BLOCKS_FETCH_SUCCESS'
|
||||
export const CHAT_CONVERSATION_BLOCKS_FETCH_FAIL = 'CHAT_CONVERSATION_BLOCKS_FETCH_FAIL'
|
||||
|
||||
export const CHAT_CONVERSATION_BLOCKS_EXPAND_REQUEST = 'CHAT_CONVERSATION_BLOCKS_EXPAND_REQUEST'
|
||||
export const CHAT_CONVERSATION_BLOCKS_EXPAND_SUCCESS = 'CHAT_CONVERSATION_BLOCKS_EXPAND_SUCCESS'
|
||||
export const CHAT_CONVERSATION_BLOCKS_EXPAND_FAIL = 'CHAT_CONVERSATION_BLOCKS_EXPAND_FAIL'
|
||||
|
||||
export const BLOCK_MESSAGER_REQUEST = 'BLOCK_MESSAGER_REQUEST'
|
||||
export const BLOCK_MESSAGER_SUCCESS = 'BLOCK_MESSAGER_SUCCESS'
|
||||
@@ -21,13 +43,13 @@ export const UNBLOCK_MESSAGER_FAIL = 'UNBLOCK_MESSAGER_FAIL'
|
||||
|
||||
//
|
||||
|
||||
export const CONVERSATION_MUTES_FETCH_REQUEST = 'CONVERSATION_MUTES_FETCH_REQUEST'
|
||||
export const CONVERSATION_MUTES_FETCH_SUCCESS = 'CONVERSATION_MUTES_FETCH_SUCCESS'
|
||||
export const CONVERSATION_MUTES_FETCH_FAIL = 'CONVERSATION_MUTES_FETCH_FAIL'
|
||||
export const CHAT_CONVERSATION_MUTES_FETCH_REQUEST = 'CHAT_CONVERSATION_MUTES_FETCH_REQUEST'
|
||||
export const CHAT_CONVERSATION_MUTES_FETCH_SUCCESS = 'CHAT_CONVERSATION_MUTES_FETCH_SUCCESS'
|
||||
export const CHAT_CONVERSATION_MUTES_FETCH_FAIL = 'CHAT_CONVERSATION_MUTES_FETCH_FAIL'
|
||||
|
||||
export const CONVERSATION_MUTES_EXPAND_REQUEST = 'CONVERSATION_MUTES_EXPAND_REQUEST'
|
||||
export const CONVERSATION_MUTES_EXPAND_SUCCESS = 'CONVERSATION_MUTES_EXPAND_SUCCESS'
|
||||
export const CONVERSATION_MUTES_EXPAND_FAIL = 'CONVERSATION_MUTES_EXPAND_FAIL'
|
||||
export const CHAT_CONVERSATION_MUTES_EXPAND_REQUEST = 'CHAT_CONVERSATION_MUTES_EXPAND_REQUEST'
|
||||
export const CHAT_CONVERSATION_MUTES_EXPAND_SUCCESS = 'CHAT_CONVERSATION_MUTES_EXPAND_SUCCESS'
|
||||
export const CHAT_CONVERSATION_MUTES_EXPAND_FAIL = 'CHAT_CONVERSATION_MUTES_EXPAND_FAIL'
|
||||
|
||||
export const MUTE_MESSAGER_REQUEST = 'BLOCK_MESSAGER_REQUEST'
|
||||
export const MUTE_MESSAGER_SUCCESS = 'BLOCK_MESSAGER_SUCCESS'
|
||||
@@ -39,25 +61,238 @@ export const UNMUTE_MESSAGER_FAIL = 'UNMUTE_MESSAGER_FAIL'
|
||||
|
||||
//
|
||||
|
||||
export const CONVERSATION_REQUEST_APPROVE_SUCCESS = 'CONVERSATION_REQUEST_APPROVE_SUCCESS'
|
||||
export const CONVERSATION_REQUEST_APPROVE_FAIL = 'CONVERSATION_REQUEST_APPROVE_FAIL'
|
||||
export const CHAT_CONVERSATION_REQUESTED_COUNT_FETCH_SUCCESS = 'CHAT_CONVERSATION_REQUESTED_COUNT_FETCH_SUCCESS'
|
||||
|
||||
export const CONVERSATION_REQUEST_REJECT_SUCCESS = 'CONVERSATION_REQUEST_REJECT_SUCCESS'
|
||||
export const CONVERSATION_REQUEST_REJECT_FAIL = 'CONVERSATION_REQUEST_REJECT_FAIL'
|
||||
export const CHAT_CONVERSATIONS_REQUESTED_FETCH_REQUEST = 'CHAT_CONVERSATIONS_REQUESTED_FETCH_REQUEST'
|
||||
export const CHAT_CONVERSATIONS_REQUESTED_FETCH_SUCCESS = 'CHAT_CONVERSATIONS_REQUESTED_FETCH_SUCCESS'
|
||||
export const CHAT_CONVERSATIONS_REQUESTED_FETCH_FAIL = 'CHAT_CONVERSATIONS_REQUESTED_FETCH_FAIL'
|
||||
|
||||
export const CONVERSATION_DELETE_REQUEST = 'CONVERSATION_DELETE_REQUEST'
|
||||
export const CONVERSATION_DELETE_SUCCESS = 'CONVERSATION_DELETE_SUCCESS'
|
||||
export const CONVERSATION_DELETE_FAIL = 'CONVERSATION_DELETE_FAIL'
|
||||
export const CHAT_CONVERSATIONS_REQUESTED_EXPAND_REQUEST = 'CHAT_CONVERSATIONS_REQUESTED_EXPAND_REQUEST'
|
||||
export const CHAT_CONVERSATIONS_REQUESTED_EXPAND_SUCCESS = 'CHAT_CONVERSATIONS_REQUESTED_EXPAND_SUCCESS'
|
||||
export const CHAT_CONVERSATIONS_REQUESTED_EXPAND_FAIL = 'CHAT_CONVERSATIONS_REQUESTED_EXPAND_FAIL'
|
||||
|
||||
//
|
||||
|
||||
export const CONVERSATIONS_FETCH_REQUEST = 'CONVERSATIONS_FETCH_REQUEST'
|
||||
export const CONVERSATIONS_FETCH_SUCCESS = 'CONVERSATIONS_FETCH_SUCCESS'
|
||||
export const CONVERSATIONS_FETCH_FAIL = 'CONVERSATIONS_FETCH_FAIL'
|
||||
export const CHAT_CONVERSATION_REQUEST_APPROVE_SUCCESS = 'CHAT_CONVERSATION_REQUEST_APPROVE_SUCCESS'
|
||||
export const CHAT_CONVERSATION_REQUEST_APPROVE_FAIL = 'CHAT_CONVERSATION_REQUEST_APPROVE_FAIL'
|
||||
|
||||
export const CHAT_CONVERSATION_DELETE_REQUEST = 'CHAT_CONVERSATION_DELETE_REQUEST'
|
||||
export const CHAT_CONVERSATION_DELETE_SUCCESS = 'CHAT_CONVERSATION_DELETE_SUCCESS'
|
||||
export const CHAT_CONVERSATION_DELETE_FAIL = 'CHAT_CONVERSATION_DELETE_FAIL'
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const fetchChatConversations = () => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
|
||||
dispatch(fetchChatConversationsRequest())
|
||||
|
||||
api(getState).get('/api/v1/chat_conversations/approved_conversations').then((response) => {
|
||||
console.log("chat_conversations response: ", response)
|
||||
|
||||
const next = getLinks(response).refs.find(link => link.rel === 'next')
|
||||
const conversationsAccounts = [].concat.apply([], response.data.map((c) => c.other_accounts))
|
||||
const conversationsChatMessages = response.data.map((c) => c.last_chat_message)
|
||||
|
||||
dispatch(importFetchedAccounts(conversationsAccounts))
|
||||
// dispatch(importFetchedChatMessages(conversationsChatMessages))
|
||||
dispatch(fetchChatConversationsSuccess(response.data, next ? next.uri : null))
|
||||
}).catch((error) => {
|
||||
console.log("fetchChatConversationsFail:", error)
|
||||
dispatch(fetchChatConversationsFail(error))
|
||||
})
|
||||
}
|
||||
|
||||
export const fetchChatConversationsRequest = () => ({
|
||||
type: CHAT_CONVERSATIONS_APPROVED_FETCH_REQUEST,
|
||||
})
|
||||
|
||||
export const fetchChatConversationsSuccess = (chatConversations, next) => ({
|
||||
type: CHAT_CONVERSATIONS_APPROVED_FETCH_SUCCESS,
|
||||
chatConversations,
|
||||
next,
|
||||
})
|
||||
|
||||
export const fetchChatConversationsFail = (error) => ({
|
||||
type: CHAT_CONVERSATIONS_APPROVED_FETCH_FAIL,
|
||||
error,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const expandChatConversations = () => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
|
||||
const url = getState().getIn(['chat_conversations', 'approved', 'next'])
|
||||
const isLoading = getState().getIn(['chat_conversations', 'approved', 'isLoading'])
|
||||
|
||||
if (url === null || isLoading) return
|
||||
|
||||
dispatch(expandChatConversationsRequest())
|
||||
|
||||
api(getState).get(url).then(response => {
|
||||
const next = getLinks(response).refs.find(link => link.rel === 'next')
|
||||
const conversationsAccounts = [].concat.apply([], response.data.map((c) => c.other_accounts))
|
||||
const conversationsChatMessages = response.data.map((c) => c.last_chat_message)
|
||||
|
||||
dispatch(importFetchedAccounts(conversationsAccounts))
|
||||
// dispatch(importFetchedChatMessages(conversationsChatMessages))
|
||||
dispatch(expandChatConversationsSuccess(response.data, next ? next.uri : null))
|
||||
}).catch(error => dispatch(expandChatConversationsFail(error)))
|
||||
}
|
||||
|
||||
export const expandChatConversationsRequest = () => ({
|
||||
type: CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS,
|
||||
})
|
||||
|
||||
export const expandChatConversationsSuccess = (chatConversations, next) => ({
|
||||
type: CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS,
|
||||
chatConversations,
|
||||
next,
|
||||
})
|
||||
|
||||
export const expandChatConversationsFail = (error) => ({
|
||||
type: CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS,
|
||||
error,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const fetchChatConversationRequested = () => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
|
||||
dispatch(fetchChatConversationRequestedRequest())
|
||||
|
||||
api(getState).get('/api/v1/chat_conversations/requested_conversations').then((response) => {
|
||||
const next = getLinks(response).refs.find(link => link.rel === 'next')
|
||||
const conversationsAccounts = [].concat.apply([], response.data.map((c) => c.other_accounts))
|
||||
const conversationsChatMessages = response.data.map((c) => c.last_chat_message)
|
||||
|
||||
dispatch(importFetchedAccounts(conversationsAccounts))
|
||||
// dispatch(importFetchedChatMessages(conversationsChatMessages))
|
||||
dispatch(fetchChatConversationRequestedSuccess(response.data, next ? next.uri : null))
|
||||
}).catch((error) => {
|
||||
console.log("error:", error)
|
||||
dispatch(fetchChatConversationRequestedFail(error))
|
||||
})
|
||||
}
|
||||
|
||||
export const fetchChatConversationRequestedRequest = () => ({
|
||||
type: CHAT_CONVERSATIONS_REQUESTED_FETCH_REQUEST,
|
||||
})
|
||||
|
||||
export const fetchChatConversationRequestedSuccess = (chatConversations, next) => ({
|
||||
type: CHAT_CONVERSATIONS_REQUESTED_FETCH_SUCCESS,
|
||||
chatConversations,
|
||||
next,
|
||||
})
|
||||
|
||||
export const fetchChatConversationRequestedFail = (error) => ({
|
||||
type: CHAT_CONVERSATIONS_REQUESTED_FETCH_FAIL,
|
||||
error,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const expandChatConversationRequested = () => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
|
||||
const url = getState().getIn(['chat_conversations', 'requested', 'next'])
|
||||
const isLoading = getState().getIn(['chat_conversations', 'requested', 'isLoading'])
|
||||
|
||||
if (url === null || isLoading) return
|
||||
|
||||
dispatch(expandChatConversationRequestedRequest())
|
||||
|
||||
api(getState).get(url).then(response => {
|
||||
const next = getLinks(response).refs.find(link => link.rel === 'next')
|
||||
const conversationsAccounts = [].concat.apply([], response.data.map((c) => c.other_accounts))
|
||||
const conversationsChatMessages = response.data.map((c) => c.last_chat_message)
|
||||
|
||||
dispatch(importFetchedAccounts(conversationsAccounts))
|
||||
// dispatch(importFetchedChatMessages(conversationsChatMessages))
|
||||
dispatch(expandChatConversationRequestedSuccess(response.data, next ? next.uri : null))
|
||||
}).catch(error => dispatch(expandChatConversationRequestedFail(error)))
|
||||
}
|
||||
|
||||
export const expandChatConversationRequestedRequest = () => ({
|
||||
type: CHAT_CONVERSATIONS_REQUESTED_EXPAND_REQUEST,
|
||||
})
|
||||
|
||||
export const expandChatConversationRequestedSuccess = (chatConversations, next) => ({
|
||||
type: CHAT_CONVERSATIONS_REQUESTED_EXPAND_SUCCESS,
|
||||
chatConversations,
|
||||
next,
|
||||
})
|
||||
|
||||
export const expandChatConversationRequestedFail = (error) => ({
|
||||
type: CHAT_CONVERSATIONS_REQUESTED_EXPAND_FAIL,
|
||||
error,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const createChatConversation = (accountId) => (dispatch, getState) => {
|
||||
if (!me || !accountId) return
|
||||
|
||||
dispatch(createChatConversationRequest())
|
||||
|
||||
api(getState).post('/api/v1/chat_conversation', { account_id: accountId }).then((response) => {
|
||||
dispatch(createChatConversationSuccess(response.data))
|
||||
}).catch((error) => {
|
||||
dispatch(createChatConversationFail(error))
|
||||
})
|
||||
}
|
||||
|
||||
export const createChatConversationRequest = () => ({
|
||||
type: CHAT_CONVERSATIONS_CREATE_REQUEST,
|
||||
})
|
||||
|
||||
export const createChatConversationSuccess = (chatConversation) => ({
|
||||
type: CHAT_CONVERSATIONS_CREATE_SUCCESS,
|
||||
chatConversation,
|
||||
})
|
||||
|
||||
export const createChatConversationFail = (error) => ({
|
||||
type: CHAT_CONVERSATIONS_CREATE_FAIL,
|
||||
error,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const deleteChatConversation = (chatConversationId) => (dispatch, getState) => {
|
||||
if (!me || !chatConversationId) return
|
||||
|
||||
dispatch(deleteChatConversationRequest(conversationId))
|
||||
|
||||
api(getState).delete(`/api/v1/chat_conversation/${chatConversationId}`).then((response) => {
|
||||
console.log("chat_conversations delete response: ", response)
|
||||
dispatch(deleteChatConversationSuccess())
|
||||
}).catch((error) => {
|
||||
dispatch(deleteChatConversationFail(error))
|
||||
})
|
||||
}
|
||||
|
||||
export const deleteChatConversationRequest = (conversationId) => ({
|
||||
type: CHAT_CONVERSATIONS_DELETE_REQUEST,
|
||||
conversationId,
|
||||
})
|
||||
|
||||
export const deleteChatConversationSuccess = () => ({
|
||||
type: CHAT_CONVERSATIONS_DELETE_SUCCESS,
|
||||
})
|
||||
|
||||
export const deleteChatConversationFail = (error) => ({
|
||||
type: CHAT_CONVERSATIONS_DELETE_FAIL,
|
||||
error,
|
||||
})
|
||||
|
||||
export const CONVERSATIONS_EXPAND_REQUEST = 'CONVERSATIONS_EXPAND_REQUEST'
|
||||
export const CONVERSATIONS_EXPAND_SUCCESS = 'CONVERSATIONS_EXPAND_SUCCESS'
|
||||
export const CONVERSATIONS_EXPAND_FAIL = 'CONVERSATIONS_EXPAND_FAIL'
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -110,12 +345,12 @@ const unblockMessengerRequest = (accountId) => ({
|
||||
accountId,
|
||||
})
|
||||
|
||||
const blockMessengerSuccess = (data) => ({
|
||||
const unblockMessengerSuccess = (data) => ({
|
||||
type: UNBLOCK_MESSAGER_REQUEST,
|
||||
data,
|
||||
})
|
||||
|
||||
const blockMessengerFail = (accountId, error) => ({
|
||||
const unblockMessengerFail = (accountId, error) => ({
|
||||
type: UNBLOCK_MESSAGER_REQUEST,
|
||||
accountId,
|
||||
error,
|
||||
@@ -137,20 +372,20 @@ export const fetchBlocks = () => (dispatch, getState) => {
|
||||
}).catch(error => dispatch(fetchBlocksFail(error)))
|
||||
}
|
||||
|
||||
export const fetchBlocksRequest = () => ({
|
||||
type: BLOCKS_FETCH_REQUEST,
|
||||
})
|
||||
// export const fetchBlocksRequest = () => ({
|
||||
// type: BLOCKS_FETCH_REQUEST,
|
||||
// })
|
||||
|
||||
export const fetchBlocksSuccess = (accounts, next) => ({
|
||||
type: BLOCKS_FETCH_SUCCESS,
|
||||
accounts,
|
||||
next,
|
||||
})
|
||||
// export const fetchBlocksSuccess = (accounts, next) => ({
|
||||
// type: BLOCKS_FETCH_SUCCESS,
|
||||
// accounts,
|
||||
// next,
|
||||
// })
|
||||
|
||||
export const fetchBlocksFail = (error) => ({
|
||||
type: BLOCKS_FETCH_FAIL,
|
||||
error,
|
||||
})
|
||||
// export const fetchBlocksFail = (error) => ({
|
||||
// type: BLOCKS_FETCH_FAIL,
|
||||
// error,
|
||||
// })
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -173,17 +408,51 @@ export const expandBlocks = () => (dispatch, getState) => {
|
||||
}).catch(error => dispatch(expandBlocksFail(error)))
|
||||
}
|
||||
|
||||
export const expandBlocksRequest = () => ({
|
||||
type: BLOCKS_EXPAND_REQUEST,
|
||||
// export const expandBlocksRequest = () => ({
|
||||
// type: BLOCKS_EXPAND_REQUEST,
|
||||
// })
|
||||
|
||||
// export const expandBlocksSuccess = (accounts, next) => ({
|
||||
// type: BLOCKS_EXPAND_SUCCESS,
|
||||
// accounts,
|
||||
// next,
|
||||
// })
|
||||
|
||||
// export const expandBlocksFail = (error) => ({
|
||||
// type: BLOCKS_EXPAND_FAIL,
|
||||
// error,
|
||||
// })
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const fetchChatConversationRequestedCount = () => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
|
||||
api(getState).get('/api/v1/chat_conversations/requested_conversations/count').then(response => {
|
||||
dispatch({
|
||||
type: CHAT_CONVERSATION_REQUESTED_COUNT_FETCH_SUCCESS,
|
||||
count: response.data,
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const approveChatConversationRequest = (chatConversationId) => (dispatch, getState) => {
|
||||
if (!me|| !chatConversationId) return
|
||||
|
||||
api(getState).post(`/api/v1/chat_conversation/${chatConversationId}/mark_chat_conversation_approved`).then((response) => {
|
||||
dispatch(approveChatConversationRequestSuccess(response.data))
|
||||
}).catch((error) => dispatch(approveChatConversationRequestFail(error)))
|
||||
}
|
||||
|
||||
export const approveChatConversationRequestSuccess = (chatConversation) => ({
|
||||
type: CHAT_CONVERSATION_REQUEST_APPROVE_SUCCESS,
|
||||
chatConversation,
|
||||
})
|
||||
|
||||
export const expandBlocksSuccess = (accounts, next) => ({
|
||||
type: BLOCKS_EXPAND_SUCCESS,
|
||||
accounts,
|
||||
next,
|
||||
})
|
||||
|
||||
export const expandBlocksFail = (error) => ({
|
||||
type: BLOCKS_EXPAND_FAIL,
|
||||
error,
|
||||
})
|
||||
export const approveChatConversationRequestFail = () => ({
|
||||
type: CHAT_CONVERSATION_REQUEST_APPROVE_FAIL,
|
||||
})
|
||||
@@ -1,86 +1,85 @@
|
||||
import { Map as ImmutableMap, List as ImmutableList, toJS } from 'immutable'
|
||||
import noop from 'lodash.noop'
|
||||
import api from '../api'
|
||||
import { me } from '../initial_state'
|
||||
import { importFetchedChatMessages } from './importer'
|
||||
|
||||
export const MESSAGE_SEND_REQUEST = 'MESSAGE_SEND_REQUEST'
|
||||
export const MESSAGE_SEND_SUCCESS = 'MESSAGE_SEND_SUCCESS'
|
||||
export const MESSAGE_SEND_FAIL = 'MESSAGE_SEND_FAIL'
|
||||
export const CHAT_MESSAGES_SEND_REQUEST = 'CHAT_MESSAGES_SEND_REQUEST'
|
||||
export const CHAT_MESSAGES_SEND_SUCCESS = 'CHAT_MESSAGES_SEND_SUCCESS'
|
||||
export const CHAT_MESSAGES_SEND_FAIL = 'CHAT_MESSAGES_SEND_FAIL'
|
||||
|
||||
export const MESSAGE_DELETE_REQUEST = 'MESSAGE_DELETE_REQUEST'
|
||||
export const MESSAGE_DELETE_SUCCESS = 'MESSAGE_DELETE_SUCCESS'
|
||||
export const MESSAGE_DELETE_FAIL = 'MESSAGE_DELETE_FAIL'
|
||||
export const CHAT_MESSAGES_DELETE_REQUEST = 'CHAT_MESSAGES_DELETE_REQUEST'
|
||||
export const CHAT_MESSAGES_DELETE_SUCCESS = 'CHAT_MESSAGES_DELETE_SUCCESS'
|
||||
export const CHAT_MESSAGES_DELETE_FAIL = 'CHAT_MESSAGES_DELETE_FAIL'
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
const sendMessage = (text, conversationId) => (dispatch, getState) => {
|
||||
if (!me) return
|
||||
export const sendChatMessage = (text = '', chatConversationId) => (dispatch, getState) => {
|
||||
if (!me || !chatConversationId) return
|
||||
if (text.length === 0) return
|
||||
|
||||
// : todo :
|
||||
// let text = getState().getIn(['chat_messages', 'text'], '')
|
||||
// let conversationId = getState().getIn(['chat_messags', 'conversation_id'], '')
|
||||
|
||||
dispatch(sendMessageRequest())
|
||||
|
||||
api(getState).put('/api/v1/messages/chat', {
|
||||
api(getState).post('/api/v1/chat_messages', {
|
||||
text,
|
||||
conversationId,
|
||||
chat_conversation_id: chatConversationId,
|
||||
}, {
|
||||
headers: {
|
||||
'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']),
|
||||
},
|
||||
// headers: {
|
||||
// 'Idempotency-Key': getState().getIn(['chat_compose`', 'idempotencyKey']),
|
||||
// },
|
||||
}).then((response) => {
|
||||
sendMessageSuccess(response)
|
||||
dispatch(importFetchedChatMessages([response.data]))
|
||||
dispatch(sendMessageSuccess(response.data, chatConversationId))
|
||||
}).catch((error) => {
|
||||
dispatch(sendMessageFail(error))
|
||||
})
|
||||
}
|
||||
|
||||
const sendMessageRequest = (text, conversationId) => ({
|
||||
type: MESSAGE_SEND_REQUEST,
|
||||
text,
|
||||
conversationId,
|
||||
const sendMessageRequest = () => ({
|
||||
type: CHAT_MESSAGES_SEND_REQUEST,
|
||||
})
|
||||
|
||||
const sendMessageSuccess = () => ({
|
||||
type: MESSAGE_SEND_SUCCESS,
|
||||
const sendMessageSuccess = (chatMessage, chatConversationId) => ({
|
||||
type: CHAT_MESSAGES_SEND_SUCCESS,
|
||||
chatMessage,
|
||||
chatConversationId,
|
||||
})
|
||||
|
||||
const sendMessageFail = (error) => ({
|
||||
type: MESSAGE_SEND_FAIL,
|
||||
type: CHAT_MESSAGES_SEND_FAIL,
|
||||
error,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
const deleteMessage = (messageId) => (dispatch, getState) => {
|
||||
if (!me || !messageId) return
|
||||
const deleteMessage = (chatMessageId) => (dispatch, getState) => {
|
||||
if (!me || !chatMessageId) return
|
||||
|
||||
// : todo :
|
||||
|
||||
dispatch(sendMessageRequest())
|
||||
dispatch(deleteMessageRequest(chatMessageId))
|
||||
|
||||
api(getState).delete(`/api/v1/messages/chat/${messageId}`, {}, {
|
||||
headers: {
|
||||
'Idempotency-Key': getState().getIn(['compose', 'idempotencyKey']),
|
||||
},
|
||||
api(getState).delete(`/api/v1/chat_messages/${chatMessageId}`, {}, {
|
||||
// headers: {
|
||||
// 'Idempotency-Key': getState().getIn(['chat_compose', 'idempotencyKey']),
|
||||
// },
|
||||
}).then((response) => {
|
||||
sendMessageSuccess(response)
|
||||
deleteMessageSuccess(response)
|
||||
}).catch((error) => {
|
||||
dispatch(sendMessageFail(error))
|
||||
dispatch(deleteMessageFail(error))
|
||||
})
|
||||
}
|
||||
|
||||
const deleteMessageRequest = (messageId) => ({
|
||||
type: MESSAGE_DELETE_REQUEST,
|
||||
messageId,
|
||||
const deleteMessageRequest = (chatMessageId) => ({
|
||||
type: CHAT_MESSAGES_DELETE_REQUEST,
|
||||
chatMessageId,
|
||||
})
|
||||
|
||||
const deleteMessageSuccess = () => ({
|
||||
type: MESSAGE_DELETE_SUCCESS,
|
||||
type: CHAT_MESSAGES_DELETE_SUCCESS,
|
||||
})
|
||||
|
||||
const deleteMessageFail = (error) => ({
|
||||
type: MESSAGE_DELETE_FAIL,
|
||||
type: CHAT_MESSAGES_DELETE_FAIL,
|
||||
error,
|
||||
})
|
||||
41
app/javascript/gabsocial/actions/chats.js
Normal file
41
app/javascript/gabsocial/actions/chats.js
Normal file
@@ -0,0 +1,41 @@
|
||||
import throttle from 'lodash.throttle'
|
||||
import api, { getLinks } from '../api'
|
||||
import { importFetchedAccounts } from './importer'
|
||||
import { me } from '../initial_state'
|
||||
|
||||
export const CHAT_CONVERSATION_CREATE_SEARCH_ACCOUNTS_SUCCESS = 'CHAT_CONVERSATION_CREATE_SEARCH_ACCOUNTS_SUCCESS'
|
||||
|
||||
export const SET_CHAT_CONVERSATION_SELECTED = 'SET_CHAT_CONVERSATION_SELECTED'
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const fetchChatConversationAccountSuggestions = (query) => throttle((dispatch, getState) => {
|
||||
api(getState).get('/api/v1/accounts/search', {
|
||||
params: {
|
||||
q: query,
|
||||
resolve: false,
|
||||
limit: 4,
|
||||
},
|
||||
}).then((response) => {
|
||||
dispatch(importFetchedAccounts(response.data))
|
||||
dispatch(fetchChatConversationAccountSuggestionsSuccess(response.data))
|
||||
}).catch((error) => {
|
||||
//
|
||||
})
|
||||
}, 200, { leading: true, trailing: true })
|
||||
|
||||
const fetchChatConversationAccountSuggestionsSuccess = (accounts) => ({
|
||||
type: CHAT_CONVERSATION_CREATE_SEARCH_ACCOUNTS_SUCCESS,
|
||||
accounts,
|
||||
})
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const setChatConversationSelected = (chatConversationId) => (dispatch) => {
|
||||
dispatch({
|
||||
type: SET_CHAT_CONVERSATION_SELECTED,
|
||||
chatConversationId,
|
||||
})
|
||||
}
|
||||
@@ -12,6 +12,7 @@ export const ACCOUNTS_IMPORT = 'ACCOUNTS_IMPORT'
|
||||
export const STATUS_IMPORT = 'STATUS_IMPORT'
|
||||
export const STATUSES_IMPORT = 'STATUSES_IMPORT'
|
||||
export const POLLS_IMPORT = 'POLLS_IMPORT'
|
||||
export const CHAT_MESSAGES_IMPORT = 'CHAT_MESSAGES_IMPORT'
|
||||
export const ACCOUNT_FETCH_FAIL_FOR_USERNAME_LOOKUP = 'ACCOUNT_FETCH_FAIL_FOR_USERNAME_LOOKUP'
|
||||
|
||||
/**
|
||||
@@ -48,6 +49,11 @@ export const importPolls = (polls) => ({
|
||||
polls,
|
||||
})
|
||||
|
||||
export const importChatMessages = (chatMessages) => ({
|
||||
type: CHAT_MESSAGES_IMPORT,
|
||||
chatMessages,
|
||||
})
|
||||
|
||||
export const importFetchedAccount = (account) => {
|
||||
return importFetchedAccounts([account]);
|
||||
}
|
||||
@@ -97,7 +103,7 @@ export const importFetchedStatuses = (statuses) => (dispatch, getState) => {
|
||||
}
|
||||
}
|
||||
|
||||
statuses.forEach(processStatus)
|
||||
statuses.forEach(processStatus)
|
||||
|
||||
dispatch(importPolls(polls))
|
||||
dispatch(importFetchedAccounts(accounts))
|
||||
@@ -113,3 +119,7 @@ export const importErrorWhileFetchingAccountByUsername = (username) => ({
|
||||
type: ACCOUNT_FETCH_FAIL_FOR_USERNAME_LOOKUP,
|
||||
username
|
||||
})
|
||||
|
||||
export const importFetchedChatMessages = (chatMessages) => (dispatch, getState) => {
|
||||
dispatch(importChatMessages(chatMessages))
|
||||
}
|
||||
@@ -297,7 +297,7 @@ export const fetchListSuggestions = (q) => (dispatch, getState) => {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const fetchListSuggestionsReady = (query, accounts) => ({
|
||||
const fetchListSuggestionsReady = (query, accounts) => ({
|
||||
type: LIST_EDITOR_SUGGESTIONS_READY,
|
||||
query,
|
||||
accounts,
|
||||
|
||||
@@ -75,15 +75,18 @@ export const connectUserStream = () => connectTimelineStream('home', 'user')
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export const connectMessageStream = () => {
|
||||
|
||||
return connectStream('chat_messages', null, (dispatch, getState) => {
|
||||
|
||||
export const connectChatMessagesStream = (accountId) => {
|
||||
return connectStream(`chat_messages:${accountId}`, null, (dispatch, getState) => {
|
||||
return {
|
||||
onConnect() {},
|
||||
onDisconnect() {},
|
||||
onConnect() {
|
||||
// console.log("chat messages connected")
|
||||
},
|
||||
onDisconnect() {
|
||||
// console.log("chat messages disconnected")
|
||||
},
|
||||
onReceive (data) {
|
||||
//
|
||||
// : todo :
|
||||
console.log("chat messages onReceive:", data)
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user