You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
import { ConversationModel } from '../models/conversation';
 | 
						|
import { ConversationController } from '../session/conversations';
 | 
						|
 | 
						|
// tslint:disable: no-unnecessary-class
 | 
						|
export class FindMember {
 | 
						|
  public static async findMember(
 | 
						|
    pubkey: String,
 | 
						|
    convoId: string,
 | 
						|
    clearOurInterval?: any
 | 
						|
  ): Promise<ConversationModel | null> {
 | 
						|
    let groupMembers;
 | 
						|
 | 
						|
    const groupConvos = ConversationController.getInstance()
 | 
						|
      .getConversations()
 | 
						|
      .filter((d: any) => {
 | 
						|
        return !d.isPrivate();
 | 
						|
      });
 | 
						|
    const thisConvo = groupConvos.find((d: any) => {
 | 
						|
      return d.id === convoId;
 | 
						|
    });
 | 
						|
 | 
						|
    if (!thisConvo) {
 | 
						|
      // If this gets triggered, is is likely because we deleted the conversation
 | 
						|
      if (clearOurInterval) {
 | 
						|
        clearOurInterval();
 | 
						|
      }
 | 
						|
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
 | 
						|
    if (thisConvo.isPublic()) {
 | 
						|
      const publicMembers = await window.lokiPublicChatAPI.getListOfMembers();
 | 
						|
      const memberConversations = publicMembers
 | 
						|
        .map(publicMember =>
 | 
						|
          ConversationController.getInstance().get(
 | 
						|
            publicMember.authorPhoneNumber
 | 
						|
          )
 | 
						|
        )
 | 
						|
        .filter((c: any) => !!c);
 | 
						|
      groupMembers = memberConversations;
 | 
						|
    } else {
 | 
						|
      const privateConvos = ConversationController.getInstance()
 | 
						|
        .getConversations()
 | 
						|
        .filter((d: any) => d.isPrivate());
 | 
						|
      const members = thisConvo.attributes.members;
 | 
						|
      if (!members) {
 | 
						|
        return null;
 | 
						|
      }
 | 
						|
      const memberConversations = members
 | 
						|
        .map((m: any) => privateConvos.find((c: any) => c.id === m))
 | 
						|
        .filter((c: any) => !!c);
 | 
						|
      groupMembers = memberConversations;
 | 
						|
    }
 | 
						|
 | 
						|
    return groupMembers.find(({ id: pn }: any) => pn && pn === pubkey);
 | 
						|
  }
 | 
						|
}
 |