* [ios] fix animationModule callback recursively bug

Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/625c80cd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/625c80cd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/625c80cd

Branch: refs/heads/0.16-dev
Commit: 625c80cd4b64d4029933f125d3793de17152f9af
Parents: 6c4ca52
Author: doumafang <[email protected]>
Authored: Tue Sep 19 14:41:27 2017 +0800
Committer: doumafang <[email protected]>
Committed: Tue Sep 19 14:41:27 2017 +0800

----------------------------------------------------------------------
 .../WeexSDK/Sources/Module/WXAnimationModule.m  | 26 +++++++++++++++-----
 1 file changed, 20 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/625c80cd/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m 
b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index 824431d..962763b 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -43,7 +43,6 @@
 - (id)copyWithZone:(NSZone *)zone
 {
     WXAnimationInfo *info = [[WXAnimationInfo allocWithZone:zone] init];
-    
     info.target = self.target;
     info.propertyName = self.propertyName;
     info.fromValue = self.fromValue;
@@ -51,7 +50,6 @@
     info.duration = self.duration;
     info.delay = self.delay;
     info.timingFunction = self.timingFunction;
-    
     return info;
 }
 
@@ -138,6 +136,7 @@
 
 @property (nonatomic,assign) BOOL needLayout;
 @property (nonatomic, strong) WXTransition *transition;
+@property (nonatomic, assign) BOOL isAnimationedSuccess;
 
 @end
 
@@ -150,11 +149,14 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
 - (void)transition:(NSString *)nodeRef args:(NSDictionary *)args 
callback:(WXModuleCallback)callback
 {
     _needLayout = NO;
+    _isAnimationedSuccess = YES;
     WXPerformBlockOnComponentThread(^{
         WXComponent *targetComponent = [self.weexInstance 
componentForRef:nodeRef];
         if (!targetComponent) {
             if (callback) {
-                callback([NSString stringWithFormat:@"No component find for 
ref:%@", nodeRef]);
+                NSDictionary *message = @{@"result":@"Fail",
+                                          @"message":[NSString 
stringWithFormat:@"No component find for ref:%@", nodeRef]};
+                callback(message);
             }
             return;
         }
@@ -164,6 +166,7 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
     });
 }
 
+
 - (NSArray<WXAnimationInfo *> *)animationInfoArrayFromArgs:(NSDictionary 
*)args target:(WXComponent *)target
 {
     UIView *view = target.view;
@@ -296,7 +299,6 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
             }
         }
     }
-
     return infos;
 }
 
@@ -338,7 +340,17 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
     [CATransaction setAnimationTimingFunction:[WXConvert 
CAMediaTimingFunction:args[@"timingFunction"]]];
     [CATransaction setCompletionBlock:^{
         if (callback) {
-            callback(@"SUCCESS");
+            NSDictionary *message;
+            if (_isAnimationedSuccess) {
+                message = @{@"result":@"Success",
+                            @"message":@"Success"};
+            }
+            else
+            {
+                message = @{@"result":@"Fail",
+                            @"message":@"Animation did not complete"};
+            }
+            callback(message);
         }
     }];
     NSArray<WXAnimationInfo *> *infos = [self animationInfoArrayFromArgs:args 
target:targetComponent];
@@ -366,7 +378,9 @@ WX_EXPORT_METHOD(@selector(transition:args:callback:))
     animation.fillMode = kCAFillModeForwards;
     
     WXAnimationDelegate *delegate = [[WXAnimationDelegate alloc] 
initWithAnimationInfo:info finishBlock:^(BOOL isFinish) {
-        
+        if (!isFinish) {
+            _isAnimationedSuccess = isFinish;
+        }
     }];
     animation.delegate = delegate;
     

Reply via email to