Explorar el Código

- Multi Delegate 지원하도록 수정
- 로그아웃 기능 연동 완료

KaRam Kim hace 8 años
padre
commit
5a6a773517

+ 2 - 1
OneCable/Classes/Definitions.h

@@ -45,6 +45,7 @@ static NSString *kWebLinkServer = @"http://61.40.220.23:7794";      //운영
 
 #endif
 
+#define API_AUTHORIZATION_KEY   @"Authorization"
 
 //Network Constants
 #define API_ROOT_PATH       @"/ocs/v1"
@@ -68,7 +69,7 @@ static NSString *kWebLinkServer = @"http://61.40.220.23:7794";      //운영
 #define API_TEMP_CUST_GROP_ID           @"1001"
 
 //#define API_POST_MEMBER_UPDATE          @"/member/%@/%@"        //회원정보 수정
-#define API_POST_MEMBER_UPDATE          @"/member/%@"        //회원정보 수정
+#define API_POST_MEMBER_UPDATE          @"/customer/%@/group/%@/member/%@"        //회원정보 수정
 #define API_POST_AUTH_MAIL              @"/member/auth_mail"    //이메일 인증 재발송
 #define API_POST_RESET_PWD              @"/member/password"     //비밀번호 재설정
 #define API_GET_MOBILE_DEVICES          @"/member/devices"      //단말 목록

+ 1 - 1
OneCable/Classes/Handler/RequestHandler.m

@@ -243,7 +243,7 @@
         } error:&error];
     }
 
-    [request setValue:self.authorization ? self.authorization : ksEmptyString forHTTPHeaderField:@"Authorization"];
+    [request setValue:self.authorization ? self.authorization : ksEmptyString forHTTPHeaderField:API_AUTHORIZATION_KEY];
     [request setValue:self.homegrpId ? self.homegrpId : ksEmptyString forHTTPHeaderField:@"X-kneet-homegrp"];
 
     AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];

+ 3 - 2
OneCable/Classes/Handler/SocketServiceHandler.h

@@ -23,7 +23,7 @@
 
 @interface SocketServiceHandler : NSObject
 
-@property (nonatomic, assign) id<SocketServiceDelegate> delegate;
+//@property (nonatomic, weak) id<SocketServiceDelegate> delegate;
 @property (readonly, nonatomic) BOOL isConnected;
 
 @property (nonatomic, strong) NSString* strSocketURL;
@@ -34,8 +34,9 @@
 - (void) close;
 
 - (void) sendData:(NSDictionary *)data;
+- (void) sendDataWithDelegate:(NSDictionary *)data delegate:(id)delegate;
 
-- (void) initDelegate:(id<SocketServiceDelegate>) delegate;
+//- (void) initDelegate:(id<SocketServiceDelegate>) delegate;
 
 - (SRReadyState) getSocketStatus;
 

+ 51 - 13
OneCable/Classes/Handler/SocketServiceHandler.m

@@ -18,9 +18,13 @@
 {
     SRWebSocket *_socket;
     NSMutableArray<NSDictionary *> *_messages;
+    NSMutableArray *_delegates;
     
     int _retryCount;
 }
+//@property NSMutableDictionary* controllers;
+//@property int   controllerId;
+
 @end
 
 @implementation SocketServiceHandler
@@ -45,6 +49,8 @@
 
         
         _messages = [[NSMutableArray alloc] init];
+        _delegates = [[NSMutableArray alloc] init];
+//        self.controllerId   = 0;
         
         [self socketOpen];
     }
@@ -52,10 +58,10 @@
     return self;
 }
 
-- (void) initDelegate:(id<SocketServiceDelegate>) delegate
-{
-    [self setDelegate:delegate];
-}
+//- (void) initDelegate:(id<SocketServiceDelegate>) delegate
+//{
+//    [self setDelegate:delegate];
+//}
 
 
 - (SRReadyState) getSocketStatus
@@ -76,11 +82,10 @@
     }
     else
     {
-//        [JDFacade facade].loginUser = [[LoginModel alloc] init];
         NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:_strSocketURL]];
         if([[JDFacade facade].loginUser authorization]!=nil)
         {
-            [request setValue:[[JDFacade facade].loginUser authorization] forHTTPHeaderField:@"Authorization"];
+            [request setValue:[[JDFacade facade].loginUser authorization] forHTTPHeaderField:API_AUTHORIZATION_KEY];
         }
         NSLog(@"All Header Info : %@", request.allHTTPHeaderFields);
         _socket = [[SRWebSocket alloc] initWithURLRequest:request];
