mirror of https://github.com/oxen-io/session-ios
Group functionality
• create • send/receive full functionality • basic UI for group updating. TODOS: -group avatars not supported -group update occurrence initiated by Android displayed in thread UI but not yet fully Reviewed-by: @FredericJacobspull/1/head
parent
c74899661c
commit
333c920e0b
@ -1,27 +0,0 @@
|
||||
//
|
||||
// TSGroup.h
|
||||
// TextSecureKit
|
||||
//
|
||||
// Created by Frederic Jacobs on 12/11/14.
|
||||
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "TSAttachment.h"
|
||||
|
||||
#import "TSYapDatabaseObject.h"
|
||||
|
||||
@interface TSGroup : TSYapDatabaseObject
|
||||
|
||||
@property (nonatomic) NSString *name;// Name of the group
|
||||
@property (nonatomic) TSAttachment *avatar;// Link to the attachment object (group picture)
|
||||
@property (nonatomic) NSSet *members;// Each member of the discussion is a TSUser
|
||||
|
||||
- (NSData*)groupIdentifier;
|
||||
|
||||
+ (TSGroup*)groupWithId:(NSData*)id;
|
||||
|
||||
- (NSSet*)membersIdentifier;
|
||||
|
||||
|
||||
@end
|
@ -1,17 +0,0 @@
|
||||
//
|
||||
// TSGroup.m
|
||||
// TextSecureKit
|
||||
//
|
||||
// Created by Frederic Jacobs on 12/11/14.
|
||||
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TSGroup.h"
|
||||
|
||||
@implementation TSGroup
|
||||
|
||||
+ (NSString*)collection{
|
||||
return @"TSGroup";
|
||||
}
|
||||
|
||||
@end
|
@ -1,17 +0,0 @@
|
||||
//
|
||||
// TSGroupMessageManager.h
|
||||
// TextSecureKit
|
||||
//
|
||||
// Created by Frederic Jacobs on 15/11/14.
|
||||
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "IncomingPushMessageSignal.pb.h"
|
||||
|
||||
@interface TSGroupMessageManager : NSObject
|
||||
|
||||
+ (void)processGroupMessage:(IncomingPushMessageSignal*)pushMessage content:(PushMessageContent*)content;
|
||||
|
||||
@end
|
@ -1,88 +0,0 @@
|
||||
//
|
||||
// TSGroupMessageManager.m
|
||||
// TextSecureKit
|
||||
//
|
||||
// Created by Frederic Jacobs on 15/11/14.
|
||||
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <CocoaLumberjack/DDLog.h>
|
||||
|
||||
#import "TSGroup.h"
|
||||
#import "TSGroupMessageManager.h"
|
||||
|
||||
#define ddLogLevel LOG_LEVEL_VERBOSE
|
||||
|
||||
|
||||
@implementation TSGroupMessageManager
|
||||
|
||||
+ (void)processGroupMessage:(IncomingPushMessageSignal*)pushMessage content:(PushMessageContent*)content{
|
||||
if (!content.group.id) {
|
||||
DDLogInfo(@"Received group message with no id! Ignoring...");
|
||||
return;
|
||||
}
|
||||
|
||||
PushMessageContentGroupContext *group = content.group;
|
||||
NSData *id = group.id;
|
||||
int type = group.type;
|
||||
TSGroup *record = [TSGroup groupWithId:id];
|
||||
|
||||
if (record != nil && type == PushMessageContentGroupContextTypeUpdate) {
|
||||
//TODO: [self handleGroupUpdate:pushMessage group:group record:record];
|
||||
} else if (record == nil && type == PushMessageContentGroupContextTypeUpdate) {
|
||||
[self handleGroupCreate:pushMessage group:group record:record];
|
||||
} else if (record != nil && type == PushMessageContentGroupContextTypeQuit) {
|
||||
[self handleGroupLeave:pushMessage group:group record:record];
|
||||
} else if (type == PushMessageContentGroupContextTypeUnknown) {
|
||||
DDLogInfo(@"Received unknown type, ignoring...");
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)handleGroupCreate:(IncomingPushMessageSignal*)message group:(PushMessageContentGroupContext*)group record:(TSGroup*)record{
|
||||
//TODO
|
||||
}
|
||||
|
||||
+ (void)handleGroupLeave:(IncomingPushMessageSignal*)pushMessage group:(PushMessageContentGroupContext*)group record:(TSGroup*)record{
|
||||
//TODO
|
||||
}
|
||||
|
||||
|
||||
//+ (void)handleGroupUpdate:(IncomingPushMessageSignal*)pushMessage group:(PushMessageContentGroupContext*)group record:(TSGroup*)record{
|
||||
// NSData *identifier = group.id;
|
||||
// NSArray *messageMembersIds = group.members;
|
||||
//
|
||||
// NSSet *recordMembers = record.membersIdentifier;
|
||||
// NSSet *messageMembers = [NSSet setWithArray:messageMembersIds];
|
||||
//
|
||||
// NSMutableSet *addedMembers = [messageMembers mutableCopy];
|
||||
// [addedMembers minusSet:recordMembers];
|
||||
//
|
||||
// NSMutableSet missingMembers = [recordMembers mutableCopy];
|
||||
// [missingMembers minusSet:messageMembers];
|
||||
//
|
||||
// if (addedMembers.count > 0) {
|
||||
// Set<String> unionMembers = new HashSet<String>(recordMembers);
|
||||
// unionMembers.addAll(messageMembers);
|
||||
// database.updateMembers(id, new LinkedList<String>(unionMembers));
|
||||
//
|
||||
// group = group.toBuilder().clearMembers().addAllMembers(addedMembers).build();
|
||||
//
|
||||
// } else {
|
||||
// group = group.toBuilder().clearMembers().build();
|
||||
// }
|
||||
//
|
||||
// if (missingMembers > 0) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// if (group.hasName || group.hasAvatar) {
|
||||
// record.avatar = group.avatar;
|
||||
// record.name = group.name;
|
||||
// [record save];
|
||||
// }
|
||||
//
|
||||
// // TO-DO: Implement
|
||||
//
|
||||
//}
|
||||
|
||||
@end
|
Loading…
Reference in New Issue