diff --git a/Sources/WalletConnectRelay/BundleFinder.swift b/Sources/WalletConnectRelay/BundleFinder.swift index a0f0d9e5..497876ff 100644 --- a/Sources/WalletConnectRelay/BundleFinder.swift +++ b/Sources/WalletConnectRelay/BundleFinder.swift @@ -1,9 +1,41 @@ - import Foundation -extension Bundle { - // This will provide access to the resources for the WalletConnectRelay module - static var resourceBundle: Bundle { +private class BundleFinder {} + +extension Foundation.Bundle { + /// Returns the resource bundle associated with the current Swift module. + static var resourceBundle: Bundle = { + let bundleName = "reown_WalletConnectRelay" + let candidates = [ + // Bundle should be present here when the package is linked into an App. + Bundle.main.resourceURL, + // Bundle should be present here when the package is linked into a framework. + Bundle(for: BundleFinder.self).resourceURL, + // For command-line tools. + Bundle.main.bundleURL, + // Bundle should be present here when running tests. + Bundle(for: BundleFinder.self).resourceURL? + .deletingLastPathComponent() + .deletingLastPathComponent() + .deletingLastPathComponent(), + // Other possibilities + Bundle(for: BundleFinder.self).resourceURL? + .deletingLastPathComponent() + .deletingLastPathComponent(), + ] + + for candidate in candidates { + let bundlePath = candidate?.appendingPathComponent(bundleName + ".bundle") + if let bundle = bundlePath.flatMap(Bundle.init(url:)) { + return bundle + } + } + + // If we can't find the bundle, fall back to the module bundle if available + #if SWIFT_PACKAGE return Bundle.module - } + #else + return Bundle(for: BundleFinder.self) + #endif + }() } diff --git a/Sources/WalletConnectRelay/PackageConfig.json b/Sources/WalletConnectRelay/PackageConfig.json index 97901a72..c2ad4cfc 100644 --- a/Sources/WalletConnectRelay/PackageConfig.json +++ b/Sources/WalletConnectRelay/PackageConfig.json @@ -1 +1 @@ -{"version": "1.0.2"} +{"version": "1.0.3"}