|
|
|
@ -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);
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
|
|