def node_require(script)
  # Resolve script with node to allow for hoisting
  require Pod::Executable.execute_command('node', ['-p',
    "require.resolve(
      '#{script}',
      {paths: [process.argv[1]]},
    )", __dir__]).strip
end
node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')

workspace 'BlueWallet'
platform :ios, min_ios_version_supported
prepare_react_native_project!
setup_permissions(['Camera', 'Notifications'])
linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
  use_frameworks! :linkage => linkage.to_sym
end

# Define a common function to configure shared settings for targets
def configure_target()
  config = use_native_modules!

  use_react_native!(
    # Specify the path directly if use_native_modules! does not provide it
    :path => config[:reactNativePath],
    :app_path => "#{Pod::Config.instance.installation_root}/.."

  )
  pod 'react-native-bw-file-access', :path => '../blue_modules/react-native-bw-file-access'
end


target 'BlueWallet' do
  configure_target()
end

post_install do |installer|
  react_native_post_install(
    installer,
    :mac_catalyst_enabled => true,
    :ccache_enabled => ENV['USE_CCACHE'] == '1',
  )
  # Fix RCTDeprecation module map error with Xcode 16+/26+ (required for react-native-notifications).
  # The bridging header imports RCTBridgeModule.h which does
  # #import <RCTDeprecation/RCTDeprecation.h>. With -fmodules, Clang treats this
  # as a module import and builds a PCM, but PCH verification then fails with
  # "module 'RCTDeprecation' is not defined in any loaded module map file".
  # Fix: remove RCTDeprecation -fmodule-map-file from the consumer xcconfigs
  # so the import resolves as a plain textual include via HEADER_SEARCH_PATHS.
  # No code uses @import RCTDeprecation, so this is safe.
  installer.generated_aggregate_targets.each do |aggregate_target|
    aggregate_target.xcconfigs.each do |config_name, config|
      xcconfig_path = aggregate_target.xcconfig_path(config_name)
      content = File.read(xcconfig_path)
      # Order matters: match -Xcc variant first to avoid leaving a dangling -Xcc
      content.gsub!('-Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" ', '')
      content.gsub!('-fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" ', '')
      File.write(xcconfig_path, content)
    end
  end
end