@@ -125,9 +130,10 @@
 
 - (void) sendData:(NSDictionary *)data
 {
-
+    NSLog(@"Send Data : %@", data);
     if(_socket.readyState == SR_OPEN)
     {
+        NSLog(@"1");
         NSError *error;
         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data
                                                            options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
@@ -146,17 +152,40 @@
     }
     else if ( _socket.readyState == SR_CLOSED || _socket.readyState == SR_CLOSING )
     {
-        // TODO : 미전송 메세지 저장하고 있기
+        NSLog(@"2");
         [_messages addObject:data];
         [self reConnect];
     }
     else
     {
+        NSLog(@"3");
         [_messages addObject:data];
+        if(!_isConnected)
+        {
+            [self socketOpen];
+        }
     }
 
 }
 
+- (void) sendDataWithDelegate:(NSDictionary *)data delegate:(id)delegate
+{
+    [self addDelegate:delegate];
+    [self sendData:data];
+}
+
+
+- (void)addDelegate:(id)delegate {
+//    short controllerId = self.controllerId++;
+//    if (self.controllerId >= INT16_MAX) {
+//        self.controllerId = 0;
+//    }
+    [_delegates addObject:delegate];
+}
+
+- (void)removeDelegate:(id)delegate {
+    [_delegates removeObject:delegate];
+}
 
 -(void) reConnect
 {
@@ -185,9 +214,13 @@
         [_messages removeObject:data];
     }
     
-    if (self.delegate && [self.delegate respondsToSelector:@selector(socketConnectComplete)]) {
-        [self.delegate socketConnectComplete];
+    for (id controller in _delegates) {
+        if (controller && [controller respondsToSelector:@selector(socketConnectComplete)]) {
+            [controller socketConnectComplete];
+        }
     }
+    
+    
 }
 
 - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message
@@ -217,10 +250,15 @@
 
         id JSONModel = nil;
         JSONModel = [[SocketModel alloc] initWithDictionary:jsonObj error:&error];
+
+        
         
-        if (self.delegate && [self.delegate respondsToSelector:@selector(socketDidReceiveMessage:info:)]) {
-            
-            [self.delegate socketDidReceiveMessage:JSONModel info:jsonObj];
+        for (id controller in _delegates) {
+            if (controller!=nil && [controller respondsToSelector:@selector(socketDidReceiveMessage:info:)]) {
+                
+                [controller socketDidReceiveMessage:JSONModel info:jsonObj];
+                [self removeDelegate:controller];
+            }
         }
         
         // TODO : 전달받은 데이터로 자동으로 처리할 내용이 있으면 이곳에서 처리할것

+ 3 - 1
OneCable/Classes/JDFacade.h

@@ -158,6 +158,8 @@ extern CGRect gKeyboardRect;
 - (BOOL)redirectNSLog;
 - (void)showFlex;
 
-
+-(NSString *)getUrlWithCustID:(NSString *)str aditional:(NSString *)aditional;
+-(NSString *)getUrlWithCustAndGroupID:(NSString *)str aditional:(NSString *)aditional;
+-(NSString *)getUrlWithCustGroupIDAndMemberID:(NSString *)str;
 
 @end

+ 31 - 0
OneCable/Classes/JDFacade.m

@@ -860,5 +860,36 @@ static NSString *const ksKeychainArchiveData = @"_archiveData";
     return self;
 }
 
+-(NSString *)getUrlWithCustID:(NSString *)str aditional:(NSString *)aditional {
+    NSString *result = @"";
+    if ([aditional isEmptyString]) {
+        result = [NSString stringWithFormat:str, _loginUser.custId, aditional];
+    }
+    else {
+        result = [NSString stringWithFormat:str, _loginUser.custId];
+    }
+        
+    
+    return result;
+}
+
+-(NSString *)getUrlWithCustAndGroupID:(NSString *)str aditional:(NSString *)aditional {
+    NSString *result = @"";
+    if ([aditional isEmptyString]) {
+        result = [NSString stringWithFormat:str, _loginUser.custId, _loginUser.ctrtGrpId, aditional];
+    }
+    else {
+        result = [NSString stringWithFormat:str, _loginUser.custId, _loginUser.ctrtGrpId];
+    }
+    
+    
+    return result;
+}
+
+-(NSString *)getUrlWithCustGroupIDAndMemberID:(NSString *)str {
+    return [NSString stringWithFormat:str, _loginUser.custId, _loginUser.ctrtGrpId, _loginUser.memberId];
+}
+
+
 
 @end

+ 2 - 0
OneCable/Classes/ViewControllers/JDViewController.h

@@ -37,6 +37,8 @@
 
 
 - (void)sendDataToSocket:(NSDictionary *)data;
+- (void)sendDataToSocketWithOutDelegate:(NSDictionary *)data;
+- (void)closeSocket;
 - (BOOL)isSocketConnected;
 - (SRReadyState)getSocketStatus;
 

+ 9 - 1
OneCable/Classes/ViewControllers/JDViewController.m

