6fbea0a59e
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
68 lines
2.4 KiB
JavaScript
68 lines
2.4 KiB
JavaScript
import {
|
|
Map as ImmutableMap,
|
|
List as ImmutableList,
|
|
fromJS,
|
|
} from 'immutable'
|
|
import { me } from '../initial_state'
|
|
import {
|
|
CHAT_MESSAGES_SEND_SUCCESS,
|
|
CHAT_MESSAGES_DELETE_REQUEST,
|
|
CHAT_MESSAGES_PURGE_REQUEST,
|
|
} from '../actions/chat_messages'
|
|
import {
|
|
CHAT_CONVERSATIONS_CREATE_SUCCESS,
|
|
CHAT_CONVERSATIONS_APPROVED_FETCH_SUCCESS,
|
|
CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS,
|
|
CHAT_CONVERSATIONS_REQUESTED_FETCH_SUCCESS,
|
|
CHAT_CONVERSATIONS_REQUESTED_EXPAND_SUCCESS,
|
|
CHAT_CONVERSATION_REQUEST_APPROVE_SUCCESS,
|
|
CHAT_CONVERSATION_MARK_READ_SUCCESS,
|
|
SET_CHAT_CONVERSATION_EXPIRATION_SUCCESS,
|
|
} from '../actions/chat_conversations'
|
|
|
|
const initialState = ImmutableMap()
|
|
|
|
export const normalizeChatConversation = (chatConversation) => {
|
|
const { other_accounts, ...rest } = chatConversation
|
|
return fromJS({
|
|
...rest,
|
|
other_account_ids: other_accounts.map((a) => a.id),
|
|
})
|
|
}
|
|
|
|
const setLastChatMessage = (state, chatMessage) => {
|
|
return state.setIn([chatMessage.chat_conversation_id, 'last_chat_message'], fromJS(chatMessage))
|
|
}
|
|
|
|
const importChatConversation = (state, chatConversation) => state.set(chatConversation.chat_conversation_id, normalizeChatConversation(chatConversation))
|
|
|
|
const importChatConversations = (state, chatConversations) => {
|
|
return state.withMutations((mutable) => chatConversations.forEach((chatConversation) => importChatConversation(mutable, chatConversation)))
|
|
}
|
|
|
|
export default function chat_conversations(state = initialState, action) {
|
|
switch(action.type) {
|
|
case CHAT_CONVERSATION_REQUEST_APPROVE_SUCCESS:
|
|
case SET_CHAT_CONVERSATION_EXPIRATION_SUCCESS:
|
|
case CHAT_CONVERSATIONS_CREATE_SUCCESS:
|
|
return importChatConversation(state, action.chatConversation)
|
|
case CHAT_CONVERSATIONS_APPROVED_FETCH_SUCCESS:
|
|
case CHAT_CONVERSATIONS_APPROVED_EXPAND_SUCCESS:
|
|
case CHAT_CONVERSATIONS_REQUESTED_FETCH_SUCCESS:
|
|
case CHAT_CONVERSATIONS_REQUESTED_EXPAND_SUCCESS:
|
|
return importChatConversations(state, action.chatConversations)
|
|
case CHAT_MESSAGES_SEND_SUCCESS:
|
|
return setLastChatMessage(state, action.chatMessage)
|
|
case CHAT_MESSAGES_DELETE_REQUEST:
|
|
// : todo : set last conversation message to one prior to this one
|
|
return state
|
|
case CHAT_MESSAGES_PURGE_REQUEST:
|
|
// : todo :
|
|
return state
|
|
case CHAT_CONVERSATION_MARK_READ_SUCCESS:
|
|
return importChatConversation(state, action.chatConversation)
|
|
default:
|
|
return state
|
|
}
|
|
}
|