@ -19,8 +19,10 @@
@ property ( nonatomic , retain ) NSDate * creationDate ;
@ property ( nonatomic , copy ) NSDate * archivalDate ;
@ property ( nonatomic , retain ) NSDate * lastMessageDate ;
@ property ( nonatomic , copy ) NSString * latestMessageId ;
@ property ( nonatomic , copy ) NSString * messageDraft ;
- ( TSInteraction * ) lastInteraction ;
@ end
@ implementation TSThread
@ -34,7 +36,6 @@
if ( self ) {
_archivalDate = nil ;
_latestMessageId = nil ;
_lastMessageDate = nil ;
_creationDate = [ NSDate date ] ;
_messageDraft = nil ;
@ -62,15 +63,12 @@
#pragma mark Read Status
- ( BOOL ) hasUnreadMessages {
__block TSInteraction * interaction ;
__block BOOL hasUnread = NO ;
[ [ TSStorageManager sharedManager ]
. dbConnection readWithBlock : ^( YapDatabaseReadTransaction * transaction ) {
interaction = [ TSInteraction fetchObjectWithUniqueID : self . latestMessageId transaction : transaction ] ;
if ( [ interaction isKindOfClass : [ TSIncomingMessage class ] ] ) {
hasUnread = ![ ( TSIncomingMessage * ) interaction wasRead ] ;
}
} ] ;
TSInteraction * interaction = self . lastInteraction ;
BOOL hasUnread = NO ;
if ( [ interaction isKindOfClass : [ TSIncomingMessage class ] ] ) {
hasUnread = ![ ( TSIncomingMessage * ) interaction wasRead ] ;
}
return hasUnread ;
}
@ -93,6 +91,14 @@
#pragma mark Last Interactions
- ( TSInteraction * ) lastInteraction {
__block TSInteraction * last ;
[ TSStorageManager . sharedManager . dbConnection readWithBlock : ^( YapDatabaseReadTransaction * transaction ) {
last = [ [ transaction ext : TSMessageDatabaseViewExtensionName ] lastObjectInGroup : self . uniqueId ] ;
} ] ;
return ( TSInteraction * ) last ;
}
- ( NSDate * ) lastMessageDate {
if ( _lastMessageDate ) {
return _lastMessageDate ;
@ -102,12 +108,11 @@
}
- ( NSString * ) lastMessageLabel {
__block TSInteraction * interaction ;
[ [ TSStorageManager sharedManager ]
. dbConnection readWithBlock : ^( YapDatabaseReadTransaction * transaction ) {
interaction = [ TSInteraction fetchObjectWithUniqueID : self . latestMessageId transaction : transaction ] ;
} ] ;
return interaction . description ;
if ( self . lastInteraction == nil ) {
return @ "";
} else {
return self . lastInteraction . description ;
}
}
- ( void ) updateWithLastMessage : ( TSInteraction * ) lastMessage transaction : ( YapDatabaseReadWriteTransaction * ) transaction {
@ -119,7 +124,6 @@
}
if ( !_lastMessageDate || [ lastMessageDate timeIntervalSinceDate : self . lastMessageDate ] > 0 ) {
_latestMessageId = lastMessage . uniqueId ;
_lastMessageDate = lastMessageDate ;
[ self saveWithTransaction : transaction ] ;