| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  | // Copyright 2020 Signal Messenger, LLC
 | 
					
						
							|  |  |  | // SPDX-License-Identifier: AGPL-3.0-only
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { connect } from 'react-redux'; | 
					
						
							|  |  |  | import { mapDispatchToProps } from '../actions'; | 
					
						
							|  |  |  | import { | 
					
						
							|  |  |  |   ContactModal, | 
					
						
							| 
									
										
										
										
											2021-09-21 18:37:10 -04:00
										 |  |  |   PropsDataType, | 
					
						
							| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  | } from '../../components/conversation/ContactModal'; | 
					
						
							|  |  |  | import { StateType } from '../reducer'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { getIntl } from '../selectors/user'; | 
					
						
							|  |  |  | import { getConversationSelector } from '../selectors/conversations'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 18:37:10 -04:00
										 |  |  | const mapStateToProps = (state: StateType): PropsDataType => { | 
					
						
							|  |  |  |   const { contactId, conversationId } = | 
					
						
							|  |  |  |     state.globalModals.contactModalState || {}; | 
					
						
							| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 18:37:10 -04:00
										 |  |  |   const currentConversation = getConversationSelector(state)(conversationId); | 
					
						
							| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  |   const contact = getConversationSelector(state)(contactId); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const areWeAdmin = | 
					
						
							|  |  |  |     currentConversation && currentConversation.areWeAdmin | 
					
						
							|  |  |  |       ? currentConversation.areWeAdmin | 
					
						
							|  |  |  |       : false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-29 16:19:24 -05:00
										 |  |  |   let isMember = false; | 
					
						
							|  |  |  |   let isAdmin = false; | 
					
						
							|  |  |  |   if (contact && currentConversation && currentConversation.memberships) { | 
					
						
							|  |  |  |     currentConversation.memberships.forEach(membership => { | 
					
						
							| 
									
										
										
										
											2021-04-29 13:32:38 -05:00
										 |  |  |       if (membership.conversationId === contact.id) { | 
					
						
							| 
									
										
										
										
											2021-01-29 16:19:24 -05:00
										 |  |  |         isMember = true; | 
					
						
							|  |  |  |         isAdmin = membership.isAdmin; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  |   return { | 
					
						
							|  |  |  |     areWeAdmin, | 
					
						
							|  |  |  |     contact, | 
					
						
							| 
									
										
										
										
											2021-09-21 18:37:10 -04:00
										 |  |  |     conversationId, | 
					
						
							| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  |     i18n: getIntl(state), | 
					
						
							| 
									
										
										
										
											2021-01-29 16:19:24 -05:00
										 |  |  |     isAdmin, | 
					
						
							| 
									
										
										
										
											2020-11-11 09:36:05 -08:00
										 |  |  |     isMember, | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const smart = connect(mapStateToProps, mapDispatchToProps); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const SmartContactModal = smart(ContactModal); |