1- import { isVoteAnswer , PollAnswer , PollResponse , PollVote , StreamChat } from 'stream-chat' ;
1+ import { isVoteAnswer , PollAnswer , PollResponse , PollVote } from 'stream-chat' ;
22
33import { DefaultStreamChatGenerics } from '../../types/types' ;
44import { mapPollToStorable } from '../mappers/mapPollToStorable' ;
@@ -11,13 +11,15 @@ import type { PreparedQueries } from '../types';
1111export const updatePollMessage = <
1212 StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics ,
1313> ( {
14- client ,
14+ eventType ,
1515 flush = true ,
1616 poll,
1717 poll_vote,
18+ userID,
1819} : {
19- client : StreamChat < StreamChatGenerics > ;
20+ eventType : string ;
2021 poll : PollResponse < StreamChatGenerics > ;
22+ userID : string ;
2123 flush ?: boolean ;
2224 poll_vote ?: PollVote < StreamChatGenerics > | PollAnswer < StreamChatGenerics > ;
2325} ) => {
@@ -33,21 +35,37 @@ export const updatePollMessage = <
3335 for ( const pollFromDB of pollsFromDB ) {
3436 const serializedPoll = mapStorableToPoll ( pollFromDB ) ;
3537 const { latest_answers = [ ] , own_votes = [ ] } = serializedPoll ;
36- const newOwnVotes =
37- poll_vote && poll_vote . user ?. id === client . userID
38- ? [ poll_vote , ...own_votes . filter ( ( vote ) => vote . id !== poll_vote . id ) ]
39- : own_votes ;
40- const newLatestAnswers =
41- poll_vote && isVoteAnswer ( poll_vote )
42- ? [ poll_vote , ...latest_answers . filter ( ( answer ) => answer . id !== poll_vote ?. id ) ]
43- : latest_answers ;
38+ console . log ( eventType ) ;
39+ let newOwnVotes = own_votes ;
40+ if ( poll_vote && poll_vote . user ?. id === userID ) {
41+ newOwnVotes =
42+ eventType === 'poll.vote_removed'
43+ ? newOwnVotes . filter ( ( vote ) => vote . id !== poll_vote . id )
44+ : [ poll_vote , ...newOwnVotes . filter ( ( vote ) => vote . id !== poll_vote . id ) ] ;
45+ }
46+ let newLatestAnswers = latest_answers ;
47+ if ( poll_vote && isVoteAnswer ( poll_vote ) ) {
48+ newLatestAnswers =
49+ eventType === 'poll.vote_removed'
50+ ? newLatestAnswers . filter ( ( answer ) => answer . id !== poll_vote ?. id )
51+ : [ poll_vote , ...newLatestAnswers . filter ( ( answer ) => answer . id !== poll_vote ?. id ) ] ;
52+ }
53+ // const newOwnVotes =
54+ // poll_vote && poll_vote.user?.id === userID
55+ // ? [poll_vote, ...own_votes.filter((vote) => vote.id !== poll_vote.id)]
56+ // : own_votes;
57+ // const newLatestAnswers =
58+ // poll_vote && isVoteAnswer(poll_vote)
59+ // ? [poll_vote, ...latest_answers.filter((answer) => answer.id !== poll_vote?.id)]
60+ // : latest_answers;
61+
4462 const storablePoll = mapPollToStorable ( {
4563 ...poll ,
4664 latest_answers : newLatestAnswers ,
4765 own_votes : newOwnVotes ,
4866 } ) ;
4967
50- console . log ( 'STORABLE POLL: ' , storablePoll ) ;
68+ console . log ( 'STORABLE POLL: ' , newOwnVotes ) ;
5169
5270 queries . push (
5371 createUpdateQuery ( 'poll' , storablePoll , {
0 commit comments