import { echo } from './channels-config';
import { userState } from '@services/auth';
import { dispatch, getState } from '@lib/redux/store';
import { fetchedMessages, fetchedChat, setUnreadMessages } from '@lib/redux/actions/messages-actions';
import { put } from 'redux-saga/effects';
// import Echo from 'laravel-echo';
import isEmpty from 'lodash/isEmpty';

require('./channels-config');




export const subscribeToMessagesChannel = () => {
	const userState = getState()['userState'];
	echo.
		private(`user-messages-channel.${userState?.awebkey}`)
		.listen('MessageSentEvent', res => {
			const messages = getState()['messages'] ?? [];
			const chats = getState()['chats'] ?? [];

			// console.log('i got chats as', chats);
			// console.log('i got messages as', messages);

			const unread_messages = getState()['unread_messages'] ?? [];

			const newMessages = messages?.filter(msg => msg?.thread_id !== res.message.thread_id);
			newMessages.unshift(res.message);
			if (!isEmpty(chats?.data)) {
				chats?.data?.push(res.message);
			} else {
				chats.data = [res.message];
			}

			unread_messages.unshift(res.message);

			dispatch(fetchedMessages({ data: newMessages }));
			dispatch(fetchedChat({ data: chats }));
			dispatch(setUnreadMessages({ data: unread_messages }));
		});

};

