use a HOC to fetch closed group conversations for avatar rendering
parent
9584d0a1af
commit
b845ba9642
@ -0,0 +1,60 @@
|
||||
import { GroupUtils } from '../../session/utils';
|
||||
import { UserUtil } from '../../util';
|
||||
import { PubKey } from '../../session/types';
|
||||
import React from 'react';
|
||||
import { ConversationAttributes } from '../../../js/models/conversations';
|
||||
type State = {
|
||||
closedMemberConversations?: Array<ConversationAttributes>;
|
||||
};
|
||||
|
||||
export function usingClosedConversationDetails(WrappedComponent: any) {
|
||||
return class extends React.Component<any, State> {
|
||||
constructor(props: any) {
|
||||
super(props);
|
||||
this.state = {
|
||||
closedMemberConversations: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
public componentDidMount() {
|
||||
void this.fetchClosedConversationDetails();
|
||||
}
|
||||
|
||||
public render() {
|
||||
return (
|
||||
<WrappedComponent
|
||||
closedMemberConversations={this.state.closedMemberConversations}
|
||||
{...this.props}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
private async fetchClosedConversationDetails() {
|
||||
const {
|
||||
isPublic,
|
||||
type,
|
||||
conversationType,
|
||||
isGroup,
|
||||
phoneNumber,
|
||||
id,
|
||||
} = this.props;
|
||||
if (
|
||||
!isPublic &&
|
||||
(conversationType === 'group' || type === 'group' || isGroup)
|
||||
) {
|
||||
console.warn('fetchClosedConversationDetails');
|
||||
const groupId = id || phoneNumber;
|
||||
let members = await GroupUtils.getGroupMembers(PubKey.cast(groupId));
|
||||
const ourPrimary = await UserUtil.getPrimary();
|
||||
members = members.filter(m => m.key !== ourPrimary.key);
|
||||
members.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0));
|
||||
const membersConvos = members.map(
|
||||
m => window.ConversationController.get(m.key).cachedProps
|
||||
);
|
||||
// no need to forward more than 2 conversation for rendering the group avatar
|
||||
membersConvos.slice(0, 2);
|
||||
this.setState({ closedMemberConversations: membersConvos });
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue