1- import type { PollResponse } from 'stream-chat' ;
1+ import { isVoteAnswer , PollAnswer , PollResponse , PollVote , StreamChat } from 'stream-chat' ;
22
3+ import { DefaultStreamChatGenerics } from '../../types/types' ;
34import { mapPollToStorable } from '../mappers/mapPollToStorable' ;
45import { mapStorableToPoll } from '../mappers/mapStorableToPoll' ;
56import { QuickSqliteClient } from '../QuickSqliteClient' ;
67import { createSelectQuery } from '../sqlite-utils/createSelectQuery' ;
78import { createUpdateQuery } from '../sqlite-utils/createUpdateQuery' ;
89import type { PreparedQueries } from '../types' ;
910
10- export const updatePollMessage = ( {
11+ export const updatePollMessage = <
12+ StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics ,
13+ > ( {
14+ client,
1115 flush = true ,
1216 poll,
17+ poll_vote,
1318} : {
14- poll : PollResponse ;
19+ client : StreamChat < StreamChatGenerics > ;
20+ poll : PollResponse < StreamChatGenerics > ;
1521 flush ?: boolean ;
22+ poll_vote ?: PollVote < StreamChatGenerics > | PollAnswer < StreamChatGenerics > ;
1623} ) => {
1724 const queries : PreparedQueries [ ] = [ ] ;
1825
@@ -25,12 +32,19 @@ export const updatePollMessage = ({
2532
2633 for ( const pollFromDB of pollsFromDB ) {
2734 const serializedPoll = mapStorableToPoll ( pollFromDB ) ;
28- const { latest_votes, own_votes } = serializedPoll ;
29- console . log ( own_votes ) ;
35+ 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 ;
3044 const storablePoll = mapPollToStorable ( {
3145 ...poll ,
32- // latest_votes: latest_votes ?? [] ,
33- // own_votes: own_votes ?? [] ,
46+ latest_answers : newLatestAnswers ,
47+ own_votes : newOwnVotes ,
3448 } ) ;
3549
3650 console . log ( 'STORABLE POLL: ' , storablePoll ) ;
0 commit comments