sync proto

pull/1174/head
Vincent 5 years ago
parent 3140dee2b2
commit a76a0bed00

@ -14,11 +14,19 @@ interface ContactSyncMessageParams extends MessageParams {
}
export class ContactSyncMessage extends SyncMessage {
private readonly linkedDevices: Array<PubKey>;
private readonly dataMessage?: DataMessage;
constructor(params: ContactSyncMessageParams) {
super(params);
this.linkedDevices = params.linkedDevices;
this.dataMessage = params.dataMessage;
this.syncProto();
}
protected syncProto() {
protected syncProto(): SignalService.SyncMessage {
// const contacts = new SignalService.SyncMessage.Contacts();
// contacts.
@ -31,17 +39,9 @@ export class ContactSyncMessage extends SyncMessage {
// SignalService.SyncMessage.OpenGroupDetails
// SignalService.SyncMessage.Read
const conversations = await Data.getAllConversations({ ConversationCollection: Whisper.ConversationCollection });
const contacts = conversations.filter((conversation: any) => {
return (
!conversation.isMe() &&
conversation.isPrivate() &&
!conversation.isSecondaryDevice() &&
conversation.isFriend()
);
const syncMessage = new SignalService.SyncMessage({
});
const syncMessage = await libloki.api.createContactSyncProtoMessage(contacts) as SignalService.SyncMessage;
// TODO: Is this a request sync message or a basic sync message?
// Set request type
@ -49,6 +49,15 @@ export class ContactSyncMessage extends SyncMessage {
request.type = SignalService.SyncMessage.Request.Type.CONTACTS;
syncMessage.request = request;
contentMessage.syncMessage = syncMessage;
const silent = true;
const debugMessageType =
window.textsecure.OutgoingMessage.DebugMessageType.CONTACT_SYNC_SEND;
return syncMessage;
}
@ -56,3 +65,36 @@ export class ContactSyncMessage extends SyncMessage {
// if dataMess
// }
}
// LOOOK HERE!!! FOR OW TO BUILD
// // We need to sync across 3 contacts at a time
// // This is to avoid hitting storage server limit
// const chunked = _.chunk([...contactsSet], 3);
// const syncMessages = await Promise.all(
// chunked.map(c => libloki.api.createContactSyncProtoMessage(c))
// );
// const syncPromises = syncMessages
// .filter(message => message != null)
// .map(syncMessage => {
// const contentMessage = new textsecure.protobuf.Content();
// contentMessage.syncMessage = syncMessage;
// const silent = true;
// const debugMessageType =
// window.textsecure.OutgoingMessage.DebugMessageType.CONTACT_SYNC_SEND;
// return this.sendIndividualProto(
// primaryDeviceKey,
// contentMessage,
// Date.now(),
// silent,
// { debugMessageType } // options
// );
// });
// return Promise.all(syncPromises);
// },

@ -11,13 +11,15 @@ import { SignalService } from '../../protobuf';
import { SyncMessageType } from '../messages/outgoing/content/sync/SyncMessage';
import * as Data from '../../../js/modules/data';
import { textsecure, libloki, ConversationController, Whisper } from '../../window';
import { ConversationController, libloki, Whisper, textsecure } from '../../window';
import { OpenGroup } from '../types/OpenGroup';
import { generateFakePubkey } from '../../test/test-utils/testUtils';
// export function from(message: ContentMessage): SyncMessage | undefined {
// testtttingggg
export async function from(
message: ContentMessage,
sendTo: any,
sendTo: PubKey | OpenGroup,
syncType: SyncMessageEnum.CONTACTS | SyncMessageEnum.GROUPS = SyncMessageEnum.CONTACTS
): Promise<SyncMessageType> {
const { timestamp, identifier } = message;
@ -29,14 +31,23 @@ export async function from(
let syncMessage: SyncMessage;
switch (syncType) {
case SyncMessageEnum.CONTACTS:
// Send to one device at a time
const contact = ConversationController.get(
sendTo instanceof PubKey
? sendTo.key : sendTo.conversationId
);
const builtSyncMessage = await libloki.api.createContactSyncProtoMessage();
const protoSyncMessage = libloki.api.createContactSyncProtoMessage(contact);
const contentMessage = new ContactSyncMessage({
dataMessage: protoSyncMessage,
linkedDevices: [generateFakePubkey()],
timestamp: Date.now(),
});
break;
case SyncMessageEnum.GROUPS:
syncMessage = new GroupSyncMessage({
@ -49,11 +60,10 @@ export async function from(
return syncMessage;
}
export async function canSync(message: ContentMessage, device: any): boolean {
export async function canSync(message: ContentMessage, device: any): Promise<boolean> {
return Boolean(from(message, device));
}
export async function getSyncContacts(): Promise<Set<any>> {
const thisDevice = textsecure.storage.user.getNumber();
const primaryDevice = await Data.getPrimaryDeviceFor(thisDevice);

Loading…
Cancel
Save