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.
		
		
		
		
		
			
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
import { v4 as uuid } from 'uuid';
 | 
						|
import { generateFakePubKey, generateFakePubKeys } from './pubkey';
 | 
						|
import { ClosedGroupVisibleMessage } from '../../../session/messages/outgoing/visibleMessage/ClosedGroupVisibleMessage';
 | 
						|
import { ConversationAttributes, ConversationTypeEnum } from '../../../models/conversation';
 | 
						|
import { VisibleMessage } from '../../../session/messages/outgoing/visibleMessage/VisibleMessage';
 | 
						|
import { openGroupPrefixRegex } from '../../../session/apis/open_group_api/utils/OpenGroupUtils';
 | 
						|
import { OpenGroupMessageV2 } from '../../../session/apis/open_group_api/opengroupV2/OpenGroupMessageV2';
 | 
						|
import { TestUtils } from '..';
 | 
						|
import { OpenGroupRequestCommonType } from '../../../session/apis/open_group_api/opengroupV2/ApiUtil';
 | 
						|
import { OpenGroupVisibleMessage } from '../../../session/messages/outgoing/visibleMessage/OpenGroupVisibleMessage';
 | 
						|
 | 
						|
export function generateVisibleMessage({
 | 
						|
  identifier,
 | 
						|
  timestamp,
 | 
						|
}: {
 | 
						|
  identifier?: string;
 | 
						|
  timestamp?: number;
 | 
						|
} = {}): VisibleMessage {
 | 
						|
  return new VisibleMessage({
 | 
						|
    body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
 | 
						|
    identifier: identifier ?? uuid(),
 | 
						|
    timestamp: timestamp || Date.now(),
 | 
						|
    attachments: undefined,
 | 
						|
    quote: undefined,
 | 
						|
    expireTimer: undefined,
 | 
						|
    lokiProfile: undefined,
 | 
						|
    preview: undefined,
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
export function generateOpenGroupMessageV2(): OpenGroupMessageV2 {
 | 
						|
  return new OpenGroupMessageV2({
 | 
						|
    sentTimestamp: Date.now(),
 | 
						|
    sender: TestUtils.generateFakePubKey().key,
 | 
						|
    base64EncodedData: 'whatever',
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
export function generateOpenGroupVisibleMessage(): OpenGroupVisibleMessage {
 | 
						|
  return new OpenGroupVisibleMessage({
 | 
						|
    timestamp: Date.now(),
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
export function generateOpenGroupV2RoomInfos(): OpenGroupRequestCommonType {
 | 
						|
  // tslint:disable-next-line: no-http-string
 | 
						|
  return { roomId: 'main', serverUrl: 'http://116.203.70.33' };
 | 
						|
}
 | 
						|
 | 
						|
export function generateClosedGroupMessage(groupId?: string): ClosedGroupVisibleMessage {
 | 
						|
  return new ClosedGroupVisibleMessage({
 | 
						|
    identifier: uuid(),
 | 
						|
    groupId: groupId ?? generateFakePubKey().key,
 | 
						|
    chatMessage: generateVisibleMessage(),
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
interface MockConversationParams {
 | 
						|
  id?: string;
 | 
						|
  members?: Array<string>;
 | 
						|
  type: ConversationTypeEnum;
 | 
						|
  isMediumGroup?: boolean;
 | 
						|
}
 | 
						|
 | 
						|
export class MockConversation {
 | 
						|
  public id: string;
 | 
						|
  public type: ConversationTypeEnum;
 | 
						|
  public attributes: ConversationAttributes;
 | 
						|
 | 
						|
  constructor(params: MockConversationParams) {
 | 
						|
    this.id = params.id ?? generateFakePubKey().key;
 | 
						|
 | 
						|
    const members = params.isMediumGroup
 | 
						|
      ? params.members ?? generateFakePubKeys(10).map(m => m.key)
 | 
						|
      : [];
 | 
						|
 | 
						|
    this.type = params.type;
 | 
						|
 | 
						|
    this.attributes = {
 | 
						|
      id: this.id,
 | 
						|
      name: '',
 | 
						|
      profileName: undefined,
 | 
						|
      type: params.type === ConversationTypeEnum.GROUP ? 'group' : params.type,
 | 
						|
      members,
 | 
						|
      left: false,
 | 
						|
      expireTimer: 0,
 | 
						|
      mentionedUs: false,
 | 
						|
      unreadCount: 5,
 | 
						|
      isKickedFromGroup: false,
 | 
						|
      active_at: Date.now(),
 | 
						|
      lastJoinedTimestamp: Date.now(),
 | 
						|
      lastMessageStatus: undefined,
 | 
						|
      lastMessage: null,
 | 
						|
      zombies: [],
 | 
						|
      triggerNotificationsFor: 'all',
 | 
						|
      isTrustedForAttachmentDownload: false,
 | 
						|
      isPinned: false,
 | 
						|
      isApproved: false,
 | 
						|
      didApproveMe: false,
 | 
						|
    };
 | 
						|
  }
 | 
						|
 | 
						|
  public isPrivate() {
 | 
						|
    return this.type === ConversationTypeEnum.PRIVATE;
 | 
						|
  }
 | 
						|
 | 
						|
  public isBlocked() {
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
 | 
						|
  public isPublic() {
 | 
						|
    return this.id.match(openGroupPrefixRegex);
 | 
						|
  }
 | 
						|
 | 
						|
  public isMediumGroup() {
 | 
						|
    return this.type === 'group';
 | 
						|
  }
 | 
						|
 | 
						|
  public get(obj: string) {
 | 
						|
    return (this.attributes as any)[obj];
 | 
						|
  }
 | 
						|
}
 |