- Update
This commit is contained in:
1 parent
d281d765ea
commit
5b074a5176
1261 files changed
+199158
-7303
No files matched your search
@@ -0,0 +1,28 @@
|
||||
#import "XMPPMessage.h"
|
||||
|
||||
@interface XMPPMessage (XEP_0333)
|
||||
|
||||
- (BOOL)hasChatMarker;
|
||||
|
||||
- (BOOL)hasMarkableChatMarker;
|
||||
- (BOOL)hasReceivedChatMarker;
|
||||
- (BOOL)hasDisplayedChatMarker;
|
||||
- (BOOL)hasAcknowledgedChatMarker;
|
||||
|
||||
- (NSString *)chatMarker;
|
||||
- (NSString *)chatMarkerID;
|
||||
|
||||
- (void)addMarkableChatMarker;
|
||||
- (void)addReceivedChatMarkerWithID:(NSString *)elementID;
|
||||
- (void)addDisplayedChatMarkerWithID:(NSString *)elementID;
|
||||
- (void)addAcknowledgedChatMarkerWithID:(NSString *)elementID;
|
||||
|
||||
- (XMPPMessage *)generateReceivedChatMarker;
|
||||
- (XMPPMessage *)generateDisplayedChatMarker;
|
||||
- (XMPPMessage *)generateAcknowledgedChatMarker;
|
||||
|
||||
- (XMPPMessage *)generateReceivedChatMarkerIncludingThread:(BOOL)includingThread;
|
||||
- (XMPPMessage *)generateDisplayedChatMarkerIncludingThread:(BOOL)includingThread;
|
||||
- (XMPPMessage *)generateAcknowledgedChatMarkerIncludingThread:(BOOL)includingThread;
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,142 @@
|
||||
#import "XMPPMessage+XEP_0333.h"
|
||||
#import "NSXMLElement+XMPP.h"
|
||||
|
||||
#if ! __has_feature(objc_arc)
|
||||
#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
|
||||
#endif
|
||||
|
||||
#define XMLNS_CHAT_MARKERS @"urn:xmpp:chat-markers:0"
|
||||
|
||||
#define MARKABLE_NAME @"markable"
|
||||
#define RECEIVED_NAME @"received"
|
||||
#define DISPLAYED_NAME @"displayed"
|
||||
#define ACKNOWLEDGED_NAME @"acknowledged"
|
||||
|
||||
@implementation XMPPMessage (XEP_0333)
|
||||
|
||||
- (BOOL)hasChatMarker
|
||||
{
|
||||
return ([[self elementsForXmlns:XMLNS_CHAT_MARKERS] count] > 0);
|
||||
}
|
||||
|
||||
- (BOOL)hasMarkableChatMarker
|
||||
{
|
||||
return ([self elementForName:MARKABLE_NAME xmlns:XMLNS_CHAT_MARKERS] != nil);
|
||||
}
|
||||
|
||||
- (BOOL)hasReceivedChatMarker
|
||||
{
|
||||
return ([self elementForName:RECEIVED_NAME xmlns:XMLNS_CHAT_MARKERS] != nil);
|
||||
}
|
||||
|
||||
- (BOOL)hasDisplayedChatMarker
|
||||
{
|
||||
return ([self elementForName:DISPLAYED_NAME xmlns:XMLNS_CHAT_MARKERS] != nil);
|
||||
}
|
||||
|
||||
- (BOOL)hasAcknowledgedChatMarker
|
||||
{
|
||||
return ([self elementForName:ACKNOWLEDGED_NAME xmlns:XMLNS_CHAT_MARKERS] != nil);
|
||||
}
|
||||
|
||||
- (NSString *)chatMarker
|
||||
{
|
||||
return [[[self elementsForXmlns:XMLNS_CHAT_MARKERS] lastObject] name];
|
||||
}
|
||||
|
||||
- (NSString *)chatMarkerID
|
||||
{
|
||||
return [[[self elementsForXmlns:XMLNS_CHAT_MARKERS] lastObject] attributeStringValueForName:@"id"];
|
||||
}
|
||||
|
||||
- (NSString *)chatMarkerThread
|
||||
{
|
||||
return [[[self elementsForXmlns:XMLNS_CHAT_MARKERS] lastObject] attributeStringValueForName:@"thread"];
|
||||
}
|
||||
|
||||
- (void)addMarkableChatMarker
|
||||
{
|
||||
NSXMLElement *markableDisplayedMarker = [[NSXMLElement alloc] initWithName:MARKABLE_NAME xmlns:XMLNS_CHAT_MARKERS];
|
||||
[self addChild:markableDisplayedMarker];
|
||||
}
|
||||
|
||||
- (void)addReceivedChatMarkerWithID:(NSString *)elementID
|
||||
{
|
||||
NSXMLElement *receivedChatMarker = [[NSXMLElement alloc] initWithName:RECEIVED_NAME xmlns:XMLNS_CHAT_MARKERS];
|
||||
[receivedChatMarker addAttributeWithName:@"id" stringValue:elementID];
|
||||
|
||||
[self addChild:receivedChatMarker];
|
||||
}
|
||||
|
||||
- (void)addDisplayedChatMarkerWithID:(NSString *)elementID
|
||||
{
|
||||
NSXMLElement *readDisplayedMarker = [[NSXMLElement alloc] initWithName:DISPLAYED_NAME xmlns:XMLNS_CHAT_MARKERS];
|
||||
[readDisplayedMarker addAttributeWithName:@"id" stringValue:elementID];
|
||||
|
||||
[self addChild:readDisplayedMarker];
|
||||
}
|
||||
|
||||
- (void)addAcknowledgedChatMarkerWithID:(NSString *)elementID
|
||||
{
|
||||
NSXMLElement *acknowledgedChatMarker = [[NSXMLElement alloc] initWithName:ACKNOWLEDGED_NAME xmlns:XMLNS_CHAT_MARKERS];
|
||||
[acknowledgedChatMarker addAttributeWithName:@"id" stringValue:elementID];
|
||||
|
||||
[self addChild:acknowledgedChatMarker];
|
||||
}
|
||||
|
||||
- (XMPPMessage *)generateReceivedChatMarker
|
||||
{
|
||||
return [self generateReceivedChatMarkerIncludingThread:NO];
|
||||
}
|
||||
|
||||
- (XMPPMessage *)generateDisplayedChatMarker
|
||||
{
|
||||
return [self generateDisplayedChatMarkerIncludingThread:NO];
|
||||
}
|
||||
|
||||
- (XMPPMessage *)generateAcknowledgedChatMarker
|
||||
{
|
||||
return [self generateAcknowledgedChatMarkerIncludingThread:NO];
|
||||
}
|
||||
|
||||
- (XMPPMessage *)generateReceivedChatMarkerIncludingThread:(BOOL)includingThread
|
||||
{
|
||||
XMPPMessage *message = [XMPPMessage message];
|
||||
[message addAttributeWithName:@"to" stringValue:[self fromStr]];
|
||||
|
||||
if(includingThread && [self thread])
|
||||
{
|
||||
[message addThread:[self thread]];
|
||||
}
|
||||
|
||||
[message addReceivedChatMarkerWithID:[self elementID]];
|
||||
|
||||
return message;
|
||||
}
|
||||
- (XMPPMessage *)generateDisplayedChatMarkerIncludingThread:(BOOL)includingThread
|
||||
{
|
||||
XMPPMessage *message = [XMPPMessage message];
|
||||
[message addAttributeWithName:@"to" stringValue:[self fromStr]];
|
||||
|
||||
if(includingThread && [self thread])
|
||||
{
|
||||
[message addThread:[self thread]];
|
||||
}
|
||||
|
||||
[message addDisplayedChatMarkerWithID:[self elementID]];
|
||||
return message;
|
||||
}
|
||||
- (XMPPMessage *)generateAcknowledgedChatMarkerIncludingThread:(BOOL)includingThread
|
||||
{
|
||||
XMPPMessage *message = [XMPPMessage message];
|
||||
[message addAttributeWithName:@"to" stringValue:[self fromStr]];
|
||||
|
||||
if(includingThread && [self thread])
|
||||
{
|
||||
[message addThread:[self thread]];
|
||||
}
|
||||
|
||||
[message addAcknowledgedChatMarkerWithID:[self elementID]];
|
||||
return message;
|
||||
}
|
||||
@end
|
||||
Reference in new issue
Block a user