RCTImageResponseObserverProxy.mm 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. #import "RCTImageResponseObserverProxy.h"
  8. #import <React/RCTUtils.h>
  9. #import <react/imagemanager/ImageResponse.h>
  10. #import <react/imagemanager/ImageResponseObserver.h>
  11. #import <react/utils/ManagedObjectWrapper.h>
  12. namespace facebook {
  13. namespace react {
  14. RCTImageResponseObserverProxy::RCTImageResponseObserverProxy(id<RCTImageResponseDelegate> delegate)
  15. : delegate_(delegate)
  16. {
  17. }
  18. void RCTImageResponseObserverProxy::didReceiveImage(ImageResponse const &imageResponse) const
  19. {
  20. UIImage *image = (UIImage *)unwrapManagedObject(imageResponse.getImage());
  21. id<RCTImageResponseDelegate> delegate = delegate_;
  22. auto this_ = this;
  23. RCTExecuteOnMainQueue(^{
  24. [delegate didReceiveImage:image fromObserver:this_];
  25. });
  26. }
  27. void RCTImageResponseObserverProxy::didReceiveProgress(float progress) const
  28. {
  29. auto this_ = this;
  30. id<RCTImageResponseDelegate> delegate = delegate_;
  31. RCTExecuteOnMainQueue(^{
  32. [delegate didReceiveProgress:progress fromObserver:this_];
  33. });
  34. }
  35. void RCTImageResponseObserverProxy::didReceiveFailure() const
  36. {
  37. auto this_ = this;
  38. id<RCTImageResponseDelegate> delegate = delegate_;
  39. RCTExecuteOnMainQueue(^{
  40. [delegate didReceiveFailureFromObserver:this_];
  41. });
  42. }
  43. } // namespace react
  44. } // namespace facebook