@@ -42,31 +42,25 @@ + (void)requestWithUserId:(NSString *)userId callback:(void (^)(BOOL, NSError *
4242+ (void )requestWithUserId : (NSString *)userId attributes : (NSDictionary *)attributes callback : (void (^)(BOOL , NSError * _Nullable))callback {
4343 if (!userId) {
4444 NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Parameter `userId` invalid." , nil );
45- dispatch_async (dispatch_get_main_queue (), ^{
46- callback (false , error);
47- });
45+ [LCUtils callBooleanResultBlock: callback error: error];
4846 return ;
4947 }
5048 LCUser *currentUser = [LCUser currentUser ];
5149 if (!currentUser.sessionToken ) {
5250 NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Please signin an user." , nil );
53- dispatch_async (dispatch_get_main_queue (), ^{
54- callback (false , error);
55- });
51+ [LCUtils callBooleanResultBlock: callback error: error];
5652 return ;
5753 }
5854 NSMutableDictionary *parameters = [NSMutableDictionary dictionary ];
5955 parameters[@" user" ] = [LCObjectUtils dictionaryFromObjectPointer: currentUser];
6056 parameters[@" friend" ] = [LCObjectUtils dictionaryFromObjectPointer: [LCUser objectWithObjectId: userId]];
61- if (attributes) {
57+ if (attributes && attributes. count > 0 ) {
6258 parameters[@" friendship" ] = attributes;
6359 }
6460 [[LCPaasClient sharedInstance ] postObject: @" users/friendshipRequests"
6561 withParameters: parameters
6662 block: ^(id _Nullable object, NSError * _Nullable error) {
67- dispatch_async (dispatch_get_main_queue (), ^{
68- callback (!error, error);
69- });
63+ [LCUtils callBooleanResultBlock: callback error: error];
7064 }];
7165}
7266
@@ -75,61 +69,79 @@ + (void)acceptRequest:(LCFriendshipRequest *)request callback:(void (^)(BOOL, NS
7569}
7670
7771+ (void )acceptRequest : (LCFriendshipRequest *)request attributes : (NSDictionary *)attributes callback : (void (^)(BOOL , NSError * _Nullable))callback {
72+ [self acceptOrDeclineRequest: request operation: @" accept" attributes: attributes callback: callback];
73+ }
74+
75+ + (void )declineRequest : (LCFriendshipRequest *)request callback : (void (^)(BOOL , NSError * _Nullable))callback {
76+ [self acceptOrDeclineRequest: request operation: @" decline" attributes: nil callback: callback];
77+ }
78+
79+ + (void )acceptOrDeclineRequest : (LCFriendshipRequest *)request
80+ operation : (NSString *)operation
81+ attributes : (NSDictionary *)attributes
82+ callback : (void (^)(BOOL , NSError * _Nullable))callback
83+ {
7884 if (!request.objectId ) {
7985 NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Parameter `request` invalid." , nil );
80- dispatch_async (dispatch_get_main_queue (), ^{
81- callback (false , error);
82- });
86+ [LCUtils callBooleanResultBlock: callback error: error];
8387 return ;
8488 }
8589 LCUser *currentUser = [LCUser currentUser ];
8690 if (!currentUser.sessionToken ) {
8791 NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Please signin an user." , nil );
88- dispatch_async (dispatch_get_main_queue (), ^{
89- callback (false , error);
90- });
92+ [LCUtils callBooleanResultBlock: callback error: error];
9193 return ;
9294 }
93- NSString *path = [NSString stringWithFormat: @" users/friendshipRequests/%@ /accept " , request.objectId];
95+ NSString *path = [NSString stringWithFormat: @" users/friendshipRequests/%@ /%@ " , request.objectId, operation ];
9496 NSDictionary *parameters;
95- if (attributes) {
97+ if (attributes && attributes. count > 0 ) {
9698 parameters = @{ @" friendship" : attributes };
9799 }
98100 [[LCPaasClient sharedInstance ] putObject: path
99101 withParameters: parameters
100102 sessionToken: currentUser.sessionToken
101103 block: ^(id _Nullable object, NSError * _Nullable error) {
102- dispatch_async (dispatch_get_main_queue (), ^{
103- callback (!error, error);
104- });
104+ [LCUtils callBooleanResultBlock: callback error: error];
105105 }];
106106}
107107
108- + (void )declineRequest : (LCFriendshipRequest *)request callback : (void (^)(BOOL , NSError * _Nullable))callback {
109- if (!request.objectId ) {
110- NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Parameter `request` invalid." , nil );
111- dispatch_async (dispatch_get_main_queue (), ^{
112- callback (false , error);
113- });
108+ + (void )blockFriendWithUserId : (NSString *)userId callback : (void (^)(BOOL , NSError * _Nullable))callback {
109+ [self blockOrUnblockFriendWithUserId: userId isBlock: true callback: callback];
110+ }
111+
112+ + (void )unblockFriendWithUserId : (NSString *)userId callback : (void (^)(BOOL , NSError * _Nullable))callback {
113+ [self blockOrUnblockFriendWithUserId: userId isBlock: false callback: callback];
114+ }
115+
116+ + (void )blockOrUnblockFriendWithUserId : (NSString *)userId
117+ isBlock : (BOOL )isBlock
118+ callback : (void (^)(BOOL , NSError * _Nullable))callback
119+ {
120+ if (!userId) {
121+ NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Parameter `userId` invalid." , nil );
122+ [LCUtils callBooleanResultBlock: callback error: error];
114123 return ;
115124 }
116125 LCUser *currentUser = [LCUser currentUser ];
117126 if (!currentUser.sessionToken ) {
118127 NSError *error = LCError (LCErrorInternalErrorCodeInconsistency, @" Please signin an user." , nil );
119- dispatch_async (dispatch_get_main_queue (), ^{
120- callback (false , error);
121- });
128+ [LCUtils callBooleanResultBlock: callback error: error];
122129 return ;
123130 }
124- NSString *path = [NSString stringWithFormat: @" users/friendshipRequests/%@ /decline" , request.objectId];
125- [[LCPaasClient sharedInstance ] putObject: path
126- withParameters: nil
127- sessionToken: currentUser.sessionToken
128- block: ^(id _Nullable object, NSError * _Nullable error) {
129- dispatch_async (dispatch_get_main_queue (), ^{
130- callback (!error, error);
131- });
132- }];
131+ NSString *path = [NSString stringWithFormat: @" users/self/friendBlocklist/%@ " , userId];
132+ if (isBlock) {
133+ [[LCPaasClient sharedInstance ] postObject: path
134+ withParameters: nil
135+ block: ^(id _Nullable object, NSError * _Nullable error) {
136+ [LCUtils callBooleanResultBlock: callback error: error];
137+ }];
138+ } else {
139+ [[LCPaasClient sharedInstance ] deleteObject: path
140+ withParameters: nil
141+ block: ^(id _Nullable object, NSError * _Nullable error) {
142+ [LCUtils callBooleanResultBlock: callback error: error];
143+ }];
144+ }
133145}
134146
135147@end
0 commit comments