Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
signalapp
GitHub Repository: signalapp/Signal-iOS
Path: blob/main/SignalServiceKit/Calls/Group/OWSGroupCallMessage.m
1 views
1
//
2
// Copyright 2020 Signal Messenger, LLC
3
// SPDX-License-Identifier: AGPL-3.0-only
4
//
5
6
#import "OWSGroupCallMessage.h"
7
#import <SignalServiceKit/SignalServiceKit-Swift.h>
8
9
NS_ASSUME_NONNULL_BEGIN
10
11
#pragma mark -
12
13
@implementation OWSGroupCallMessage
14
15
- (instancetype)initWithJoinedMemberAcis:(NSArray<AciObjC *> *)joinedMemberAcis
16
creatorAci:(nullable AciObjC *)creatorAci
17
thread:(TSGroupThread *)thread
18
sentAtTimestamp:(uint64_t)sentAtTimestamp
19
{
20
self = [super initWithTimestamp:sentAtTimestamp
21
receivedAtTimestamp:[NSDate ows_millisecondTimeStamp]
22
thread:thread];
23
24
if (!self) {
25
return self;
26
}
27
28
NSMutableArray<NSString *> *uuids = [[NSMutableArray alloc] initWithCapacity:joinedMemberAcis.count];
29
for (AciObjC *aci in joinedMemberAcis) {
30
[uuids addObject:aci.serviceIdUppercaseString];
31
}
32
_joinedMemberUuids = uuids;
33
_hasEnded = joinedMemberAcis.count == 0;
34
_creatorUuid = creatorAci.serviceIdUppercaseString;
35
36
return self;
37
}
38
39
// --- CODE GENERATION MARKER
40
41
// This snippet is generated by /Scripts/sds_codegen/sds_generate.py. Do not manually edit it, instead run
42
// `sds_codegen.sh`.
43
44
// clang-format off
45
46
- (instancetype)initWithGrdbId:(int64_t)grdbId
47
uniqueId:(NSString *)uniqueId
48
receivedAtTimestamp:(uint64_t)receivedAtTimestamp
49
sortId:(uint64_t)sortId
50
timestamp:(uint64_t)timestamp
51
uniqueThreadId:(NSString *)uniqueThreadId
52
creatorUuid:(nullable NSString *)creatorUuid
53
eraId:(nullable NSString *)eraId
54
hasEnded:(BOOL)hasEnded
55
joinedMemberUuids:(nullable NSArray<NSString *> *)joinedMemberUuids
56
read:(BOOL)read
57
{
58
self = [super initWithGrdbId:grdbId
59
uniqueId:uniqueId
60
receivedAtTimestamp:receivedAtTimestamp
61
sortId:sortId
62
timestamp:timestamp
63
uniqueThreadId:uniqueThreadId];
64
65
if (!self) {
66
return self;
67
}
68
69
_creatorUuid = creatorUuid;
70
_eraId = eraId;
71
_hasEnded = hasEnded;
72
_joinedMemberUuids = joinedMemberUuids;
73
_read = read;
74
75
return self;
76
}
77
78
// clang-format on
79
80
// --- CODE GENERATION MARKER
81
82
- (NSUInteger)hash
83
{
84
NSUInteger result = [super hash];
85
result ^= self.creatorUuid.hash;
86
result ^= self.eraId.hash;
87
result ^= self.hasEnded;
88
result ^= self.joinedMemberUuids.hash;
89
result ^= self.read;
90
return result;
91
}
92
93
- (BOOL)isEqual:(id)other
94
{
95
if (![super isEqual:other]) {
96
return NO;
97
}
98
OWSGroupCallMessage *typedOther = (OWSGroupCallMessage *)other;
99
if (![NSObject isObject:self.creatorUuid equalToObject:typedOther.creatorUuid]) {
100
return NO;
101
}
102
if (![NSObject isObject:self.eraId equalToObject:typedOther.eraId]) {
103
return NO;
104
}
105
if (self.hasEnded != typedOther.hasEnded) {
106
return NO;
107
}
108
if (![NSObject isObject:self.joinedMemberUuids equalToObject:typedOther.joinedMemberUuids]) {
109
return NO;
110
}
111
if (self.read != typedOther.read) {
112
return NO;
113
}
114
return YES;
115
}
116
117
- (NSArray<AciObjC *> *)joinedMemberAcis
118
{
119
NSArray<NSString *> *_Nullable uuids = self.joinedMemberUuids;
120
NSMutableArray<AciObjC *> *result = [[NSMutableArray alloc] initWithCapacity:uuids.count];
121
for (NSString *aciString in uuids) {
122
[result addObject:[[AciObjC alloc] initWithAciString:aciString]];
123
}
124
return result;
125
}
126
127
- (nullable AciObjC *)creatorAci
128
{
129
if (self.creatorUuid) {
130
return [[AciObjC alloc] initWithAciString:self.creatorUuid];
131
} else {
132
return nil;
133
}
134
}
135
136
- (OWSInteractionType)interactionType
137
{
138
return OWSInteractionType_Call;
139
}
140
141
@end
142
143
NS_ASSUME_NONNULL_END
144
145