diff --git a/.github/workflows/build-production-mobile.yml b/.github/workflows/mobile-build.yml similarity index 73% rename from .github/workflows/build-production-mobile.yml rename to .github/workflows/mobile-build.yml index c38770cba1..026a436b79 100644 --- a/.github/workflows/build-production-mobile.yml +++ b/.github/workflows/mobile-build.yml @@ -1,7 +1,13 @@ -name: Build Tlon Mobile [Production] +name: Build Tlon Mobile on: workflow_dispatch: inputs: + profile: + type: choice + description: Select profile + options: + - preview + - production platform: type: choice description: Select platform @@ -15,7 +21,7 @@ env: jobs: deploy: runs-on: ubuntu-latest - name: Create new build + name: Create mobile builds steps: - name: Check out repository uses: actions/checkout@v4 @@ -32,7 +38,7 @@ jobs: run: npm ci - name: Build for selected platforms working-directory: ./apps/tlon-mobile - run: eas build --profile production --platform ${{ inputs.platform || 'all' }} --non-interactive --auto-submit + run: eas build --profile ${{ inputs.profile || 'preview' }} --platform ${{ inputs.platform || 'all' }} --non-interactive --auto-submit env: EXPO_APPLE_ID: ${{ secrets.EXPO_APPLE_ID }} EXPO_APPLE_PASSWORD: ${{ secrets.EXPO_APPLE_PASSWORD }} diff --git a/.github/workflows/update-production-mobile.yml b/.github/workflows/mobile-update.yml similarity index 52% rename from .github/workflows/update-production-mobile.yml rename to .github/workflows/mobile-update.yml index f650f46d79..0087665408 100644 --- a/.github/workflows/update-production-mobile.yml +++ b/.github/workflows/mobile-update.yml @@ -1,13 +1,27 @@ -name: Push Tlon Mobile Update [Production] +name: Push Tlon Mobile Update on: workflow_dispatch: + inputs: + profile: + type: choice + description: Select profile + options: + - preview + - production + platform: + type: choice + description: Select platform + options: + - all + - android + - ios env: NOTIFY_PROVIDER: rivfur-livmet NOTIFY_SERVICE: groups-native jobs: deploy: runs-on: ubuntu-latest - name: Push update + name: Push mobile updates steps: - name: Check out repository uses: actions/checkout@v4 @@ -22,6 +36,6 @@ jobs: token: ${{ secrets.EXPO_TOKEN }} - name: Install dependencies run: npm ci - - name: Push update for all platforms + - name: Push update for selected platforms working-directory: ./apps/tlon-mobile - run: eas update --auto --platform all --channel production --non-interactive + run: eas update --auto --profile ${{ inputs.profile || 'preview' }} --platform ${{ inputs.platform || 'all' }} --non-interactive diff --git a/apps/tlon-mobile/android/app/build.gradle b/apps/tlon-mobile/android/app/build.gradle index a5605dff58..c677aef716 100644 --- a/apps/tlon-mobile/android/app/build.gradle +++ b/apps/tlon-mobile/android/app/build.gradle @@ -82,16 +82,13 @@ def jscFlavor = 'org.webkit:android-jsc:+' android { ndkVersion rootProject.ext.ndkVersion - buildToolsVersion rootProject.ext.buildToolsVersion - compileSdk rootProject.ext.compileSdkVersion - namespace "io.tlon.landscape" defaultConfig { - applicationId "io.tlon.groups.staging" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 44 - versionName "3.1.3" + compileSdk rootProject.ext.compileSdkVersion + versionCode 45 + versionName "4.0.0" buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString()) } @@ -121,6 +118,17 @@ android { useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false) } } + flavorDimensions "profile" + productFlavors { + production { + dimension "profile" + applicationId "io.tlon.groups" + } + preview { + dimension "profile" + applicationId "io.tlon.groups.preview" + } + } } // Apply static values from `gradle.properties` to the `android.packagingOptions` @@ -173,14 +181,14 @@ dependencies { implementation jscFlavor } - implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("androidx.security:security-crypto-ktx:1.1.0-alpha06") implementation("com.android.volley:volley:1.2.1") // Branch.io - implementation("io.branch.sdk.android:library:5.+") - implementation("com.google.android.gms:play-services-ads-identifier:17.1.0+") - implementation("androidx.browser:browser:1.0.0") + implementation("io.branch.sdk.android:library:5.9.0") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + implementation("androidx.browser:browser:1.7.0") } apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); diff --git a/apps/tlon-mobile/android/app/google-services.json b/apps/tlon-mobile/android/app/google-services.json index 94da9d769d..7f3b21a7f8 100644 --- a/apps/tlon-mobile/android/app/google-services.json +++ b/apps/tlon-mobile/android/app/google-services.json @@ -1,26 +1,65 @@ { "project_info": { - "project_number": "157622845881", - "project_id": "tlon-mobile-staging", - "storage_bucket": "tlon-mobile-staging.appspot.com" + "project_number": "543296749236", + "project_id": "tlon-groups-mobile", + "storage_bucket": "tlon-groups-mobile.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:157622845881:android:e03c63bd5a3bc87cf27668", + "mobilesdk_app_id": "1:543296749236:android:3c51b56a1b8d31173e21e1", "android_client_info": { - "package_name": "io.tlon.groups.staging" + "package_name": "io.tlon.groups" } }, - "oauth_client": [], + "oauth_client": [ + { + "client_id": "543296749236-1l5r4ipguvjdh083t5j7h1eicqi21j0o.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDm8-5daeW5B8j6i_RIoSvOgnx6Fo0gEOU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "543296749236-1l5r4ipguvjdh083t5j7h1eicqi21j0o.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:543296749236:android:5f8dfa09efc9fbb93e21e1", + "android_client_info": { + "package_name": "io.tlon.groups.preview" + } + }, + "oauth_client": [ + { + "client_id": "543296749236-1l5r4ipguvjdh083t5j7h1eicqi21j0o.apps.googleusercontent.com", + "client_type": 3 + } + ], "api_key": [ { - "current_key": "AIzaSyAPPGSCuJstxYqZnbDCMNzGC6pM8cQHXm0" + "current_key": "AIzaSyDm8-5daeW5B8j6i_RIoSvOgnx6Fo0gEOU" } ], "services": { "appinvite_service": { - "other_platform_oauth_client": [] + "other_platform_oauth_client": [ + { + "client_id": "543296749236-1l5r4ipguvjdh083t5j7h1eicqi21j0o.apps.googleusercontent.com", + "client_type": 3 + } + ] } } } diff --git a/apps/tlon-mobile/android/app/src/main/AndroidManifest.xml b/apps/tlon-mobile/android/app/src/main/AndroidManifest.xml index 52f03ad11b..9f185e80eb 100644 --- a/apps/tlon-mobile/android/app/src/main/AndroidManifest.xml +++ b/apps/tlon-mobile/android/app/src/main/AndroidManifest.xml @@ -19,6 +19,8 @@ + + @@ -26,7 +28,7 @@ - + @@ -34,32 +36,27 @@ - - + - - - - - - + + + + + - - - - - - + + + + + - - \ No newline at end of file diff --git a/apps/tlon-mobile/android/app/src/main/res/values/strings.xml b/apps/tlon-mobile/android/app/src/main/res/values/strings.xml index 79022f2887..946e2bb7b8 100644 --- a/apps/tlon-mobile/android/app/src/main/res/values/strings.xml +++ b/apps/tlon-mobile/android/app/src/main/res/values/strings.xml @@ -2,7 +2,7 @@ Tlon contain false - 3.1.3 + 4.0.0 Tlon Notifications Channel for receiving push notifications from your Tlon app. Mark as read diff --git a/apps/tlon-mobile/android/app/src/preview/ic_launcher-playstore.png b/apps/tlon-mobile/android/app/src/preview/ic_launcher-playstore.png new file mode 100644 index 0000000000..f898af1956 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/ic_launcher-playstore.png differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-anydpi-v26/ic_launcher.xml b/apps/tlon-mobile/android/app/src/preview/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000000..036d09bc5f --- /dev/null +++ b/apps/tlon-mobile/android/app/src/preview/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-anydpi-v26/ic_launcher_round.xml b/apps/tlon-mobile/android/app/src/preview/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000000..036d09bc5f --- /dev/null +++ b/apps/tlon-mobile/android/app/src/preview/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000..2d1835ce23 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher_foreground.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000..c031e83430 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher_round.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000..2feb96bb23 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000..9fc2bfa3fd Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher_foreground.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000..afead934a7 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher_round.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000..6346e56d9c Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000..8148112363 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher_foreground.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000..d433682171 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher_round.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000..ef49c47f8e Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000..9f659ee503 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000..7e9b060967 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher_round.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000..fb7aa0538e Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000..395427aa9a Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000..b771e1edf1 Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher_round.webp b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000..24e66357ed Binary files /dev/null and b/apps/tlon-mobile/android/app/src/preview/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/apps/tlon-mobile/android/app/src/preview/res/values/ic_launcher_background.xml b/apps/tlon-mobile/android/app/src/preview/res/values/ic_launcher_background.xml new file mode 100644 index 0000000000..beab31f753 --- /dev/null +++ b/apps/tlon-mobile/android/app/src/preview/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #000000 + \ No newline at end of file diff --git a/apps/tlon-mobile/android/app/src/preview/res/values/strings.xml b/apps/tlon-mobile/android/app/src/preview/res/values/strings.xml new file mode 100644 index 0000000000..c86f613162 --- /dev/null +++ b/apps/tlon-mobile/android/app/src/preview/res/values/strings.xml @@ -0,0 +1,3 @@ + + Tlon - Preview + diff --git a/apps/tlon-mobile/android/build.gradle b/apps/tlon-mobile/android/build.gradle index ffb76d1a60..743999c962 100644 --- a/apps/tlon-mobile/android/build.gradle +++ b/apps/tlon-mobile/android/build.gradle @@ -15,7 +15,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.google.gms:google-services:4.3.15' + classpath('com.google.gms:google-services:4.4.1') classpath('com.android.tools.build:gradle') classpath('com.facebook.react:react-native-gradle-plugin') classpath('com.google.firebase:firebase-crashlytics-gradle:2.9.9') diff --git a/apps/tlon-mobile/app.config.ts b/apps/tlon-mobile/app.config.ts index 32d4bb4dc3..202cd6c43d 100644 --- a/apps/tlon-mobile/app.config.ts +++ b/apps/tlon-mobile/app.config.ts @@ -2,12 +2,13 @@ import 'dotenv/config'; import type { ConfigContext, ExpoConfig } from 'expo/config'; const projectId = '617bb643-5bf6-4c40-8af6-c6e9dd7e3bd0'; +const isPreview = process.env.APP_VARIANT === 'preview'; export default ({ config }: ConfigContext): ExpoConfig => ({ ...config, owner: 'tlon', slug: 'groups', - name: 'Tlon', + name: isPreview ? 'Tlon - Preview' : 'Tlon', assetBundlePatterns: ['**/*'], extra: { eas: { @@ -26,16 +27,15 @@ export default ({ config }: ConfigContext): ExpoConfig => ({ recaptchaSiteKeyIOS: process.env.RECAPTCHA_SITE_KEY_IOS, }, ios: { - bundleIdentifier: 'io.tlon.groups.staging', - runtimeVersion: '3.1.3', - buildNumber: '44', + runtimeVersion: '4.0.0', + buildNumber: '45', config: { usesNonExemptEncryption: false, }, }, android: { - runtimeVersion: '3.1.3', - versionCode: 44, + runtimeVersion: '4.0.0', + versionCode: 45, }, updates: { url: `https://u.expo.dev/${projectId}`, diff --git a/apps/tlon-mobile/eas.json b/apps/tlon-mobile/eas.json index 2ecda7e744..4f29524934 100644 --- a/apps/tlon-mobile/eas.json +++ b/apps/tlon-mobile/eas.json @@ -6,18 +6,42 @@ "build": { "preview": { "channel": "preview", - "distribution": "internal", + "env": { + "APP_VARIANT": "preview" + }, "android": { - "buildType": "apk" + "gradleCommand": ":app:bundlePreviewRelease" + }, + "ios": { + "scheme": "Landscape-preview" } }, "production": { - "channel": "production" + "channel": "production", + "android": { + "gradleCommand": ":app:bundleProductionRelease" + }, + "ios": { + "scheme": "Landscape" + } } }, "submit": { + "preview": { + "android": { + "applicationId": "io.tlon.groups.preview", + "releaseStatus": "draft", + "track": "internal", + "changesNotSentForReview": true + }, + "ios": { + "ascAppId": "6477973000", + "appleTeamId": "XU9PR2N722" + } + }, "production": { "android": { + "applicationId": "io.tlon.groups", "releaseStatus": "draft", "track": "internal", "changesNotSentForReview": true diff --git a/apps/tlon-mobile/ios/GoogleService-Info.plist b/apps/tlon-mobile/ios/GoogleService-Info-io.tlon.groups.plist similarity index 68% rename from apps/tlon-mobile/ios/GoogleService-Info.plist rename to apps/tlon-mobile/ios/GoogleService-Info-io.tlon.groups.plist index 14e6521392..c19de3f2f1 100644 --- a/apps/tlon-mobile/ios/GoogleService-Info.plist +++ b/apps/tlon-mobile/ios/GoogleService-Info-io.tlon.groups.plist @@ -3,17 +3,17 @@ API_KEY - AIzaSyDk3OH2oJyY0rkyw2JV7jA1ClZGBIoSzrM + AIzaSyDnjh8qXbZkuM_Bh1-tkP46FA-y2Uai7pc GCM_SENDER_ID - 157622845881 + 543296749236 PLIST_VERSION 1 BUNDLE_ID - io.tlon.groups.staging + io.tlon.groups PROJECT_ID - tlon-mobile-staging + tlon-groups-mobile STORAGE_BUCKET - tlon-mobile-staging.appspot.com + tlon-groups-mobile.appspot.com IS_ADS_ENABLED IS_ANALYTICS_ENABLED @@ -25,6 +25,6 @@ IS_SIGNIN_ENABLED GOOGLE_APP_ID - 1:157622845881:ios:0142449d758fd047f27668 + 1:543296749236:ios:aec1ebb1ed8b2ef73e21e1 \ No newline at end of file diff --git a/apps/tlon-mobile/ios/GoogleService-Info-io.tlon.groups.preview.plist b/apps/tlon-mobile/ios/GoogleService-Info-io.tlon.groups.preview.plist new file mode 100644 index 0000000000..96824d7539 --- /dev/null +++ b/apps/tlon-mobile/ios/GoogleService-Info-io.tlon.groups.preview.plist @@ -0,0 +1,30 @@ + + + + + API_KEY + AIzaSyDnjh8qXbZkuM_Bh1-tkP46FA-y2Uai7pc + GCM_SENDER_ID + 543296749236 + PLIST_VERSION + 1 + BUNDLE_ID + io.tlon.groups.preview + PROJECT_ID + tlon-groups-mobile + STORAGE_BUCKET + tlon-groups-mobile.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:543296749236:ios:8f24114b091162df3e21e1 + + \ No newline at end of file diff --git a/apps/tlon-mobile/ios/Landscape.xcodeproj/project.pbxproj b/apps/tlon-mobile/ios/Landscape.xcodeproj/project.pbxproj index 15fab22e5a..a3a421cf6c 100644 --- a/apps/tlon-mobile/ios/Landscape.xcodeproj/project.pbxproj +++ b/apps/tlon-mobile/ios/Landscape.xcodeproj/project.pbxproj @@ -8,10 +8,9 @@ /* Begin PBXBuildFile section */ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 3DC46BC1B669DF8F5F059CA8 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ACB38DC4FF4D6377774BF5F /* ExpoModulesProvider.swift */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; - 4BF2FE6387FAE7A22C075035 /* Pods_Landscape.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE023FC01120ED0F85E7F551 /* Pods_Landscape.framework */; }; 700B635B2A71DF860017F40F /* PocketUserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635A2A71DF860017F40F /* PocketUserAPI.swift */; }; 700B635D2A71DFE90017F40F /* Contact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635C2A71DFE90017F40F /* Contact.swift */; }; 700B63602A71E0810017F40F /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635F2A71E0810017F40F /* SettingsStore.swift */; }; @@ -20,6 +19,8 @@ 7036E3522ACD08E30020A9FB /* GroupChannelStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3512ACD08E30020A9FB /* GroupChannelStore.swift */; }; 7036E3542ACD0FC90020A9FB /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3532ACD0FC90020A9FB /* UserDefaultsStore.swift */; }; 7036E3562ACD17600020A9FB /* ClubStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3552ACD17600020A9FB /* ClubStore.swift */; }; + 705D26452B7ECDF200F98AD6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 705D26482B7ECE5400F98AD6 /* Images-preview.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 705D26472B7ECE5400F98AD6 /* Images-preview.xcassets */; }; 7083A16C2AFB01A30022404A /* TlonError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7083A16B2AFB01A30022404A /* TlonError.swift */; }; 709FC0ED2AC1E25D00B0644D /* Club.swift in Sources */ = {isa = PBXBuildFile; fileRef = 709FC0EC2AC1E25D00B0644D /* Club.swift */; }; 70A62C612A5A6B1A00EBED16 /* SimpleKeychain in Frameworks */ = {isa = PBXBuildFile; productRef = 70A62C602A5A6B1A00EBED16 /* SimpleKeychain */; }; @@ -35,6 +36,36 @@ 70D3866F2A60A3B300AFB46E /* UrsusSigil in Frameworks */ = {isa = PBXBuildFile; productRef = 70D3866E2A60A3B300AFB46E /* UrsusSigil */; }; 70D386712A60A3E600AFB46E /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386702A60A3E600AFB46E /* UIColor+Extension.swift */; }; 70D386722A61F2E400AFB46E /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 008F07F21AC5B25A0029DE68 /* main.jsbundle */; }; + 70DBBFEA2B7C60B50021EA96 /* UrbitAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386552A609BFC00AFB46E /* UrbitAPI.swift */; }; + 70DBBFEB2B7C60B50021EA96 /* Club.swift in Sources */ = {isa = PBXBuildFile; fileRef = 709FC0EC2AC1E25D00B0644D /* Club.swift */; }; + 70DBBFEC2B7C60B50021EA96 /* TlonError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7083A16B2AFB01A30022404A /* TlonError.swift */; }; + 70DBBFED2B7C60B50021EA96 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3532ACD0FC90020A9FB /* UserDefaultsStore.swift */; }; + 70DBBFEE2B7C60B50021EA96 /* PocketNotificationsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386562A609BFC00AFB46E /* PocketNotificationsAPI.swift */; }; + 70DBBFEF2B7C60B50021EA96 /* PocketAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386572A609BFC00AFB46E /* PocketAPI.swift */; }; + 70DBBFF02B7C60B50021EA96 /* PushNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386532A609BFC00AFB46E /* PushNotificationManager.swift */; }; + 70DBBFF12B7C60B50021EA96 /* Contact.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635C2A71DFE90017F40F /* Contact.swift */; }; + 70DBBFF22B7C60B50021EA96 /* UrbitModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 70EAEAB62A57AAF200FE96E4 /* UrbitModule.m */; }; + 70DBBFF32B7C60B50021EA96 /* INPerson+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386662A60A37000AFB46E /* INPerson+Extension.swift */; }; + 70DBBFF42B7C60B50021EA96 /* Error+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 701A09AF2B03081300D8F710 /* Error+Extension.swift */; }; + 70DBBFF52B7C60B50021EA96 /* Group.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D3866A2A60A38400AFB46E /* Group.swift */; }; + 70DBBFF62B7C60B50021EA96 /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635F2A71E0810017F40F /* SettingsStore.swift */; }; + 70DBBFF72B7C60B50021EA96 /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386702A60A3E600AFB46E /* UIColor+Extension.swift */; }; + 70DBBFF82B7C60B50021EA96 /* PocketUserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635A2A71DF860017F40F /* PocketUserAPI.swift */; }; + 70DBBFF92B7C60B50021EA96 /* ClubStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3552ACD17600020A9FB /* ClubStore.swift */; }; + 70DBBFFA2B7C60B50021EA96 /* PocketChatAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386612A609CE100AFB46E /* PocketChatAPI.swift */; }; + 70DBBFFB2B7C60B50021EA96 /* GroupChannelStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3512ACD08E30020A9FB /* GroupChannelStore.swift */; }; + 70DBBFFC2B7C60B50021EA96 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; + 70DBBFFD2B7C60B50021EA96 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 70DBBFFF2B7C60B50021EA96 /* UrbitModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70EAEAB42A57A99100FE96E4 /* UrbitModule.swift */; }; + 70DBC0002B7C60B50021EA96 /* ContactStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B63612A71E0D70017F40F /* ContactStore.swift */; }; + 70DBC0012B7C60B50021EA96 /* Yarn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70D386692A60A38400AFB46E /* Yarn.swift */; }; + 70DBC0032B7C60B50021EA96 /* UrsusSigil in Frameworks */ = {isa = PBXBuildFile; productRef = 70DBBFE42B7C60B50021EA96 /* UrsusSigil */; }; + 70DBC0042B7C60B50021EA96 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 70DBBFE22B7C60B50021EA96 /* Alamofire */; }; + 70DBC0052B7C60B50021EA96 /* SimpleKeychain in Frameworks */ = {isa = PBXBuildFile; productRef = 70DBBFE02B7C60B50021EA96 /* SimpleKeychain */; }; + 70DBC0082B7C60B50021EA96 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + 70DBC00B2B7C60B50021EA96 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 70DBC00C2B7C60B50021EA96 /* main.jsbundle in Resources */ = {isa = PBXBuildFile; fileRef = 008F07F21AC5B25A0029DE68 /* main.jsbundle */; }; + 70DBC0182B7C61130021EA96 /* GoogleService-Info-io.tlon.groups.preview.plist in Resources */ = {isa = PBXBuildFile; fileRef = 70DBC0172B7C61130021EA96 /* GoogleService-Info-io.tlon.groups.preview.plist */; }; 70EAEAB52A57A99100FE96E4 /* UrbitModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70EAEAB42A57A99100FE96E4 /* UrbitModule.swift */; }; 70EAEAB92A57CE2A00FE96E4 /* UrbitModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 70EAEAB62A57AAF200FE96E4 /* UrbitModule.m */; }; 70F99A982B2D2B6E00D77256 /* YarnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70F99A972B2D2B6E00D77256 /* YarnTests.swift */; }; @@ -58,9 +89,11 @@ 70F99AAA2B2D337600D77256 /* SettingsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 700B635F2A71E0810017F40F /* SettingsStore.swift */; }; 70F99AAB2B2D337600D77256 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7036E3532ACD0FC90020A9FB /* UserDefaultsStore.swift */; }; 70F99AAC2B2D338E00D77256 /* UrbitModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70EAEAB42A57A99100FE96E4 /* UrbitModule.swift */; }; - B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; + 938C2E18DC4A4F3336AECD7E /* Pods_common_Landscape.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06B83AD4DCBF09E1B8DCC1E4 /* Pods_common_Landscape.framework */; }; BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; - C184662C2ABBDFF1008EA8C0 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C184662B2ABBDFF1008EA8C0 /* GoogleService-Info.plist */; }; + C184662C2ABBDFF1008EA8C0 /* GoogleService-Info-io.tlon.groups.plist in Resources */ = {isa = PBXBuildFile; fileRef = C184662B2ABBDFF1008EA8C0 /* GoogleService-Info-io.tlon.groups.plist */; }; + C515841C010C34E3FD5C5F70 /* Pods_common_Landscape_preview.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD26F8172CFE23D3CFBE5694 /* Pods_common_Landscape_preview.framework */; }; + D0A57BA86BAF5327C2EECEE4 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61ADD28CFDBC6EFBD36E3DA /* ExpoModulesProvider.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -75,12 +108,14 @@ /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 06B83AD4DCBF09E1B8DCC1E4 /* Pods_common_Landscape.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_common_Landscape.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* Landscape.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Landscape.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Landscape/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Landscape/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Landscape/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Landscape/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Landscape/main.m; sourceTree = ""; }; + 3B0B210E999A7E0E1A345468 /* Pods-common-Landscape-preview.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-common-Landscape-preview.release.xcconfig"; path = "Target Support Files/Pods-common-Landscape-preview/Pods-common-Landscape-preview.release.xcconfig"; sourceTree = ""; }; 6C2E3173556A471DD304B334 /* Pods-Landscape.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Landscape.debug.xcconfig"; path = "Target Support Files/Pods-Landscape/Pods-Landscape.debug.xcconfig"; sourceTree = ""; }; 700B635A2A71DF860017F40F /* PocketUserAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PocketUserAPI.swift; sourceTree = ""; }; 700B635C2A71DFE90017F40F /* Contact.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contact.swift; sourceTree = ""; }; @@ -90,6 +125,7 @@ 7036E3512ACD08E30020A9FB /* GroupChannelStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupChannelStore.swift; sourceTree = ""; }; 7036E3532ACD0FC90020A9FB /* UserDefaultsStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaultsStore.swift; sourceTree = ""; }; 7036E3552ACD17600020A9FB /* ClubStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClubStore.swift; sourceTree = ""; }; + 705D26472B7ECE5400F98AD6 /* Images-preview.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = "Images-preview.xcassets"; path = "Landscape/Images-preview.xcassets"; sourceTree = ""; }; 7083A16B2AFB01A30022404A /* TlonError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TlonError.swift; sourceTree = ""; }; 709FC0EC2AC1E25D00B0644D /* Club.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Club.swift; sourceTree = ""; }; 70D386532A609BFC00AFB46E /* PushNotificationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushNotificationManager.swift; sourceTree = ""; }; @@ -101,17 +137,24 @@ 70D386692A60A38400AFB46E /* Yarn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Yarn.swift; sourceTree = ""; }; 70D3866A2A60A38400AFB46E /* Group.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Group.swift; sourceTree = ""; }; 70D386702A60A3E600AFB46E /* UIColor+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = ""; }; + 70DBC0152B7C60B50021EA96 /* Landscape-preview.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Landscape-preview.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 70DBC0172B7C61130021EA96 /* GoogleService-Info-io.tlon.groups.preview.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info-io.tlon.groups.preview.plist"; sourceTree = ""; }; 70EAEAB42A57A99100FE96E4 /* UrbitModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UrbitModule.swift; path = Landscape/UrbitModule.swift; sourceTree = ""; }; 70EAEAB62A57AAF200FE96E4 /* UrbitModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = UrbitModule.m; path = Landscape/UrbitModule.m; sourceTree = ""; }; 70EAEAB72A57AB8400FE96E4 /* Landscape-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Landscape-Bridging-Header.h"; path = "Landscape/Landscape-Bridging-Header.h"; sourceTree = ""; }; 70F99A8E2B2D2B5700D77256 /* LandscapeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LandscapeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 70F99A972B2D2B6E00D77256 /* YarnTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YarnTests.swift; sourceTree = ""; }; + 74633B6584F10A6AA2FEE339 /* Pods-common-Landscape.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-common-Landscape.release.xcconfig"; path = "Target Support Files/Pods-common-Landscape/Pods-common-Landscape.release.xcconfig"; sourceTree = ""; }; 7A4D352CD337FB3A3BF06240 /* Pods-Landscape.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Landscape.release.xcconfig"; path = "Target Support Files/Pods-Landscape/Pods-Landscape.release.xcconfig"; sourceTree = ""; }; + 8ACB38DC4FF4D6377774BF5F /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-common-Landscape-preview/ExpoModulesProvider.swift"; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = Landscape/SplashScreen.storyboard; sourceTree = ""; }; + B35AC6CF758CAFC9D112A69F /* Pods-common-Landscape.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-common-Landscape.debug.xcconfig"; path = "Target Support Files/Pods-common-Landscape/Pods-common-Landscape.debug.xcconfig"; sourceTree = ""; }; BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; - C184662B2ABBDFF1008EA8C0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; - CE023FC01120ED0F85E7F551 /* Pods_Landscape.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Landscape.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C184662B2ABBDFF1008EA8C0 /* GoogleService-Info-io.tlon.groups.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info-io.tlon.groups.plist"; sourceTree = ""; }; + CD26F8172CFE23D3CFBE5694 /* Pods_common_Landscape_preview.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_common_Landscape_preview.framework; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + EE042EA448A634B1DCCA2092 /* Pods-common-Landscape-preview.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-common-Landscape-preview.debug.xcconfig"; path = "Target Support Files/Pods-common-Landscape-preview/Pods-common-Landscape-preview.debug.xcconfig"; sourceTree = ""; }; + F61ADD28CFDBC6EFBD36E3DA /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-common-Landscape/ExpoModulesProvider.swift"; sourceTree = ""; }; FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-Landscape/ExpoModulesProvider.swift"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -123,7 +166,18 @@ 70D3866F2A60A3B300AFB46E /* UrsusSigil in Frameworks */, 70D386482A6098F800AFB46E /* Alamofire in Frameworks */, 70A62C612A5A6B1A00EBED16 /* SimpleKeychain in Frameworks */, - 4BF2FE6387FAE7A22C075035 /* Pods_Landscape.framework in Frameworks */, + 938C2E18DC4A4F3336AECD7E /* Pods_common_Landscape.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 70DBC0022B7C60B50021EA96 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 70DBC0032B7C60B50021EA96 /* UrsusSigil in Frameworks */, + 70DBC0042B7C60B50021EA96 /* Alamofire in Frameworks */, + 70DBC0052B7C60B50021EA96 /* SimpleKeychain in Frameworks */, + C515841C010C34E3FD5C5F70 /* Pods_common_Landscape_preview.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -145,6 +199,7 @@ 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, + 705D26472B7ECE5400F98AD6 /* Images-preview.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, 13B07FB71A68108700A75B9A /* main.m */, AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, @@ -164,11 +219,20 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - CE023FC01120ED0F85E7F551 /* Pods_Landscape.framework */, + 06B83AD4DCBF09E1B8DCC1E4 /* Pods_common_Landscape.framework */, + CD26F8172CFE23D3CFBE5694 /* Pods_common_Landscape_preview.framework */, ); name = Frameworks; sourceTree = ""; }; + 3C9B45BB9D20806D92CA3A84 /* Landscape-preview */ = { + isa = PBXGroup; + children = ( + 8ACB38DC4FF4D6377774BF5F /* ExpoModulesProvider.swift */, + ); + name = "Landscape-preview"; + sourceTree = ""; + }; 700B635E2A71E06E0017F40F /* Storage */ = { isa = PBXGroup; children = ( @@ -245,7 +309,8 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - C184662B2ABBDFF1008EA8C0 /* GoogleService-Info.plist */, + C184662B2ABBDFF1008EA8C0 /* GoogleService-Info-io.tlon.groups.plist */, + 70DBC0172B7C61130021EA96 /* GoogleService-Info-io.tlon.groups.preview.plist */, 13B07FAE1A68108700A75B9A /* Landscape */, 70F99A8F2B2D2B5700D77256 /* LandscapeTests */, 832341AE1AAA6A7D00B99B32 /* Libraries */, @@ -264,6 +329,7 @@ children = ( 13B07F961A680F5B00A75B9A /* Landscape.app */, 70F99A8E2B2D2B5700D77256 /* LandscapeTests.xctest */, + 70DBC0152B7C60B50021EA96 /* Landscape-preview.app */, ); name = Products; sourceTree = ""; @@ -272,6 +338,7 @@ isa = PBXGroup; children = ( FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, + F61ADD28CFDBC6EFBD36E3DA /* ExpoModulesProvider.swift */, ); name = Landscape; sourceTree = ""; @@ -290,6 +357,10 @@ children = ( 6C2E3173556A471DD304B334 /* Pods-Landscape.debug.xcconfig */, 7A4D352CD337FB3A3BF06240 /* Pods-Landscape.release.xcconfig */, + B35AC6CF758CAFC9D112A69F /* Pods-common-Landscape.debug.xcconfig */, + 74633B6584F10A6AA2FEE339 /* Pods-common-Landscape.release.xcconfig */, + EE042EA448A634B1DCCA2092 /* Pods-common-Landscape-preview.debug.xcconfig */, + 3B0B210E999A7E0E1A345468 /* Pods-common-Landscape-preview.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -298,6 +369,7 @@ isa = PBXGroup; children = ( 92DBD88DE9BF7D494EA9DA96 /* Landscape */, + 3C9B45BB9D20806D92CA3A84 /* Landscape-preview */, ); name = ExpoModulesProviders; sourceTree = ""; @@ -315,11 +387,10 @@ 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, + 70DBC01A2B7C61690021EA96 /* Copy GoogleService-Info.plist */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, A8F420A9D9FA89D6A8CAB3CB /* [CP] Embed Pods Frameworks */, - 16BF6871758CF5215ECCA862 /* [CP-User] [RNFB] Core Configuration */, - 996699F1450D9A26847DC9A6 /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -335,6 +406,35 @@ productReference = 13B07F961A680F5B00A75B9A /* Landscape.app */; productType = "com.apple.product-type.application"; }; + 70DBBFDF2B7C60B50021EA96 /* Landscape-preview */ = { + isa = PBXNativeTarget; + buildConfigurationList = 70DBC0122B7C60B50021EA96 /* Build configuration list for PBXNativeTarget "Landscape-preview" */; + buildPhases = ( + 70DBBFE62B7C60B50021EA96 /* [CP] Check Pods Manifest.lock */, + 70DBBFE72B7C60B50021EA96 /* Start Packager */, + 70DBBFE82B7C60B50021EA96 /* [Expo] Configure project */, + 70DBBFE92B7C60B50021EA96 /* Sources */, + 70DBC0022B7C60B50021EA96 /* Frameworks */, + 70DBC0072B7C60B50021EA96 /* Resources */, + 70DBC01B2B7C61A20021EA96 /* Copy GoogleService-Info.plist */, + 70DBC00D2B7C60B50021EA96 /* Bundle React Native code and images */, + 70DBC00E2B7C60B50021EA96 /* [CP] Copy Pods Resources */, + 70DBC00F2B7C60B50021EA96 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Landscape-preview"; + packageProductDependencies = ( + 70DBBFE02B7C60B50021EA96 /* SimpleKeychain */, + 70DBBFE22B7C60B50021EA96 /* Alamofire */, + 70DBBFE42B7C60B50021EA96 /* UrsusSigil */, + ); + productName = Landscape; + productReference = 70DBC0152B7C60B50021EA96 /* Landscape-preview.app */; + productType = "com.apple.product-type.application"; + }; 70F99A8D2B2D2B5700D77256 /* LandscapeTests */ = { isa = PBXNativeTarget; buildConfigurationList = 70F99A962B2D2B5700D77256 /* Build configuration list for PBXNativeTarget "LandscapeTests" */; @@ -382,7 +482,7 @@ mainGroup = 83CBB9F61A601CBA00E9B192; packageReferences = ( 70A62C5F2A5A6B1A00EBED16 /* XCRemoteSwiftPackageReference "SimpleKeychain" */, - 70D386462A6098F800AFB46E /* XCRemoteSwiftPackageReference "Alamofire.git" */, + 70D386462A6098F800AFB46E /* XCRemoteSwiftPackageReference "Alamofire" */, 70D3866D2A60A3B300AFB46E /* XCRemoteSwiftPackageReference "UrsusSigil" */, ); productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; @@ -390,6 +490,7 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* Landscape */, + 70DBBFDF2B7C60B50021EA96 /* Landscape-preview */, 70F99A8D2B2D2B5700D77256 /* LandscapeTests */, ); }; @@ -401,13 +502,25 @@ buildActionMask = 2147483647; files = ( BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, - 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - C184662C2ABBDFF1008EA8C0 /* GoogleService-Info.plist in Resources */, + 705D26452B7ECDF200F98AD6 /* Images.xcassets in Resources */, + C184662C2ABBDFF1008EA8C0 /* GoogleService-Info-io.tlon.groups.plist in Resources */, 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 70D386722A61F2E400AFB46E /* main.jsbundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; + 70DBC0072B7C60B50021EA96 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 70DBC0082B7C60B50021EA96 /* Expo.plist in Resources */, + 705D26482B7ECE5400F98AD6 /* Images-preview.xcassets in Resources */, + 70DBC00B2B7C60B50021EA96 /* SplashScreen.storyboard in Resources */, + 70DBC0182B7C61130021EA96 /* GoogleService-Info-io.tlon.groups.preview.plist in Resources */, + 70DBC00C2B7C60B50021EA96 /* main.jsbundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 70F99A8C2B2D2B5700D77256 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -448,33 +561,95 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Landscape-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-common-Landscape-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 70DBBFE62B7C60B50021EA96 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-common-Landscape-preview-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 16BF6871758CF5215ECCA862 /* [CP-User] [RNFB] Core Configuration */ = { + 70DBBFE72B7C60B50021EA96 /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", ); - name = "[CP-User] [RNFB] Core Configuration"; + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `$NODE_BINARY --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `$NODE_BINARY --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; }; - 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { + 70DBBFE82B7C60B50021EA96 /* [Expo] Configure project */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Landscape/Pods-Landscape-resources.sh", + ); + name = "[Expo] Configure project"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-common-Landscape-preview/expo-configure-project.sh\"\n"; + }; + 70DBC00D2B7C60B50021EA96 /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" $PROJECT_ROOT ios relative | tail -n 1)\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; + }; + 70DBC00E2B7C60B50021EA96 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-common-Landscape-preview/Pods-common-Landscape-preview-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", @@ -487,22 +662,84 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Landscape/Pods-Landscape-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-common-Landscape-preview/Pods-common-Landscape-preview-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 996699F1450D9A26847DC9A6 /* [CP-User] [RNFB] Crashlytics Configuration */ = { + 70DBC00F2B7C60B50021EA96 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-common-Landscape-preview/Pods-common-Landscape-preview-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-common-Landscape-preview/Pods-common-Landscape-preview-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 70DBC01A2B7C61690021EA96 /* Copy GoogleService-Info.plist */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Copy GoogleService-Info.plist"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "PATH_TO_CONFIG=$SRCROOT/GoogleService-Info-$PRODUCT_BUNDLE_IDENTIFIER.plist\nFILENAME_IN_BUNDLE=GoogleService-Info.plist\nBUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\necho cp $PATH_TO_CONFIG \"$BUILD_APP_DIR/$FILENAME_IN_BUNDLE\"\ncp $PATH_TO_CONFIG \"$BUILD_APP_DIR/$FILENAME_IN_BUNDLE\"\n"; + }; + 70DBC01B2B7C61A20021EA96 /* Copy GoogleService-Info.plist */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Copy GoogleService-Info.plist"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "PATH_TO_CONFIG=$SRCROOT/GoogleService-Info-$PRODUCT_BUNDLE_IDENTIFIER.plist\nFILENAME_IN_BUNDLE=GoogleService-Info.plist\nBUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\necho cp $PATH_TO_CONFIG \"$BUILD_APP_DIR/$FILENAME_IN_BUNDLE\"\ncp $PATH_TO_CONFIG \"$BUILD_APP_DIR/$FILENAME_IN_BUNDLE\"\n"; + }; + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + "${PODS_ROOT}/Target Support Files/Pods-common-Landscape/Pods-common-Landscape-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-common-Landscape/Pods-common-Landscape-resources.sh\"\n"; + showEnvVarsInLog = 0; }; A8F420A9D9FA89D6A8CAB3CB /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -510,7 +747,7 @@ files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Landscape/Pods-Landscape-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-common-Landscape/Pods-common-Landscape-frameworks.sh", "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); name = "[CP] Embed Pods Frameworks"; @@ -519,7 +756,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Landscape/Pods-Landscape-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-common-Landscape/Pods-common-Landscape-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; E99812A83EA5B4CD5D501DE3 /* [Expo] Configure project */ = { @@ -539,7 +776,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-Landscape/expo-configure-project.sh\"\n"; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-common-Landscape/expo-configure-project.sh\"\n"; }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; @@ -587,10 +824,41 @@ 7036E3522ACD08E30020A9FB /* GroupChannelStore.swift in Sources */, 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, - B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, 70EAEAB52A57A99100FE96E4 /* UrbitModule.swift in Sources */, 700B63622A71E0D70017F40F /* ContactStore.swift in Sources */, 70D3866B2A60A38400AFB46E /* Yarn.swift in Sources */, + D0A57BA86BAF5327C2EECEE4 /* ExpoModulesProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 70DBBFE92B7C60B50021EA96 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 70DBBFEA2B7C60B50021EA96 /* UrbitAPI.swift in Sources */, + 70DBBFEB2B7C60B50021EA96 /* Club.swift in Sources */, + 70DBBFEC2B7C60B50021EA96 /* TlonError.swift in Sources */, + 70DBBFED2B7C60B50021EA96 /* UserDefaultsStore.swift in Sources */, + 70DBBFEE2B7C60B50021EA96 /* PocketNotificationsAPI.swift in Sources */, + 70DBBFEF2B7C60B50021EA96 /* PocketAPI.swift in Sources */, + 70DBBFF02B7C60B50021EA96 /* PushNotificationManager.swift in Sources */, + 70DBBFF12B7C60B50021EA96 /* Contact.swift in Sources */, + 70DBBFF22B7C60B50021EA96 /* UrbitModule.m in Sources */, + 70DBBFF32B7C60B50021EA96 /* INPerson+Extension.swift in Sources */, + 70DBBFF42B7C60B50021EA96 /* Error+Extension.swift in Sources */, + 70DBBFF52B7C60B50021EA96 /* Group.swift in Sources */, + 70DBBFF62B7C60B50021EA96 /* SettingsStore.swift in Sources */, + 70DBBFF72B7C60B50021EA96 /* UIColor+Extension.swift in Sources */, + 70DBBFF82B7C60B50021EA96 /* PocketUserAPI.swift in Sources */, + 70DBBFF92B7C60B50021EA96 /* ClubStore.swift in Sources */, + 70DBBFFA2B7C60B50021EA96 /* PocketChatAPI.swift in Sources */, + 70DBBFFB2B7C60B50021EA96 /* GroupChannelStore.swift in Sources */, + 70DBBFFC2B7C60B50021EA96 /* AppDelegate.mm in Sources */, + 70DBBFFD2B7C60B50021EA96 /* main.m in Sources */, + 70DBBFFF2B7C60B50021EA96 /* UrbitModule.swift in Sources */, + 70DBC0002B7C60B50021EA96 /* ContactStore.swift in Sources */, + 70DBC0012B7C60B50021EA96 /* Yarn.swift in Sources */, + 3DC46BC1B669DF8F5F059CA8 /* ExpoModulesProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -635,14 +903,15 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-Landscape.debug.xcconfig */; + baseConfigurationReference = B35AC6CF758CAFC9D112A69F /* Pods-common-Landscape.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_DEBUG_INFORMATION_LEVEL = "DWARF with dSYM File"; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Landscape/Landscape.entitlements; - CURRENT_PROJECT_VERSION = 44; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = XU9PR2N722; + DISPLAY_NAME = Tlon; ENABLE_BITCODE = NO; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -653,14 +922,14 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.1.3; + MARKETING_VERSION = 4.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; - PRODUCT_BUNDLE_IDENTIFIER = io.tlon.groups.staging; + PRODUCT_BUNDLE_IDENTIFIER = io.tlon.groups; PRODUCT_NAME = Landscape; "SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = "$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -672,27 +941,28 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-Landscape.release.xcconfig */; + baseConfigurationReference = 74633B6584F10A6AA2FEE339 /* Pods-common-Landscape.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_DEBUG_INFORMATION_LEVEL = "DWARF with dSYM File"; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Landscape/Landscape.entitlements; - CURRENT_PROJECT_VERSION = 44; + CURRENT_PROJECT_VERSION = 45; DEVELOPMENT_TEAM = XU9PR2N722; + DISPLAY_NAME = Tlon; INFOPLIST_FILE = Landscape/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.1.3; + MARKETING_VERSION = 4.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; - PRODUCT_BUNDLE_IDENTIFIER = io.tlon.groups.staging; + PRODUCT_BUNDLE_IDENTIFIER = io.tlon.groups; PRODUCT_NAME = Landscape; SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -701,6 +971,78 @@ }; name = Release; }; + 70DBC0132B7C60B50021EA96 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EE042EA448A634B1DCCA2092 /* Pods-common-Landscape-preview.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_DEBUG_INFORMATION_LEVEL = "DWARF with dSYM File"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Landscape/Landscape.entitlements; + CURRENT_PROJECT_VERSION = 45; + DEVELOPMENT_TEAM = XU9PR2N722; + DISPLAY_NAME = "Tlon - Preview"; + ENABLE_BITCODE = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_SONARKIT_ENABLED=1", + ); + INFOPLIST_FILE = Landscape/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 4.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = io.tlon.groups.preview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_MODULE_NAME = Landscape; + "SWIFT_OBJC_BRIDGING_HEADER[arch=*]" = "$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 70DBC0142B7C60B50021EA96 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3B0B210E999A7E0E1A345468 /* Pods-common-Landscape-preview.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_DEBUG_INFORMATION_LEVEL = "DWARF with dSYM File"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Landscape/Landscape.entitlements; + CURRENT_PROJECT_VERSION = 45; + DEVELOPMENT_TEAM = XU9PR2N722; + DISPLAY_NAME = "Tlon - Preview"; + INFOPLIST_FILE = Landscape/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 4.0.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; + PRODUCT_BUNDLE_IDENTIFIER = io.tlon.groups.preview; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_MODULE_NAME = Landscape; + SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; 70F99A942B2D2B5700D77256 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -938,6 +1280,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 70DBC0122B7C60B50021EA96 /* Build configuration list for PBXNativeTarget "Landscape-preview" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 70DBC0132B7C60B50021EA96 /* Debug */, + 70DBC0142B7C60B50021EA96 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 70F99A962B2D2B5700D77256 /* Build configuration list for PBXNativeTarget "LandscapeTests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -967,7 +1318,7 @@ minimumVersion = 1.0.0; }; }; - 70D386462A6098F800AFB46E /* XCRemoteSwiftPackageReference "Alamofire.git" */ = { + 70D386462A6098F800AFB46E /* XCRemoteSwiftPackageReference "Alamofire" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/Alamofire.git"; requirement = { @@ -983,6 +1334,30 @@ minimumVersion = 1.0.0; }; }; + 70DBBFE12B7C60B50021EA96 /* XCRemoteSwiftPackageReference "SimpleKeychain" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/auth0/SimpleKeychain"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; + 70DBBFE32B7C60B50021EA96 /* XCRemoteSwiftPackageReference "Alamofire" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Alamofire/Alamofire.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; + 70DBBFE52B7C60B50021EA96 /* XCRemoteSwiftPackageReference "UrsusSigil" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/alecananian/UrsusSigil"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -993,7 +1368,7 @@ }; 70D386472A6098F800AFB46E /* Alamofire */ = { isa = XCSwiftPackageProductDependency; - package = 70D386462A6098F800AFB46E /* XCRemoteSwiftPackageReference "Alamofire.git" */; + package = 70D386462A6098F800AFB46E /* XCRemoteSwiftPackageReference "Alamofire" */; productName = Alamofire; }; 70D3866E2A60A3B300AFB46E /* UrsusSigil */ = { @@ -1001,6 +1376,21 @@ package = 70D3866D2A60A3B300AFB46E /* XCRemoteSwiftPackageReference "UrsusSigil" */; productName = UrsusSigil; }; + 70DBBFE02B7C60B50021EA96 /* SimpleKeychain */ = { + isa = XCSwiftPackageProductDependency; + package = 70DBBFE12B7C60B50021EA96 /* XCRemoteSwiftPackageReference "SimpleKeychain" */; + productName = SimpleKeychain; + }; + 70DBBFE22B7C60B50021EA96 /* Alamofire */ = { + isa = XCSwiftPackageProductDependency; + package = 70DBBFE32B7C60B50021EA96 /* XCRemoteSwiftPackageReference "Alamofire" */; + productName = Alamofire; + }; + 70DBBFE42B7C60B50021EA96 /* UrsusSigil */ = { + isa = XCSwiftPackageProductDependency; + package = 70DBBFE52B7C60B50021EA96 /* XCRemoteSwiftPackageReference "UrsusSigil" */; + productName = UrsusSigil; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; diff --git a/apps/tlon-mobile/ios/Landscape.xcodeproj/xcshareddata/xcschemes/Landscape-preview.xcscheme b/apps/tlon-mobile/ios/Landscape.xcodeproj/xcshareddata/xcschemes/Landscape-preview.xcscheme new file mode 100644 index 0000000000..5ae1378bf1 --- /dev/null +++ b/apps/tlon-mobile/ios/Landscape.xcodeproj/xcshareddata/xcschemes/Landscape-preview.xcscheme @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-1024.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-1024.png new file mode 100644 index 0000000000..ea37906fb5 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-1024.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-20@2x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-20@2x.png new file mode 100644 index 0000000000..32f709c476 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-20@2x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-20@3x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-20@3x.png new file mode 100644 index 0000000000..d1ab385c7b Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-20@3x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-29@2x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-29@2x.png new file mode 100644 index 0000000000..5ea11d00f1 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-29@2x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-29@3x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-29@3x.png new file mode 100644 index 0000000000..dd9b013765 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-29@3x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-40@2x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-40@2x.png new file mode 100644 index 0000000000..6e881d5ae6 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-40@2x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-40@3x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-40@3x.png new file mode 100644 index 0000000000..a5a15155b4 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-40@3x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-60@2x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-60@2x.png new file mode 100644 index 0000000000..1572f45082 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-60@2x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-60@3x.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-60@3x.png new file mode 100644 index 0000000000..a066e82a40 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/AppIcon-60@3x.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/Contents.json b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..8fca09a28a --- /dev/null +++ b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,62 @@ +{ + "images" : [ + { + "filename" : "AppIcon-20@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "AppIcon-20@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "AppIcon-29@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "AppIcon-29@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "AppIcon-40@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "AppIcon-40@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "AppIcon-60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "AppIcon-60@3x.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "AppIcon-1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/Contents.json b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/SplashScreenBackground.imageset/Contents.json b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/SplashScreenBackground.imageset/Contents.json new file mode 100644 index 0000000000..3cf8489772 --- /dev/null +++ b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/SplashScreenBackground.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images": [ + { + "idiom": "universal", + "filename": "image.png", + "scale": "1x" + }, + { + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/SplashScreenBackground.imageset/image.png b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/SplashScreenBackground.imageset/image.png new file mode 100644 index 0000000000..33ddf20bb3 Binary files /dev/null and b/apps/tlon-mobile/ios/Landscape/Images-preview.xcassets/SplashScreenBackground.imageset/image.png differ diff --git a/apps/tlon-mobile/ios/Landscape/Images.xcassets/Contents.json b/apps/tlon-mobile/ios/Landscape/Images.xcassets/Contents.json index ed285c2e5f..73c00596a7 100644 --- a/apps/tlon-mobile/ios/Landscape/Images.xcassets/Contents.json +++ b/apps/tlon-mobile/ios/Landscape/Images.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "expo" + "author" : "xcode", + "version" : 1 } } diff --git a/apps/tlon-mobile/ios/Landscape/Info.plist b/apps/tlon-mobile/ios/Landscape/Info.plist index 37fa2f9707..97c41e52f5 100644 --- a/apps/tlon-mobile/ios/Landscape/Info.plist +++ b/apps/tlon-mobile/ios/Landscape/Info.plist @@ -9,7 +9,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Tlon + $(DISPLAY_NAME) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -29,7 +29,7 @@ CFBundleURLSchemes - io.tlon.groups.staging + io.tlon.groups diff --git a/apps/tlon-mobile/ios/Landscape/Supporting/Expo.plist b/apps/tlon-mobile/ios/Landscape/Supporting/Expo.plist index e39700a29e..5f8a893567 100644 --- a/apps/tlon-mobile/ios/Landscape/Supporting/Expo.plist +++ b/apps/tlon-mobile/ios/Landscape/Supporting/Expo.plist @@ -9,7 +9,7 @@ EXUpdatesLaunchWaitMs 0 EXUpdatesRuntimeVersion - 3.1.3 + 4.0.0 EXUpdatesURL https://u.expo.dev/617bb643-5bf6-4c40-8af6-c6e9dd7e3bd0 diff --git a/apps/tlon-mobile/ios/Podfile b/apps/tlon-mobile/ios/Podfile index 91887c2e3c..39897ec05e 100644 --- a/apps/tlon-mobile/ios/Podfile +++ b/apps/tlon-mobile/ios/Podfile @@ -38,7 +38,7 @@ elsif podfile_properties.key?('ios.flipper') then end end -target 'Landscape' do +abstract_target 'common' do use_expo_modules! config = use_native_modules! @@ -86,4 +86,10 @@ target 'Landscape' do Pod::UI.warn e end end + + target 'Landscape' do + end + + target 'Landscape-preview' do + end end diff --git a/apps/tlon-mobile/ios/Podfile.lock b/apps/tlon-mobile/ios/Podfile.lock index 7874d75fc0..9e88dde902 100644 --- a/apps/tlon-mobile/ios/Podfile.lock +++ b/apps/tlon-mobile/ios/Podfile.lock @@ -1595,6 +1595,6 @@ SPEC CHECKSUMS: UMAppLoader: 5df85360d65cabaef544be5424ac64672e648482 Yoga: 1b901a6d6eeba4e8a2e8f308f708691cdb5db312 -PODFILE CHECKSUM: bebef443864c4d459a5b44fcd000912004c764e1 +PODFILE CHECKSUM: 82da24eb176d4abdeaf445b3581717ec492dd7e8 COCOAPODS: 1.15.2 diff --git a/apps/tlon-mobile/package.json b/apps/tlon-mobile/package.json index eecfcb7038..6c873553e0 100644 --- a/apps/tlon-mobile/package.json +++ b/apps/tlon-mobile/package.json @@ -1,6 +1,6 @@ { "name": "tlon-mobile", - "version": "3.1.3", + "version": "4.0.0", "private": true, "scripts": { "dev": "concurrently \"tailwindcss --input input.css --output tailwind.css --no-autoprefixer --watch\" \"tailwind-rn --watch\"", diff --git a/apps/tlon-mobile/src/screens/WebViewScreen.tsx b/apps/tlon-mobile/src/screens/WebViewScreen.tsx index 0c305b72b8..ccc8c6a933 100644 --- a/apps/tlon-mobile/src/screens/WebViewScreen.tsx +++ b/apps/tlon-mobile/src/screens/WebViewScreen.tsx @@ -15,7 +15,7 @@ import { useShip } from '../contexts/ship'; import { useWebView } from '../hooks/useWebView'; import { markChatRead } from '../lib/chatApi'; import { getHostingUser } from '../lib/hostingApi'; -import { connectNotifications } from '../lib/notifications'; +// import { connectNotifications } from '../lib/notifications'; import type { WebViewStackParamList } from '../types'; import { getHostingToken, @@ -144,7 +144,7 @@ const InnerWebViewScreen = ({ ); // Start notification prompt - connectNotifications(); + // connectNotifications(); return () => { // Clean up listeners diff --git a/package-lock.json b/package-lock.json index a2a54c79da..87c54c2388 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,12 +17,12 @@ "vitest": "^1.2.2" }, "engines": { - "node": "^20.11.0", - "npm": "^10.2.4" + "node": ">=18.18.0", + "npm": ">=9.8.1" } }, "apps/tlon-mobile": { - "version": "3.1.3", + "version": "4.0.0", "hasInstallScript": true, "dependencies": { "@google-cloud/recaptcha-enterprise-react-native": "^18.3.0", diff --git a/package.json b/package.json index ebc8c5a5cb..175061558d 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "vitest": "^1.2.2" }, "engines": { - "node": "^20.11.0", - "npm": "^10.2.4" + "node": ">=18.18.0", + "npm": ">=9.8.1" } }