@@ -201,10 +201,18 @@
 
 - (void)sendDataToSocket:(NSDictionary *)data
 {
-    [[SocketServiceHandler sharedManager] initDelegate:self];
+    [[SocketServiceHandler sharedManager] sendDataWithDelegate:data delegate:self];
+}
+
+- (void)sendDataToSocketWithOutDelegate:(NSDictionary *)data
+{
     [[SocketServiceHandler sharedManager] sendData:data];
 }
 
+- (void)closeSocket{
+    [[SocketServiceHandler sharedManager] close];
+}
+
 - (BOOL)isSocketConnected
 {
     return [[SocketServiceHandler sharedManager] isSocketConnected];

+ 8 - 3
OneCable/Classes/ViewControllers/MainScreens/LoginViewController.m

@@ -339,7 +339,8 @@
 }
 
 - (void)requestLogout {
-    NSDictionary *param = @{@"message_type": @"auth.out"};
+    NSDictionary *param = @{API_AUTHORIZATION_KEY: [[JDFacade facade].loginUser authorization],
+                            @"message_type": @"auth.out"};
     
     [self sendDataToSocket:param];
     
@@ -366,7 +367,7 @@
     }
     
     [JDFacade facade].loginUser = nil;
-    
+    [self closeSocket];
     //root view 변경
     [[JDFacade facade].appDelegate.window setRootViewController:self];
 }
@@ -446,7 +447,7 @@
 - (void) socketDidReceiveMessage:(id)message info:(NSDictionary *)info
 {
     SocketModel *result = (SocketModel *)message;
-    
+    NSLog(@"Result Info : %@", result);
     SWITCH(result.messageType)
     {
         CASE (@"auth")
@@ -471,6 +472,10 @@
             if (result.isSuccess) {
                 [self actionAfterLogout];
             }
+            else {
+                NSLog(@"Result Info : %@", result);
+            }
+                
         }
         DEFAULT
         {

+ 3 - 2
OneCable/Classes/ViewControllers/MainScreens/MainViewController.m

@@ -209,8 +209,9 @@
 - (void)requestDashboard:(JDFacadeCompletionCallBackHandler)completion {
     //parameters
     NSDictionary *parameter = @{@"device_id": [JDFacade facade].loginUser.noticeReadTime ? [JDFacade facade].loginUser.noticeReadTime : ksEmptyString};
-    
-    NSString *path = [NSString stringWithFormat:API_GET_DASHBOARD, [[JDFacade facade].loginUser custId], [[JDFacade facade].loginUser ctrtGrpId]];
+  
+    NSString *path = [[JDFacade facade] getUrlWithCustAndGroupID:API_GET_DASHBOARD aditional:nil];
+//    NSString *path = [NSString stringWithFormat:API_GET_DASHBOARD, [[JDFacade facade].loginUser custId], [[JDFacade facade].loginUser ctrtGrpId]];
     
     [[RequestHandler handler] sendAsyncGetRequestAPIPath:path parameters:parameter modelClass:[DashboardModel class] completion:^(id responseObject) {
         if (!responseObject) {//응답결과가 잘못되었거나 없을 경우,

+ 9 - 4
OneCable/Classes/ViewControllers/SettingsScreens/PwdPopupView.m

@@ -39,7 +39,7 @@
 
             _txtPwd.secureTextEntry = YES;
             _txtPwd.keyboardType = UIKeyboardTypeDefault;
-            _txtPwd.returnKeyType = UIReturnKeyDone;
+            _txtPwd.returnKeyType = UIReturnKeyNext;
 
             _txtPwdConfirm.delegate = self;
             _txtPwdConfirm.secureTextEntry = YES;
@@ -73,10 +73,11 @@
 - (void)requestSetNewPassword {
 
     //parameters
-    NSDictionary *parameter = @{@"new_password": _txtPwd.text,
-                                @"confirm_password": _txtPwdConfirm.text};
+    NSDictionary *parameter = @{@"password1": _txtPwd.text,
+                                @"password2": _txtPwdConfirm.text};
 
-    NSString *path = [NSString stringWithFormat:API_POST_MEMBER_UPDATE, @"password"];
+    NSString *path = [[JDFacade facade] getUrlWithCustGroupIDAndMemberID:API_POST_MEMBER_UPDATE];
+//    NSString *path = [NSString stringWithFormat:API_POST_MEMBER_UPDATE, @"password"];
 
     [[RequestHandler handler] sendAsyncPutRequestAPIPath:path parameters:parameter modelClass:[JDJSONModel class] completion:^(id responseObject) {
         if (!responseObject) {//응답결과가 잘못되었거나 없을 경우,
@@ -114,9 +115,13 @@
 #pragma mark - CustomTextField
 
 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
+    NSLog(@"이쪽으로 안들어오나?");
     if ([textField isEqual:_txtPwdConfirm]) {
         [self btnConfirmTouched:nil];
     }
+    if ([textField isEqual:_txtPwd]) {
+        [_txtPwdConfirm becomeFirstResponder];
+    }
 
     return YES;
 }