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.5 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
| 
											5 years ago
										 | // tslint:disable: no-unnecessary-class
 | ||
|  | export class FindMember { | ||
|  |   public static async findMember( | ||
|  |     pubkey: String, | ||
|  |     convoId: string, | ||
|  |     clearOurInterval?: any | ||
|  |   ) { | ||
|  |     let groupMembers; | ||
|  | 
 | ||
|  |     const groupConvos = window.getConversations().models.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; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (thisConvo.isPublic()) { | ||
|  |       groupMembers = await window.lokiPublicChatAPI.getListOfMembers(); | ||
|  |       groupMembers = groupMembers.filter((m: any) => !!m); | ||
|  |     } else { | ||
|  |       const privateConvos = window | ||
|  |         .getConversations() | ||
|  |         .models.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.map((m: any) => { | ||
|  |         const name = m.getLokiProfile() | ||
|  |           ? m.getLokiProfile().displayName | ||
|  |           : m.attributes.displayName; | ||
|  | 
 | ||
|  |         return { | ||
|  |           id: m.id, | ||
|  |           authorPhoneNumber: m.id, | ||
|  |           authorProfileName: name, | ||
|  |         }; | ||
|  |       }); | ||
|  |     } | ||
|  | 
 | ||
|  |     return groupMembers.find( | ||
|  |       ({ authorPhoneNumber: pn }: any) => pn && pn === pubkey | ||
|  |     ); | ||
|  |   } | ||
|  | } |