Skip to content

Commit

Permalink
add ios implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
TheRogue76 committed Apr 12, 2024
1 parent 0b18fbf commit f16422e
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 105 deletions.
2 changes: 1 addition & 1 deletion apps/fabric/ios/Podfile
Expand Up @@ -13,7 +13,7 @@ prepare_react_native_project!
# dependencies: {
# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
# ```
flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
flipper_config = FlipperConfiguration.disabled

linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
Expand Down
106 changes: 3 additions & 103 deletions apps/fabric/ios/Podfile.lock
@@ -1,64 +1,7 @@
PODS:
- boost (1.83.0)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- FBLazyVector (0.73.5)
- Flipper (0.201.0):
- Flipper-Folly (~> 2.6)
- Flipper-Boost-iOSX (1.76.0.1.11)
- Flipper-DoubleConversion (3.2.0.1)
- Flipper-Fmt (7.1.7)
- Flipper-Folly (2.6.10):
- Flipper-Boost-iOSX
- Flipper-DoubleConversion
- Flipper-Fmt (= 7.1.7)
- Flipper-Glog
- libevent (~> 2.1.12)
- OpenSSL-Universal (= 1.1.1100)
- Flipper-Glog (0.5.0.5)
- Flipper-PeerTalk (0.0.4)
- FlipperKit (0.201.0):
- FlipperKit/Core (= 0.201.0)
- FlipperKit/Core (0.201.0):
- Flipper (~> 0.201.0)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- SocketRocket (~> 0.6.0)
- FlipperKit/CppBridge (0.201.0):
- Flipper (~> 0.201.0)
- FlipperKit/FBCxxFollyDynamicConvert (0.201.0):
- Flipper-Folly (~> 2.6)
- FlipperKit/FBDefines (0.201.0)
- FlipperKit/FKPortForwarding (0.201.0):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.201.0)
- FlipperKit/FlipperKitLayoutHelpers (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- FlipperKit/FlipperKitLayoutIOSDescriptors (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- FlipperKit/FlipperKitLayoutPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- FlipperKit/FlipperKitLayoutIOSDescriptors
- FlipperKit/FlipperKitLayoutTextSearchable
- FlipperKit/FlipperKitLayoutTextSearchable (0.201.0)
- FlipperKit/FlipperKitNetworkPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.201.0):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- fmt (6.2.1)
- glog (0.3.5)
- hermes-engine (0.73.5):
Expand Down Expand Up @@ -86,7 +29,6 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- OpenSSL-Universal (1.1.1100)
- RCT-Folly (2022.05.16.00):
- boost
- DoubleConversion
Expand Down Expand Up @@ -1180,31 +1122,10 @@ DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- Flipper (= 0.201.0)
- Flipper-Boost-iOSX (= 1.76.0.1.11)
- Flipper-DoubleConversion (= 3.2.0.1)
- Flipper-Fmt (= 7.1.7)
- Flipper-Folly (= 2.6.10)
- Flipper-Glog (= 0.5.0.5)
- Flipper-PeerTalk (= 0.0.4)
- FlipperKit (= 0.201.0)
- FlipperKit/Core (= 0.201.0)
- FlipperKit/CppBridge (= 0.201.0)
- FlipperKit/FBCxxFollyDynamicConvert (= 0.201.0)
- FlipperKit/FBDefines (= 0.201.0)
- FlipperKit/FKPortForwarding (= 0.201.0)
- FlipperKit/FlipperKitHighlightOverlay (= 0.201.0)
- FlipperKit/FlipperKitLayoutPlugin (= 0.201.0)
- FlipperKit/FlipperKitLayoutTextSearchable (= 0.201.0)
- FlipperKit/FlipperKitNetworkPlugin (= 0.201.0)
- FlipperKit/FlipperKitReactPlugin (= 0.201.0)
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.201.0)
- FlipperKit/SKIOSNetworkPlugin (= 0.201.0)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- libevent (~> 2.1.12)
- lottie-react-native (from `../node_modules/lottie-react-native`)
- OpenSSL-Universal (= 1.1.1100)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
Expand All @@ -1213,7 +1134,6 @@ DEPENDENCIES:
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
- React-Codegen (from `build/generated/ios`)
- React-Core (from `../node_modules/react-native/`)
- React-Core/DevSupport (from `../node_modules/react-native/`)
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
- React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
- React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
Expand Down Expand Up @@ -1257,19 +1177,9 @@ DEPENDENCIES:

SPEC REPOS:
trunk:
- CocoaAsyncSocket
- Flipper
- Flipper-Boost-iOSX
- Flipper-DoubleConversion
- Flipper-Fmt
- Flipper-Folly
- Flipper-Glog
- Flipper-PeerTalk
- FlipperKit
- fmt
- libevent
- lottie-ios
- OpenSSL-Universal
- SocketRocket

