gab-social/app/javascript/gabsocial/actions/chat_conversation_accounts.js
mgabdev 6fbea0a59e Progress on little important things
removing .mov for now until we can figure out solution with videojs, added model to track username changes, got chat creation flow down, progress on bookmark collections, albums, filtering blocks/mutes from group, explore, collection timelines
2020-12-22 01:36:38 -05:00

250 lines
7.4 KiB
JavaScript

import api, { getLinks } from '../api'
import { importFetchedAccounts } from './importer'
import { me } from '../initial_state'
//
export const CHAT_MESSENGER_BLOCKS_FETCH_REQUEST = 'CHAT_MESSENGER_BLOCKS_FETCH_REQUEST'
export const CHAT_MESSENGER_BLOCKS_FETCH_SUCCESS = 'CHAT_MESSENGER_BLOCKS_FETCH_SUCCESS'
export const CHAT_MESSENGER_BLOCKS_FETCH_FAIL = 'CHAT_MESSENGER_BLOCKS_FETCH_FAIL'
export const CHAT_MESSENGER_BLOCKS_EXPAND_REQUEST = 'CHAT_MESSENGER_BLOCKS_EXPAND_REQUEST'
export const CHAT_MESSENGER_BLOCKS_EXPAND_SUCCESS = 'CHAT_MESSENGER_BLOCKS_EXPAND_SUCCESS'
export const CHAT_MESSENGER_BLOCKS_EXPAND_FAIL = 'CHAT_MESSENGER_BLOCKS_EXPAND_FAIL'
export const BLOCK_CHAT_MESSAGER_REQUEST = 'BLOCK_CHAT_MESSAGER_REQUEST'
export const BLOCK_CHAT_MESSAGER_SUCCESS = 'BLOCK_CHAT_MESSAGER_SUCCESS'
export const BLOCK_CHAT_MESSAGER_FAIL = 'BLOCK_CHAT_MESSAGER_FAIL'
export const UNBLOCK_CHAT_MESSAGER_REQUEST = 'UNBLOCK_CHAT_MESSAGER_REQUEST'
export const UNBLOCK_CHAT_MESSAGER_SUCCESS = 'UNBLOCK_CHAT_MESSAGER_SUCCESS'
export const UNBLOCK_CHAT_MESSAGER_FAIL = 'UNBLOCK_CHAT_MESSAGER_FAIL'
export const FETCH_CHAT_MESSENGER_BLOCKING_RELATIONSHIPS_SUCCESS = 'FETCH_CHAT_MESSENGER_BLOCKING_RELATIONSHIPS_SUCCESS'
//
export const MUTE_CHAT_CONVERSATION_REQUEST = 'MUTE_CHAT_CONVERSATION_REQUEST'
export const MUTE_CHAT_CONVERSATION_SUCCESS = 'MUTE_CHAT_CONVERSATION_SUCCESS'
export const MUTE_CHAT_CONVERSATION_FAIL = 'MUTE_CHAT_CONVERSATION_FAIL'
export const UNMUTE_CHAT_CONVERSATION_REQUEST = 'UNMUTE_CHAT_CONVERSATION_REQUEST'
export const UNMUTE_CHAT_CONVERSATION_SUCCESS = 'UNMUTE_CHAT_CONVERSATION_SUCCESS'
export const UNMUTE_CHAT_CONVERSATION_FAIL = 'UNMUTE_CHAT_CONVERSATION_FAIL'
/**
*
*/
export const blockChatMessenger = (accountId) => (dispatch, getState) => {
if (!me || !accountId) return
dispatch(blockChatMessengerRequest(accountId))
api(getState).post(`/api/v1/chat_conversation_accounts/_/block_messenger`, { account_id: accountId }).then((response) => {
dispatch(blockChatMessengerSuccess(response))
}).catch((error) => {
dispatch(blockChatMessengerFail(accountId, error))
})
}
const blockChatMessengerRequest = (accountId) => ({
type: BLOCK_CHAT_MESSAGER_REQUEST,
accountId,
})
const blockChatMessengerSuccess = (data) => ({
type: BLOCK_CHAT_MESSAGER_SUCCESS,
data,
showToast: true,
})
const blockChatMessengerFail = (accountId, error) => ({
type: BLOCK_CHAT_MESSAGER_FAIL,
showToast: true,
accountId,
error,
})
/**
*
*/
export const unblockChatMessenger = (accountId) => (dispatch, getState) => {
if (!me || !accountId) return
dispatch(unblockChatMessengerRequest(accountId))
api(getState).post(`/api/v1/chat_conversation_accounts/_/unblock_messenger`, { account_id: accountId }).then((response) => {
dispatch(unblockChatMessengerSuccess(response))
}).catch((error) => {
dispatch(unblockChatMessengerFail(accountId, error))
})
}
const unblockChatMessengerRequest = (accountId) => ({
type: UNBLOCK_CHAT_MESSAGER_REQUEST,
accountId,
})
const unblockChatMessengerSuccess = (data) => ({
type: UNBLOCK_CHAT_MESSAGER_SUCCESS,
data,
showToast: true,
})
const unblockChatMessengerFail = (accountId, error) => ({
type: UNBLOCK_CHAT_MESSAGER_FAIL,
showToast: true,
accountId,
error,
})
/**
* @description Check if a chat messenger is blocked by the current user account.
* @param {String} accountId
*/
export const fetchMessengerBlockingRelationships = (accountId) => (dispatch, getState) => {
if (!me || !accountId) return
api(getState).post(`/api/v1/chat_conversation_accounts/_/messenger_block_relationships`, { account_id: accountId }).then((response) => {
dispatch(fetchMessengerBlockingRelationshipsSuccess(response.data))
})
}
const fetchMessengerBlockingRelationshipsSuccess = (data) => ({
type: FETCH_CHAT_MESSENGER_BLOCKING_RELATIONSHIPS_SUCCESS,
data,
})
/**
*
*/
export const fetchChatMessengerBlocks = () => (dispatch, getState) => {
if (!me) return
dispatch(fetchChatMessengerBlocksRequest())
api(getState).get('/api/v1/chat_conversations/blocked_chat_accounts').then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next')
dispatch(importFetchedAccounts(response.data))
dispatch(fetchChatMessengerBlocksSuccess(response.data, next ? next.uri : null))
}).catch(error => dispatch(fetchChatMessengerBlocksFail(error)))
}
export const fetchChatMessengerBlocksRequest = () => ({
type: CHAT_MESSENGER_BLOCKS_FETCH_REQUEST,
})
export const fetchChatMessengerBlocksSuccess = (accounts, next) => ({
type: CHAT_MESSENGER_BLOCKS_FETCH_SUCCESS,
accounts,
next,
})
export const fetchChatMessengerBlocksFail = (error) => ({
type: CHAT_MESSENGER_BLOCKS_FETCH_FAIL,
showToast: true,
error,
})
/**
*
*/
export const expandChatMessengerBlocks = () => (dispatch, getState) => {
if (!me) return
const url = getState().getIn(['user_lists', 'chat_blocks', me, 'next'])
const isLoading = getState().getIn(['user_lists', 'chat_blocks', me, 'isLoading'])
if (url === null || isLoading) return
dispatch(expandChatMessengerBlocksRequest())
api(getState).get(url).then(response => {
const next = getLinks(response).refs.find(link => link.rel === 'next')
dispatch(importFetchedAccounts(response.data))
dispatch(expandChatMessengerBlocksSuccess(response.data, next ? next.uri : null))
}).catch(error => dispatch(expandChatMessengerBlocksFail(error)))
}
export const expandChatMessengerBlocksRequest = () => ({
type: CHAT_MESSENGER_BLOCKS_EXPAND_REQUEST,
})
export const expandChatMessengerBlocksSuccess = (accounts, next) => ({
type: CHAT_MESSENGER_BLOCKS_EXPAND_SUCCESS,
accounts,
next,
})
export const expandChatMessengerBlocksFail = (error) => ({
type: CHAT_MESSENGER_BLOCKS_EXPAND_FAIL,
error,
})
//
/**
*
*/
export const muteChatConversation = (chatConversationId) => (dispatch, getState) => {
if (!me || !chatConversationId) return
dispatch(muteChatConversationRequest(chatConversationId))
api(getState).post(`/api/v1/chat_conversation_accounts/${chatConversationId}/mute_chat_conversation`).then((response) => {
dispatch(muteChatConversationSuccess(response.data))
}).catch((error) => {
dispatch(muteChatConversationFail(error))
})
}
const muteChatConversationRequest = (accountId) => ({
type: MUTE_CHAT_CONVERSATION_REQUEST,
accountId,
})
const muteChatConversationSuccess = (chatConversation) => ({
type: MUTE_CHAT_CONVERSATION_SUCCESS,
chatConversation,
showToast: true,
})
const muteChatConversationFail = (error) => ({
type: MUTE_CHAT_CONVERSATION_FAIL,
showToast: true,
error,
})
/**
*
*/
export const unmuteChatConversation = (chatConversationId) => (dispatch, getState) => {
if (!me || !chatConversationId) return
dispatch(unmuteChatConversationRequest(chatConversationId))
api(getState).post(`/api/v1/chat_conversation_accounts/${chatConversationId}/unmute_chat_conversation`).then((response) => {
dispatch(unmuteChatConversationSuccess(response.data))
}).catch((error) => {
dispatch(unmuteChatConversationFail(error))
})
}
const unmuteChatConversationRequest = (accountId) => ({
type: UNMUTE_CHAT_CONVERSATION_REQUEST,
accountId,
})
const unmuteChatConversationSuccess = (chatConversation) => ({
type: UNMUTE_CHAT_CONVERSATION_SUCCESS,
chatConversation,
showToast: true,
})
const unmuteChatConversationFail = (accountId, error) => ({
type: UNMUTE_CHAT_CONVERSATION_FAIL,
showToast: true,
accountId,
error,
})