unioil-loyalty-rn-app/ios/Pods/lottie-ios/Sources/Private/Model/Extensions/Bundle.swift

35 lines
1.1 KiB
Swift

import Foundation
#if os(iOS) || os(tvOS) || os(watchOS) || targetEnvironment(macCatalyst)
import UIKit
#endif
extension Bundle {
func getAnimationData(_ name: String, subdirectory: String? = nil) throws -> Data? {
// Check for files in the bundle at the given path
let name = name.removingJSONSuffix()
if let url = url(forResource: name, withExtension: "json", subdirectory: subdirectory) {
return try Data(contentsOf: url)
}
// Check for data assets (not available on macOS)
#if os(iOS) || os(tvOS) || os(watchOS) || targetEnvironment(macCatalyst)
let assetKey = subdirectory != nil ? "\(subdirectory ?? "")/\(name)" : name
return NSDataAsset(name: assetKey, bundle: self)?.data
#else
return nil
#endif
}
}
extension String {
fileprivate func removingJSONSuffix() -> String {
// Allow filenames to be passed with a ".json" extension (but not other extensions)
// to keep the behavior from Lottie 2.x - instead of failing to load the animation
guard hasSuffix(".json") else {
return self
}
return (self as NSString).deletingPathExtension
}
}