mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
106 lines
4.3 KiB
Objective-C
106 lines
4.3 KiB
Objective-C
//
|
|
// DataUtilities.m
|
|
// NewsBlur
|
|
//
|
|
// Created by Roy Yang on 7/20/12.
|
|
// Copyright (c) 2012 NewsBlur. All rights reserved.
|
|
//
|
|
|
|
#import "DataUtilities.h"
|
|
#import "NewsBlurAppDelegate.h"
|
|
#import "StoriesCollection.h"
|
|
|
|
@implementation DataUtilities
|
|
|
|
+ (NSArray *)updateUserProfiles:(NSArray *)userProfiles withNewUserProfiles:(NSArray *)newUserProfiles {
|
|
|
|
NSMutableArray *updatedUserProfiles = [userProfiles mutableCopy];
|
|
|
|
for (int i = 0; i < newUserProfiles.count; i++) {
|
|
BOOL isInUserProfiles = NO;
|
|
NSDictionary *newUser = [newUserProfiles objectAtIndex:i];
|
|
NSString *newUserIdStr = [NSString stringWithFormat:@"%@", [newUser objectForKey:@"user_id"]];
|
|
|
|
for (int j = 0; j < userProfiles.count; j++) {
|
|
NSDictionary *user = [userProfiles objectAtIndex:j];
|
|
NSString *userIdStr = [NSString stringWithFormat:@"%@", [user objectForKey:@"user_id"]];
|
|
if ([newUserIdStr isEqualToString:userIdStr]) {
|
|
isInUserProfiles = YES;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!isInUserProfiles) {
|
|
[updatedUserProfiles addObject:newUser];
|
|
}
|
|
}
|
|
return updatedUserProfiles;
|
|
}
|
|
|
|
+ (NSDictionary *)updateComment:(NSDictionary *)newComment for:(NewsBlurAppDelegate *)appDelegate {
|
|
NSDictionary *comment = [newComment objectForKey:@"comment"];
|
|
NSArray *userProfiles = [newComment objectForKey:@"user_profiles"];
|
|
|
|
appDelegate.storiesCollection.activeFeedUserProfiles = [DataUtilities
|
|
updateUserProfiles:appDelegate.storiesCollection.activeFeedUserProfiles
|
|
withNewUserProfiles:userProfiles];
|
|
|
|
NSString *commentUserId = [NSString stringWithFormat:@"%@", [comment objectForKey:@"user_id"]];
|
|
BOOL foundComment = NO;
|
|
|
|
NSArray *friendComments = [appDelegate.activeStory objectForKey:@"friend_comments"];
|
|
NSMutableArray *newFriendsComments = [[NSMutableArray alloc] init];
|
|
for (int i = 0; i < friendComments.count; i++) {
|
|
NSString *userId = [NSString stringWithFormat:@"%@",
|
|
[[friendComments objectAtIndex:i] objectForKey:@"user_id"]];
|
|
if([userId isEqualToString:commentUserId]){
|
|
[newFriendsComments addObject:comment];
|
|
foundComment = YES;
|
|
} else {
|
|
[newFriendsComments addObject:[friendComments objectAtIndex:i]];
|
|
}
|
|
}
|
|
|
|
BOOL foundShare = NO;
|
|
NSArray *friendShares = [appDelegate.activeStory objectForKey:@"friend_shares"];
|
|
NSMutableArray *newFriendsShares = [[NSMutableArray alloc] init];
|
|
for (int i = 0; i < friendShares.count; i++) {
|
|
NSString *userId = [NSString stringWithFormat:@"%@",
|
|
[[friendShares objectAtIndex:i] objectForKey:@"user_id"]];
|
|
if([userId isEqualToString:commentUserId]){
|
|
[newFriendsShares addObject:comment];
|
|
foundShare = YES;
|
|
} else {
|
|
[newFriendsShares addObject:[friendShares objectAtIndex:i]];
|
|
}
|
|
}
|
|
|
|
// make mutable copy
|
|
NSMutableDictionary *newActiveStory = [appDelegate.activeStory mutableCopy];
|
|
|
|
if (!foundComment && !foundShare) {
|
|
NSArray *publicComments = [appDelegate.activeStory objectForKey:@"public_comments"];
|
|
NSMutableArray *newPublicComments = [[NSMutableArray alloc] init];
|
|
for (int i = 0; i < publicComments.count; i++) {
|
|
NSString *userId = [NSString stringWithFormat:@"%@",
|
|
[[publicComments objectAtIndex:i] objectForKey:@"user_id"]];
|
|
if([userId isEqualToString:commentUserId]){
|
|
[newPublicComments addObject:comment];
|
|
} else {
|
|
[newPublicComments addObject:[publicComments objectAtIndex:i]];
|
|
}
|
|
}
|
|
|
|
[newActiveStory setValue:[NSArray arrayWithArray:newPublicComments] forKey:@"public_comments"];
|
|
} else if (foundComment) {
|
|
[newActiveStory setValue:[NSArray arrayWithArray:newFriendsComments] forKey:@"friend_comments"];
|
|
} else if (foundShare) {
|
|
[newActiveStory setValue:[NSArray arrayWithArray:newFriendsShares] forKey:@"friend_shares"];
|
|
}
|
|
|
|
NSDictionary *newStory = [NSDictionary dictionaryWithDictionary:newActiveStory];
|
|
|
|
return newStory;
|
|
}
|
|
|
|
@end
|