EXTERNAL SOURCES:
Expand Down Expand Up @@ -1381,24 +1291,14 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
FBLazyVector: 56e0e498dbb513b96c40bac6284729ba4e62672d
Flipper: c7a0093234c4bdd456e363f2f19b2e4b27652d44
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
FlipperKit: 37525a5d056ef9b93d1578e04bc3ea1de940094f
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
lottie-ios: e047b1d2e6239b787cc5e9755b988869cf190494
lottie-react-native: 4298b325ee30ba23cb33a8146b3ebf8c837d8df1
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87
RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c
Expand Down Expand Up @@ -1445,8 +1345,8 @@ SPEC CHECKSUMS:
React-utils: 987a4526a2fc0acdfaf87888adfe0bf9d0452066
ReactCommon: 2947b0bffd82ea0e58ca7928881152d4c6dae9af
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
Yoga: 9e6a04eacbd94f97d94577017e9f23b3ab41cf6c
Yoga: a716eea57d0d3430219c0a5a233e1e93ee931eb7

PODFILE CHECKSUM: 40287ce1aaf5414bc3bea07749a9018d1c25c132
PODFILE CHECKSUM: 8d8c8c56202423996850d60b88cc49585ff1b2a5

COCOAPODS: 1.14.0
COCOAPODS: 1.14.3
11 changes: 11 additions & 0 deletions packages/core/ios/Fabric/LottieAnimationViewComponentView.mm
Expand Up @@ -168,6 +168,17 @@ - (void)onAnimationLoaded
std::dynamic_pointer_cast<const LottieAnimationViewEventEmitter>(_eventEmitter)->onAnimationLoaded(event);
}

- (void)onAnimationLoadStart
{
if(!_eventEmitter) {
return;
}

LottieAnimationViewEventEmitter::OnAnimationLoadStart event = {};

std::dynamic_pointer_cast<const LottieAnimationViewEventEmitter>(_eventEmitter)->onAnimationLoadStart(event);
}

@end

Class<RCTComponentViewProtocol> LottieAnimationViewCls(void)
Expand Down
1 change: 1 addition & 0 deletions packages/core/ios/Fabric/LottieContainerView.h
Expand Up @@ -9,6 +9,7 @@
- (void)onAnimationFinishWithIsCancelled:(BOOL)isCancelled;
- (void)onAnimationFailureWithError:(NSString*)error;
- (void)onAnimationLoaded;
- (void)onAnimationLoadStart;
@end

@interface LottieContainerView : RCTView
Expand Down
17 changes: 17 additions & 0 deletions packages/core/ios/LottieReactNative/ContainerView.swift
Expand Up @@ -5,6 +5,7 @@ import Foundation
func onAnimationFinish(isCancelled: Bool)
func onAnimationFailure(error: String)
func onAnimationLoaded()
func onAnimationLoadStart()
}

/* There are Two Views being implemented here:
Expand All @@ -28,6 +29,7 @@ class ContainerView: RCTView {
@objc var onAnimationFinish: RCTBubblingEventBlock?
@objc var onAnimationFailure: RCTBubblingEventBlock?
@objc var onAnimationLoaded: RCTBubblingEventBlock?
@objc var onAnimationLoadStart: RCTBubblingEventBlock?

@objc var completionCallback: LottieCompletionBlock {
return { [weak self] animationFinished in
Expand Down Expand Up @@ -64,6 +66,17 @@ class ContainerView: RCTView {
self.delegate?.onAnimationLoaded()
}
}

@objc var loadStartCallback: () -> Void {
return { [weak self] in
guard let self = self else { return }

if let onLoadStart = self.onAnimationLoadStart {
onLoadStart([:])
}
self.delegate?.onAnimationLoadStart()
}
}

#if !(os(OSX))
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
Expand Down Expand Up @@ -162,6 +175,7 @@ class ContainerView: RCTView {
}

@objc func setSourceDotLottieURI(_ uri: String) {
self.loadStartCallback()
if checkReactSourceString(uri) {
return
}
Expand All @@ -185,6 +199,7 @@ class ContainerView: RCTView {
}

@objc func setSourceURL(_ newSourceURLString: String) {
self.loadStartCallback()
if checkReactSourceString(newSourceURLString) {
return
}
Expand All @@ -202,6 +217,7 @@ class ContainerView: RCTView {
}

@objc func setSourceJson(_ newSourceJson: String) {
self.loadStartCallback()
if checkReactSourceString(newSourceJson) {
return
}
Expand All @@ -223,6 +239,7 @@ class ContainerView: RCTView {
}

@objc func setSourceName(_ newSourceName: String) {
self.loadStartCallback()
if checkReactSourceString(newSourceName) {
return
}
Expand Down
Expand Up @@ -15,6 +15,7 @@ @interface RCT_EXTERN_MODULE(LottieAnimationView, RCTViewManager)
RCT_EXPORT_VIEW_PROPERTY(onAnimationFinish, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onAnimationFailure, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onAnimationLoaded, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onAnimationLoadStart, RCTBubblingEventBlock);
RCT_EXPORT_VIEW_PROPERTY(colorFilters, LRNColorFilters);
RCT_EXPORT_VIEW_PROPERTY(textFiltersIOS, NSArray);
RCT_EXPORT_VIEW_PROPERTY(renderMode, NSString);
Expand Down
Expand Up @@ -59,7 +59,7 @@ export interface NativeProps extends ViewProps {
onAnimationLoadStart?: BubblingEventHandler<
AnimationLoadStartEvent,
'onAnimationLoadStart'
>
>;
onAnimationFinish?: BubblingEventHandler<
AnimationFinishEvent,
'onAnimationFinish'
Expand Down

0 comments on commit f16422e

Please sign in to comment.