mirror of
https://github.com/Sea-Haven-Industries/proposal-system.git
synced 2026-09-30 15:53:15 +00:00
* Add iOS native project for React Native mobile app Xcode project with bundle ID com.seahavenind.proposals, CocoaPods configuration, and app scaffolding. * Add Fastlane configuration for iOS builds and TestFlight distribution Configures match with S3 storage (seahaven-ios-certificates bucket) for code signing and a beta lane for automated TestFlight uploads. * Add mobile CI job and iOS CD workflow (disabled) CI: adds mobile typecheck job on PRs. CD: deploy-mobile.yaml builds and uploads to TestFlight via Fastlane on a macOS runner with OIDC auth for match S3 access. Currently workflow_dispatch only — activate for V1 release. * Refactor workflows to thin wrappers calling org reusable workflows CI jobs now call ci-dotnet, ci-typescript-cdk, and ci-python-sam from the org repo. Deploy calls cd-cdk with post-deploy script for web build/S3/CloudFront. Mobile deploy calls cd-mobile-ios. Adds deploy concurrency groups to both deploy workflows. * Add mobile Dependabot entries and remove assignees Add npm and bundler ecosystems for mobile/. Remove assignees from all entries — convention no longer in use. * Add comprehensive README for the proposal-system monorepo * Fix mobile TypeScript errors and add package-lock.json Fix tsconfig.json (remove rootDir/outDir, add noEmit), fix useRef type error, fix navigation type cast, add @types/react-native-vector-icons, and generate package-lock.json for CI. * Add .npmrc for mobile to resolve peer dependency conflicts react-native-screens@4.x requires react-native >= 0.82 but the project uses 0.79. legacy-peer-deps allows installation until the next React Native upgrade.
48 lines
1.2 KiB
Swift
48 lines
1.2 KiB
Swift
import UIKit
|
|
import React
|
|
import React_RCTAppDelegate
|
|
import ReactAppDependencyProvider
|
|
|
|
@main
|
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
|
var window: UIWindow?
|
|
|
|
var reactNativeDelegate: ReactNativeDelegate?
|
|
var reactNativeFactory: RCTReactNativeFactory?
|
|
|
|
func application(
|
|
_ application: UIApplication,
|
|
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
|
|
) -> Bool {
|
|
let delegate = ReactNativeDelegate()
|
|
let factory = RCTReactNativeFactory(delegate: delegate)
|
|
delegate.dependencyProvider = RCTAppDependencyProvider()
|
|
|
|
reactNativeDelegate = delegate
|
|
reactNativeFactory = factory
|
|
|
|
window = UIWindow(frame: UIScreen.main.bounds)
|
|
|
|
factory.startReactNative(
|
|
withModuleName: "ProposalSystem",
|
|
in: window,
|
|
launchOptions: launchOptions
|
|
)
|
|
|
|
return true
|
|
}
|
|
}
|
|
|
|
class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {
|
|
override func sourceURL(for bridge: RCTBridge) -> URL? {
|
|
self.bundleURL()
|
|
}
|
|
|
|
override func bundleURL() -> URL? {
|
|
#if DEBUG
|
|
RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
|
|
#else
|
|
Bundle.main.url(forResource: "main", withExtension: "jsbundle")
|
|
#endif
|
|
}
|
|
}
|