Path: blob/main/SignalServiceKit/Calls/Group/OWSGroupCallMessage.m
1 views
//1// Copyright 2020 Signal Messenger, LLC2// SPDX-License-Identifier: AGPL-3.0-only3//45#import "OWSGroupCallMessage.h"6#import <SignalServiceKit/SignalServiceKit-Swift.h>78NS_ASSUME_NONNULL_BEGIN910#pragma mark -1112@implementation OWSGroupCallMessage1314- (instancetype)initWithJoinedMemberAcis:(NSArray<AciObjC *> *)joinedMemberAcis15creatorAci:(nullable AciObjC *)creatorAci16thread:(TSGroupThread *)thread17sentAtTimestamp:(uint64_t)sentAtTimestamp18{19self = [super initWithTimestamp:sentAtTimestamp20receivedAtTimestamp:[NSDate ows_millisecondTimeStamp]21thread:thread];2223if (!self) {24return self;25}2627NSMutableArray<NSString *> *uuids = [[NSMutableArray alloc] initWithCapacity:joinedMemberAcis.count];28for (AciObjC *aci in joinedMemberAcis) {29[uuids addObject:aci.serviceIdUppercaseString];30}31_joinedMemberUuids = uuids;32_hasEnded = joinedMemberAcis.count == 0;33_creatorUuid = creatorAci.serviceIdUppercaseString;3435return self;36}3738// --- CODE GENERATION MARKER3940// This snippet is generated by /Scripts/sds_codegen/sds_generate.py. Do not manually edit it, instead run41// `sds_codegen.sh`.4243// clang-format off4445- (instancetype)initWithGrdbId:(int64_t)grdbId46uniqueId:(NSString *)uniqueId47receivedAtTimestamp:(uint64_t)receivedAtTimestamp48sortId:(uint64_t)sortId49timestamp:(uint64_t)timestamp50uniqueThreadId:(NSString *)uniqueThreadId51creatorUuid:(nullable NSString *)creatorUuid52eraId:(nullable NSString *)eraId53hasEnded:(BOOL)hasEnded54joinedMemberUuids:(nullable NSArray<NSString *> *)joinedMemberUuids55read:(BOOL)read56{57self = [super initWithGrdbId:grdbId58uniqueId:uniqueId59receivedAtTimestamp:receivedAtTimestamp60sortId:sortId61timestamp:timestamp62uniqueThreadId:uniqueThreadId];6364if (!self) {65return self;66}6768_creatorUuid = creatorUuid;69_eraId = eraId;70_hasEnded = hasEnded;71_joinedMemberUuids = joinedMemberUuids;72_read = read;7374return self;75}7677// clang-format on7879// --- CODE GENERATION MARKER8081- (NSUInteger)hash82{83NSUInteger result = [super hash];84result ^= self.creatorUuid.hash;85result ^= self.eraId.hash;86result ^= self.hasEnded;87result ^= self.joinedMemberUuids.hash;88result ^= self.read;89return result;90}9192- (BOOL)isEqual:(id)other93{94if (![super isEqual:other]) {95return NO;96}97OWSGroupCallMessage *typedOther = (OWSGroupCallMessage *)other;98if (![NSObject isObject:self.creatorUuid equalToObject:typedOther.creatorUuid]) {99return NO;100}101if (![NSObject isObject:self.eraId equalToObject:typedOther.eraId]) {102return NO;103}104if (self.hasEnded != typedOther.hasEnded) {105return NO;106}107if (![NSObject isObject:self.joinedMemberUuids equalToObject:typedOther.joinedMemberUuids]) {108return NO;109}110if (self.read != typedOther.read) {111return NO;112}113return YES;114}115116- (NSArray<AciObjC *> *)joinedMemberAcis117{118NSArray<NSString *> *_Nullable uuids = self.joinedMemberUuids;119NSMutableArray<AciObjC *> *result = [[NSMutableArray alloc] initWithCapacity:uuids.count];120for (NSString *aciString in uuids) {121[result addObject:[[AciObjC alloc] initWithAciString:aciString]];122}123return result;124}125126- (nullable AciObjC *)creatorAci127{128if (self.creatorUuid) {129return [[AciObjC alloc] initWithAciString:self.creatorUuid];130} else {131return nil;132}133}134135- (OWSInteractionType)interactionType136{137return OWSInteractionType_Call;138}139140@end141142NS_ASSUME_NONNULL_END143144145