diff --git a/.circleci/config.yml b/.circleci/config.yml index 548febfda6..2541bbeb66 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,6 +8,11 @@ macos: &macos bash-env: &bash-env BASH_ENV: "~/.nvm/nvm.sh" +android-env: &android-env + JAVA_OPTS: '-Xms512m -Xmx2g' + GRADLE_OPTS: '-Xmx3g -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g -XX:+HeapDumpOnOutOfMemoryError"' + TERM: dumb + install-npm-modules: &install-npm-modules name: Install NPM modules command: yarn @@ -75,61 +80,11 @@ restore_cache: &restore-gradle-cache name: Restore gradle cache key: android-{{ checksum "android/build.gradle" }}-{{ checksum "android/app/build.gradle" }} -version: 2.1 - -# EXECUTORS -executors: - mac-env: - <<: *macos - environment: - <<: *bash-env - -# JOBS -jobs: - lint-testunit: - <<: *defaults - docker: - - image: circleci/node:10 - - environment: - CODECOV_TOKEN: caa771ab-3d45-4756-8e2a-e1f25996fef6 - - steps: - - checkout - - - restore_cache: *restore-npm-cache-linux - - - run: *install-npm-modules - - - run: - name: Lint - command: | - yarn lint - - - run: - name: Test - command: | - yarn test - - - run: - name: Codecov - command: | - yarn codecov - - - save_cache: *save-npm-cache-linux - - # Android builds - android-play-build: - <<: *defaults - docker: - - image: circleci/android:api-28-node - - environment: - JAVA_OPTS: '-Xms512m -Xmx2g' - GRADLE_OPTS: '-Xmx3g -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g -XX:+HeapDumpOnOutOfMemoryError"' - TERM: dumb - <<: *bash-env +# COMMANDS +commands: + android-build: + description: "Build Android app" steps: - checkout @@ -139,8 +94,6 @@ jobs: - run: *install-npm-modules - - run: *update-fastlane-android - - restore_cache: *restore-gradle-cache - run: @@ -151,11 +104,19 @@ jobs: echo -e "android.useAndroidX=true" >> ./gradle.properties echo -e "android.enableJetifier=true" >> ./gradle.properties echo -e "FLIPPER_VERSION=0.51.0" >> ./gradle.properties - echo -e "APPLICATION_ID=chat.rocket.reactnative" >> ./gradle.properties echo -e "VERSIONCODE=$CIRCLE_BUILD_NUM" >> ./gradle.properties - echo -e "BugsnagAPIKey=$BUGSNAG_KEY" >> ./gradle.properties - if [[ $KEYSTORE ]]; then + if [[ $CIRCLE_JOB == "android-build-official" ]]; then + echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties + echo -e "BugsnagAPIKey=$BUGSNAG_KEY_OFFICIAL" >> ./gradle.properties + echo $CHAT_ROCKET_ANDROID_STORE_FILE_BASE64_JKS | base64 --decode > ./app/$KEYSTORE_OFFICIAL + echo -e "KEYSTORE=$KEYSTORE_OFFICIAL" >> ./gradle.properties + echo -e "KEYSTORE_PASSWORD=$CHAT_ROCKET_ANDROID_STORE_PASSWORD" >> ./gradle.properties + echo -e "KEY_ALIAS=$CHAT_ROCKET_ANDROID_KEY_ALIAS" >> ./gradle.properties + echo -e "KEY_PASSWORD=$CHAT_ROCKET_ANDROID_KEY_PASSWORD" >> ./gradle.properties + else + echo -e "APPLICATION_ID=chat.rocket.reactnative" >> ./gradle.properties + echo -e "BugsnagAPIKey=$BUGSNAG_KEY" >> ./gradle.properties echo $KEYSTORE_BASE64 | base64 --decode > ./app/$KEYSTORE echo -e "KEYSTORE=$KEYSTORE" >> ./gradle.properties echo -e "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties @@ -170,97 +131,52 @@ jobs: if [[ $KEYSTORE ]]; then echo $GOOGLE_SERVICES_ANDROID | base64 --decode > google-services.json fi - working_directory: android/app/src/play + working_directory: android/app - run: name: Config variables command: | - echo -e "export default { BUGSNAG_API_KEY: '$BUGSNAG_KEY' };" > ./config.js + if [[ $CIRCLE_JOB == "android-build-official" ]]; then + echo -e "export default { BUGSNAG_API_KEY: '$BUGSNAG_KEY_OFFICIAL' };" > ./config.js + else + echo -e "export default { BUGSNAG_API_KEY: '$BUGSNAG_KEY' };" > ./config.js + fi - run: - name: Build Android Play App + name: Build App command: | - if [[ $KEYSTORE ]]; then - bundle exec fastlane android playRelease - else - bundle exec fastlane android playBuild + if [[ $CIRCLE_JOB == "android-build-official" ]]; then + ./gradlew bundleOfficialPlayRelease + fi + if [[ $CIRCLE_JOB == "android-build-experimental" ]]; then + ./gradlew bundleExperimentalPlayRelease + fi + if [[ ! $KEYSTORE ]]; then + ./gradlew assembleExperimentalPlayDebug fi working_directory: android - run: name: Upload sourcemaps to Bugsnag command: | - if [[ $BUGSNAG_KEY ]]; then + if [[ $CIRCLE_JOB == "android-build-official" ]]; then yarn generate-source-maps-android upload \ - --api-key=$BUGSNAG_KEY \ + --api-key=$BUGSNAG_KEY_OFFICIAL \ --app-version=$CIRCLE_BUILD_NUM \ - --minifiedFile=android/app/build/generated/assets/react/play/release/app.bundle \ - --source-map=android/app/build/generated/sourcemaps/react/play/release/app.bundle.map \ + --minifiedFile=android/app/build/generated/assets/react/officialPlay/release/app.bundle \ + --source-map=android/app/build/generated/sourcemaps/react/officialPlay/release/app.bundle.map \ --minified-url=app.bundle \ --upload-sources fi - - - store_artifacts: - path: android/app/build/outputs - - - save_cache: *save-npm-cache-linux - - - save_cache: *save-gradle-cache - - - persist_to_workspace: - root: . - paths: - - android/fastlane/report.xml - - android/app/build/outputs - - android-foss-build: - <<: *defaults - docker: - - image: circleci/android:api-28-node - - environment: - JAVA_OPTS: '-Xms512m -Xmx2g' - GRADLE_OPTS: '-Xmx3g -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g -XX:+HeapDumpOnOutOfMemoryError"' - TERM: dumb - <<: *bash-env - - steps: - - checkout - - - run: *install-node - - - restore_cache: *restore-npm-cache-linux - - - run: *install-npm-modules - - - run: *update-fastlane-android - - - restore_cache: *restore-gradle-cache - - - run: - name: Configure Gradle - command: | - echo -e "" > ./gradle.properties - # echo -e "android.enableAapt2=false" >> ./gradle.properties - echo -e "android.useAndroidX=true" >> ./gradle.properties - echo -e "android.enableJetifier=true" >> ./gradle.properties - echo -e "FLIPPER_VERSION=0.51.0" >> ./gradle.properties - echo -e "VERSIONCODE=$CIRCLE_BUILD_NUM" >> ./gradle.properties - echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties - - if [[ $KEYSTORE ]]; then - echo $KEYSTORE_BASE64 | base64 --decode > ./app/$KEYSTORE - echo -e "KEYSTORE=$KEYSTORE" >> ./gradle.properties - echo -e "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties - echo -e "KEY_ALIAS=$KEY_ALIAS" >> ./gradle.properties - echo -e "KEY_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties + if [[ $CIRCLE_JOB == "android-build-experimental" ]]; then + yarn generate-source-maps-android upload \ + --api-key=$BUGSNAG_KEY \ + --app-version=$CIRCLE_BUILD_NUM \ + --minifiedFile=android/app/build/generated/assets/react/experimentalPlay/release/app.bundle \ + --source-map=android/app/build/generated/sourcemaps/react/experimentalPlay/release/app.bundle.map \ + --minified-url=app.bundle \ + --upload-sources fi - working_directory: android - - - run: - name: Build Android Foss App - command: bundle exec fastlane android fossRelease - working_directory: android - store_artifacts: path: android/app/build/outputs @@ -272,61 +188,38 @@ jobs: - persist_to_workspace: root: . paths: - - android/fastlane/report.xml - android/app/build/outputs - android-google-play-beta: - <<: *defaults - docker: - - image: circleci/android:api-28-node - - steps: - - checkout - - - attach_workspace: - at: android - - - run: - name: Store the google service account key - command: echo "$FASTLANE_GOOGLE_SERVICE_ACCOUNT" | base64 --decode > service_account.json - working_directory: android - - - run: *update-fastlane-android - - - run: - name: Fastlane Play Store Upload - command: bundle exec fastlane android beta - working_directory: android - - # iOS builds ios-build: - executor: mac-env - + description: "Build iOS app" steps: - checkout - - restore_cache: *restore-gems-cache - - restore_cache: *restore-npm-cache-mac - - run: *install-node - - run: *install-npm-modules - - run: *update-fastlane-ios - - run: name: Set Google Services command: | if [[ $KEYSTORE ]]; then - echo $GOOGLE_SERVICES_REACTNATIVE | base64 --decode > GoogleService-Info.plist + echo $GOOGLE_SERVICES_IOS | base64 --decode > GoogleService-Info.plist fi working_directory: ios - - run: name: Upload sourcemaps to Bugsnag command: | - if [[ $BUGSNAG_KEY ]]; then + if [[ $CIRCLE_JOB == "ios-build-official" ]]; then + yarn generate-source-maps-ios + curl https://upload.bugsnag.com/react-native-source-map \ + -F apiKey=$BUGSNAG_KEY_OFFICIAL \ + -F appBundleVersion=$CIRCLE_BUILD_NUM \ + -F dev=false \ + -F platform=ios \ + -F sourceMap=@ios-release.bundle.map \ + -F bundle=@ios-release.bundle + fi + if [[ $CIRCLE_JOB == "ios-build-experimental" ]]; then yarn generate-source-maps-ios curl https://upload.bugsnag.com/react-native-source-map \ -F apiKey=$BUGSNAG_KEY \ @@ -336,87 +229,244 @@ jobs: -F sourceMap=@ios-release.bundle.map \ -F bundle=@ios-release.bundle fi - - run: name: Fastlane Build no_output_timeout: 1200 command: | agvtool new-version -all $CIRCLE_BUILD_NUM - /usr/libexec/PlistBuddy -c "Set BugsnagAPIKey $BUGSNAG_KEY" ./RocketChatRN/Info.plist + if [[ $CIRCLE_JOB == "ios-build-official" ]]; then + /usr/libexec/PlistBuddy -c "Set BugsnagAPIKey $BUGSNAG_KEY_OFFICIAL" ./RocketChatRN/Info.plist + /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL YES" ./RocketChatRN/Info.plist + else + /usr/libexec/PlistBuddy -c "Set BugsnagAPIKey $BUGSNAG_KEY" ./RocketChatRN/Info.plist + /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./RocketChatRN/Info.plist + fi if [[ $APP_STORE_CONNECT_API_KEY ]]; then echo $APP_STORE_CONNECT_API_KEY | base64 --decode > ./fastlane/app_store_connect_api_key.p8 - bundle exec fastlane ios release - else - bundle exec fastlane ios build_fork + if [[ $CIRCLE_JOB == "ios-build-official" ]]; then + bundle exec fastlane ios build_official + else + if [[ $KEYSTORE ]]; then + bundle exec fastlane ios release # TODO: rename + else + bundle exec fastlane ios build_fork + fi + fi fi working_directory: ios - - save_cache: *save-npm-cache-mac - - save_cache: *save-gems-cache - - store_artifacts: - path: ios/RocketChatRN.ipa - + path: ios/Rocket.Chat.ipa + - store_artifacts: + path: ios/Rocket.Chat.app.dSYM.zip - persist_to_workspace: root: . paths: - ios/*.ipa - - ios/fastlane/report.xml - - ios-testflight: - executor: mac-env + - ios/*.zip + upload-to-google-play-beta: + description: "Upload to Google Play beta" + parameters: + official: + type: boolean steps: - checkout + - attach_workspace: + at: android + - run: + name: Store the google service account key + command: echo "$FASTLANE_GOOGLE_SERVICE_ACCOUNT" | base64 --decode > service_account.json + working_directory: android + - run: *update-fastlane-android + - run: + name: Fastlane Play Store Upload + command: bundle exec fastlane android beta official:<< parameters.official >> + working_directory: android + upload-to-testflight: + description: "Upload to TestFlight" + parameters: + official: + type: boolean + steps: + - checkout - attach_workspace: at: ios - - restore_cache: *restore-gems-cache - - run: *update-fastlane-ios - - run: name: Fastlane Tesflight Upload command: | echo $APP_STORE_CONNECT_API_KEY | base64 --decode > ./fastlane/app_store_connect_api_key.p8 - bundle exec fastlane ios beta + bundle exec fastlane ios beta official:<< parameters.official >> working_directory: ios - - save_cache: *save-gems-cache +version: 2.1 + +# EXECUTORS +executors: + mac-env: + <<: *macos + environment: + <<: *bash-env + +# JOBS +jobs: + lint-testunit: + <<: *defaults + docker: + - image: circleci/node:10 + + environment: + CODECOV_TOKEN: caa771ab-3d45-4756-8e2a-e1f25996fef6 + + steps: + - checkout + + - restore_cache: *restore-npm-cache-linux + + - run: *install-npm-modules + + - run: + name: Lint + command: | + yarn lint + + - run: + name: Test + command: | + yarn test + + - run: + name: Codecov + command: | + yarn codecov + + - save_cache: *save-npm-cache-linux + + # Android builds + android-build-experimental: + <<: *defaults + docker: + - image: circleci/android:api-28-node + environment: + <<: *android-env + <<: *bash-env + steps: + - android-build + + android-build-official: + <<: *defaults + docker: + - image: circleci/android:api-28-node + environment: + <<: *android-env + <<: *bash-env + steps: + - android-build + + android-google-play-beta-experimental: + <<: *defaults + docker: + - image: circleci/android:api-28-node + + steps: + - upload-to-google-play-beta: + official: false + + android-google-play-beta-official: + <<: *defaults + docker: + - image: circleci/android:api-28-node + + steps: + - upload-to-google-play-beta: + official: true + + # iOS builds + ios-build-experimental: + executor: mac-env + steps: + - ios-build + + ios-build-official: + executor: mac-env + steps: + - ios-build + + ios-testflight-experimental: + executor: mac-env + steps: + - upload-to-testflight: + official: false + + ios-testflight-official: + executor: mac-env + steps: + - upload-to-testflight: + official: true + workflows: build-and-test: jobs: - lint-testunit - - ios-build: + # iOS Experimental + - ios-build-experimental: requires: - lint-testunit - - ios-hold-testflight: + - ios-hold-testflight-experimental: type: approval requires: - - ios-build - - ios-testflight: + - ios-build-experimental + - ios-testflight-experimental: requires: - - ios-hold-testflight + - ios-hold-testflight-experimental - - android-play-build: + # iOS Official + - ios-hold-build-official: + type: approval requires: - lint-testunit - - android-hold-google-play-beta: + - ios-build-official: + requires: + - ios-hold-build-official + - ios-hold-testflight-official: type: approval requires: - - android-play-build - - android-google-play-beta: + - ios-build-official + - ios-testflight-official: requires: - - android-hold-google-play-beta - - android-hold-foss-build: + - ios-hold-testflight-official + + # Android Experimental + - android-build-experimental: + requires: + - lint-testunit + - android-hold-google-play-beta-experimental: + type: approval + requires: + - android-build-experimental + - android-google-play-beta-experimental: + requires: + - android-hold-google-play-beta-experimental + + # Android Official + - android-hold-build-official: type: approval requires: - lint-testunit - - android-foss-build: + - android-build-official: + requires: + - android-hold-build-official + - android-hold-google-play-beta-official: + type: approval + requires: + - android-build-official + - android-google-play-beta-official: requires: - - android-hold-foss-build + - android-hold-google-play-beta-official diff --git a/.gitignore b/.gitignore index 3d1baa2150..d34d286716 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ DerivedData *.ipa *.xcuserstate project.xcworkspace +*.mobileprovision # Android/IntelliJ # diff --git a/android/app/build.gradle b/android/app/build.gradle index 28518d655d..d25d0425f2 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,10 +1,10 @@ def taskRequests = getGradle().getStartParameter().getTaskRequests().toString().toLowerCase() -def isPlay = !taskRequests.contains("foss") +def isFoss = taskRequests.contains("foss") apply plugin: "com.android.application" apply plugin: 'kotlin-android' -if (isPlay) { +if (!isFoss) { apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'com.bugsnag.android.gradle' } @@ -146,7 +146,7 @@ android { versionCode VERSIONCODE as Integer versionName "4.13.0" vectorDrawables.useSupportLibrary = true - if (isPlay) { + if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60" // See note below! } @@ -176,7 +176,7 @@ android { minifyEnabled enableProguardInReleaseBuilds setProguardFiles([getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro']) signingConfig signingConfigs.release - if (isPlay) { + if (!isFoss) { firebaseCrashlytics { nativeSymbolUploadEnabled true } @@ -193,10 +193,17 @@ android { // applicationVariants are e.g. debug, release - flavorDimensions "type" + flavorDimensions "app", "type" productFlavors { + official { + dimension = "app" + buildConfigField "boolean", "IS_OFFICIAL", "true" + } + experimental { + dimension = "app" + buildConfigField "boolean", "IS_OFFICIAL", "false" + } foss { - applicationId APPLICATION_ID dimension = "type" buildConfigField "boolean", "FDROID_BUILD", "true" } @@ -206,11 +213,20 @@ android { } } sourceSets { - playDebug { + // TODO: refactor making sure notifications are working properly both on debug and release + experimentalPlayDebug { + java.srcDirs = ['src/main/java', 'src/play/java'] + manifest.srcFile 'src/play/AndroidManifest.xml' + } + experimentalPlayRelease { + java.srcDirs = ['src/main/java', 'src/play/java'] + manifest.srcFile 'src/play/AndroidManifest.xml' + } + officialPlayDebug { java.srcDirs = ['src/main/java', 'src/play/java'] manifest.srcFile 'src/play/AndroidManifest.xml' } - playRelease { + officialPlayRelease { java.srcDirs = ['src/main/java', 'src/play/java'] manifest.srcFile 'src/play/AndroidManifest.xml' } @@ -287,6 +303,6 @@ task copyDownloadableDepsToLibs(type: Copy) { } apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) -if (isPlay) { +if (!isFoss) { apply plugin: 'com.google.gms.google-services' } diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000000..f5014f14c1 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,83 @@ +{ + "project_info": { + "project_number": "115198584049", + "firebase_url": "https://rocketchat-reactnative-test.firebaseio.com", + "project_id": "rocketchat-reactnative-test", + "storage_bucket": "rocketchat-reactnative-test.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:115198584049:android:a79216ae48935d2c9ab550", + "android_client_info": { + "package_name": "chat.rocket.android" + } + }, + "oauth_client": [ + { + "client_id": "115198584049-ack609b1338b827fta26s9rd2ab1aad5.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAWwowhAfACHBw3YxmDOXY3QyakgjhJLqc" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "115198584049-ack609b1338b827fta26s9rd2ab1aad5.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "115198584049-0efgfvm0oh9ap55g7epmqnjm27mq3j4e.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "chat.rocket.reactnative" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:115198584049:android:8be27b1f7c42a2ed", + "android_client_info": { + "package_name": "chat.rocket.reactnative" + } + }, + "oauth_client": [ + { + "client_id": "115198584049-ack609b1338b827fta26s9rd2ab1aad5.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAWwowhAfACHBw3YxmDOXY3QyakgjhJLqc" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "115198584049-ack609b1338b827fta26s9rd2ab1aad5.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "115198584049-0efgfvm0oh9ap55g7epmqnjm27mq3j4e.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "chat.rocket.reactnative" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/src/play/ic_launcher-web.png b/android/app/src/experimental/ic_launcher-web.png similarity index 100% rename from android/app/src/play/ic_launcher-web.png rename to android/app/src/experimental/ic_launcher-web.png diff --git a/android/app/src/play/res/drawable-v24/ic_launcher_background.xml b/android/app/src/experimental/res/drawable-v24/ic_launcher_background.xml similarity index 100% rename from android/app/src/play/res/drawable-v24/ic_launcher_background.xml rename to android/app/src/experimental/res/drawable-v24/ic_launcher_background.xml diff --git a/android/app/src/play/res/drawable-xxhdpi/splash.png b/android/app/src/experimental/res/drawable-xxhdpi/splash.png similarity index 100% rename from android/app/src/play/res/drawable-xxhdpi/splash.png rename to android/app/src/experimental/res/drawable-xxhdpi/splash.png diff --git a/android/app/src/play/res/drawable/ic_launcher_foreground.xml b/android/app/src/experimental/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from android/app/src/play/res/drawable/ic_launcher_foreground.xml rename to android/app/src/experimental/res/drawable/ic_launcher_foreground.xml diff --git a/android/app/src/foss/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/experimental/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from android/app/src/foss/res/mipmap-anydpi-v26/ic_launcher.xml rename to android/app/src/experimental/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/android/app/src/foss/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/experimental/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from android/app/src/foss/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to android/app/src/experimental/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/android/app/src/play/res/mipmap-hdpi/ic_launcher.png b/android/app/src/experimental/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from android/app/src/play/res/mipmap-hdpi/ic_launcher.png rename to android/app/src/experimental/res/mipmap-hdpi/ic_launcher.png diff --git a/android/app/src/play/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/experimental/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/play/res/mipmap-hdpi/ic_launcher_round.png rename to android/app/src/experimental/res/mipmap-hdpi/ic_launcher_round.png diff --git a/android/app/src/play/res/mipmap-mdpi/ic_launcher.png b/android/app/src/experimental/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from android/app/src/play/res/mipmap-mdpi/ic_launcher.png rename to android/app/src/experimental/res/mipmap-mdpi/ic_launcher.png diff --git a/android/app/src/play/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/experimental/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/play/res/mipmap-mdpi/ic_launcher_round.png rename to android/app/src/experimental/res/mipmap-mdpi/ic_launcher_round.png diff --git a/android/app/src/play/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/experimental/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from android/app/src/play/res/mipmap-xhdpi/ic_launcher.png rename to android/app/src/experimental/res/mipmap-xhdpi/ic_launcher.png diff --git a/android/app/src/play/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/experimental/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/play/res/mipmap-xhdpi/ic_launcher_round.png rename to android/app/src/experimental/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/android/app/src/play/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/experimental/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from android/app/src/play/res/mipmap-xxhdpi/ic_launcher.png rename to android/app/src/experimental/res/mipmap-xxhdpi/ic_launcher.png diff --git a/android/app/src/play/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/experimental/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/play/res/mipmap-xxhdpi/ic_launcher_round.png rename to android/app/src/experimental/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/android/app/src/play/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/experimental/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from android/app/src/play/res/mipmap-xxxhdpi/ic_launcher.png rename to android/app/src/experimental/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/android/app/src/play/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/experimental/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/play/res/mipmap-xxxhdpi/ic_launcher_round.png rename to android/app/src/experimental/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/experimental/res/values/colors.xml similarity index 100% rename from android/app/src/main/res/values/colors.xml rename to android/app/src/experimental/res/values/colors.xml diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/experimental/res/values/strings.xml similarity index 100% rename from android/app/src/main/res/values/strings.xml rename to android/app/src/experimental/res/values/strings.xml diff --git a/android/app/src/foss/res/values-night/colors.xml b/android/app/src/foss/res/values-night/colors.xml deleted file mode 100644 index 3c1a14f899..0000000000 --- a/android/app/src/foss/res/values-night/colors.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #000000 - diff --git a/android/app/src/foss/res/values/styles.xml b/android/app/src/foss/res/values/styles.xml deleted file mode 100644 index 50861d8e0c..0000000000 --- a/android/app/src/foss/res/values/styles.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml index d5d36f2f57..3c1a14f899 100644 --- a/android/app/src/main/res/values-night/colors.xml +++ b/android/app/src/main/res/values-night/colors.xml @@ -1,5 +1,4 @@ #000000 - #1D74F5 - \ No newline at end of file + diff --git a/android/app/src/foss/ic_launcher-web.png b/android/app/src/official/ic_launcher-web.png similarity index 100% rename from android/app/src/foss/ic_launcher-web.png rename to android/app/src/official/ic_launcher-web.png diff --git a/android/app/src/foss/res/drawable-xxhdpi/splash.png b/android/app/src/official/res/drawable-xxhdpi/splash.png similarity index 100% rename from android/app/src/foss/res/drawable-xxhdpi/splash.png rename to android/app/src/official/res/drawable-xxhdpi/splash.png diff --git a/android/app/src/foss/res/drawable/ic_launcher_background.xml b/android/app/src/official/res/drawable/ic_launcher_background.xml similarity index 100% rename from android/app/src/foss/res/drawable/ic_launcher_background.xml rename to android/app/src/official/res/drawable/ic_launcher_background.xml diff --git a/android/app/src/foss/res/drawable/ic_launcher_foreground.xml b/android/app/src/official/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from android/app/src/foss/res/drawable/ic_launcher_foreground.xml rename to android/app/src/official/res/drawable/ic_launcher_foreground.xml diff --git a/android/app/src/foss/res/drawable/launch_screen.xml b/android/app/src/official/res/drawable/launch_screen.xml similarity index 100% rename from android/app/src/foss/res/drawable/launch_screen.xml rename to android/app/src/official/res/drawable/launch_screen.xml diff --git a/android/app/src/play/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/official/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from android/app/src/play/res/mipmap-anydpi-v26/ic_launcher.xml rename to android/app/src/official/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/android/app/src/play/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/official/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from android/app/src/play/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to android/app/src/official/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/android/app/src/foss/res/mipmap-hdpi/ic_launcher.png b/android/app/src/official/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from android/app/src/foss/res/mipmap-hdpi/ic_launcher.png rename to android/app/src/official/res/mipmap-hdpi/ic_launcher.png diff --git a/android/app/src/foss/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/official/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/foss/res/mipmap-hdpi/ic_launcher_round.png rename to android/app/src/official/res/mipmap-hdpi/ic_launcher_round.png diff --git a/android/app/src/foss/res/mipmap-mdpi/ic_launcher.png b/android/app/src/official/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from android/app/src/foss/res/mipmap-mdpi/ic_launcher.png rename to android/app/src/official/res/mipmap-mdpi/ic_launcher.png diff --git a/android/app/src/foss/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/official/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/foss/res/mipmap-mdpi/ic_launcher_round.png rename to android/app/src/official/res/mipmap-mdpi/ic_launcher_round.png diff --git a/android/app/src/foss/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/official/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from android/app/src/foss/res/mipmap-xhdpi/ic_launcher.png rename to android/app/src/official/res/mipmap-xhdpi/ic_launcher.png diff --git a/android/app/src/foss/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/official/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/foss/res/mipmap-xhdpi/ic_launcher_round.png rename to android/app/src/official/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/android/app/src/foss/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/official/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from android/app/src/foss/res/mipmap-xxhdpi/ic_launcher.png rename to android/app/src/official/res/mipmap-xxhdpi/ic_launcher.png diff --git a/android/app/src/foss/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/official/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/foss/res/mipmap-xxhdpi/ic_launcher_round.png rename to android/app/src/official/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/android/app/src/foss/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/official/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from android/app/src/foss/res/mipmap-xxxhdpi/ic_launcher.png rename to android/app/src/official/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/android/app/src/foss/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/official/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from android/app/src/foss/res/mipmap-xxxhdpi/ic_launcher_round.png rename to android/app/src/official/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/android/app/src/foss/res/values/colors.xml b/android/app/src/official/res/values/colors.xml similarity index 100% rename from android/app/src/foss/res/values/colors.xml rename to android/app/src/official/res/values/colors.xml diff --git a/android/app/src/foss/res/values/strings.xml b/android/app/src/official/res/values/strings.xml similarity index 100% rename from android/app/src/foss/res/values/strings.xml rename to android/app/src/official/res/values/strings.xml diff --git a/android/app/src/play/google-services.json b/android/app/src/play/google-services.json deleted file mode 100644 index 4b3f409be4..0000000000 --- a/android/app/src/play/google-services.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "project_info": { - "project_number": "115198584049", - "firebase_url": "https://rocketchat-reactnative-test.firebaseio.com", - "project_id": "rocketchat-reactnative-test", - "storage_bucket": "rocketchat-reactnative-test.appspot.com" - }, - "client": [ - { - "client_info": { - "mobilesdk_app_id": "1:115198584049:android:8be27b1f7c42a2ed", - "android_client_info": { - "package_name": "chat.rocket.reactnative" - } - }, - "oauth_client": [ - { - "client_id": "115198584049-ack609b1338b827fta26s9rd2ab1aad5.apps.googleusercontent.com", - "client_type": 3 - } - ], - "api_key": [ - { - "current_key": "AIzaSyAWwowhAfACHBw3YxmDOXY3QyakgjhJLqc" - } - ], - "services": { - "appinvite_service": { - "other_platform_oauth_client": [ - { - "client_id": "115198584049-ack609b1338b827fta26s9rd2ab1aad5.apps.googleusercontent.com", - "client_type": 3 - } - ] - } - } - } - ], - "configuration_version": "1" -} \ No newline at end of file diff --git a/android/app/src/play/java/chat/rocket/reactnative/Encryption.java b/android/app/src/play/java/chat/rocket/reactnative/Encryption.java index 83c2559cdb..bb7b12ff68 100644 --- a/android/app/src/play/java/chat/rocket/reactnative/Encryption.java +++ b/android/app/src/play/java/chat/rocket/reactnative/Encryption.java @@ -1,28 +1,22 @@ package chat.rocket.reactnative; -import android.util.Log; -import android.util.Base64; import android.database.Cursor; +import android.util.Base64; +import android.util.Log; -import com.pedrouid.crypto.RSA; -import com.pedrouid.crypto.RCTAes; -import com.pedrouid.crypto.RCTRsaUtils; -import com.pedrouid.crypto.Util; - -import com.google.gson.Gson; - -import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; - +import com.facebook.react.bridge.WritableMap; +import com.google.gson.Gson; import com.nozbe.watermelondb.Database; +import com.pedrouid.crypto.RCTAes; +import com.pedrouid.crypto.RCTRsaUtils; +import com.pedrouid.crypto.RSA; +import com.pedrouid.crypto.Util; -import java.util.Arrays; +import java.lang.reflect.Field; import java.security.SecureRandom; +import java.util.Arrays; class Message { String _id; @@ -69,8 +63,24 @@ class Encryption { public static Encryption shared = new Encryption(); private ReactApplicationContext reactContext; - public Room readRoom(final Ejson ejson) { - Database database = new Database(ejson.serverURL().replace("https://", "") + "-experimental.db", reactContext); + public Room readRoom(final Ejson ejson) throws NoSuchFieldException { + int resId = reactContext.getResources().getIdentifier("rn_config_reader_custom_package", "string", reactContext.getPackageName()); + String className = reactContext.getString(resId); + Class clazz = null; + Boolean isOfficial = false; + try { + clazz = Class.forName(className + ".BuildConfig"); + Field IS_OFFICIAL = clazz.getField("IS_OFFICIAL"); + isOfficial = (Boolean) IS_OFFICIAL.get(null); + } catch (ClassNotFoundException | IllegalAccessException e) { + e.printStackTrace(); + } + String dbName = ejson.serverURL().replace("https://", ""); + if (!isOfficial) { + dbName += "-experimental"; + } + dbName += ".db"; + Database database = new Database(dbName, reactContext); String[] query = {ejson.rid}; Cursor cursor = database.rawQuery("select * from subscriptions where id == ? limit 1", query); @@ -152,7 +162,7 @@ public String decryptMessage(final Ejson ejson, final ReactApplicationContext re return m.text; } catch (Exception e) { - Log.d("[ROCKETCHAT][ENCRYPTION]", Log.getStackTraceString(e)); + Log.d("[ROCKETCHAT][E2E]", Log.getStackTraceString(e)); } return null; @@ -182,7 +192,7 @@ public String encryptMessage(final String message, final String id, final Ejson return keyId + Base64.encodeToString(concat(bytes, data), Base64.NO_WRAP); } catch (Exception e) { - Log.d("[ROCKETCHAT][ENCRYPTION]", Log.getStackTraceString(e)); + Log.d("[ROCKETCHAT][E2E]", Log.getStackTraceString(e)); } return message; diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile index d73d3381fc..1ac6d1fa73 100644 --- a/android/fastlane/Fastfile +++ b/android/fastlane/Fastfile @@ -16,26 +16,20 @@ default_platform(:android) platform :android do - desc "Play build for development" - lane :playBuild do - gradle(task: "assemblePlayDebug") - end - - desc "Foss build for release" - lane :fossRelease do - gradle(task: "assembleFossRelease") - end - - desc "Play build for release" - lane :playRelease do - gradle(task: "bundlePlayRelease") - end - desc "Upload App to Play Store Internal" - lane :beta do - upload_to_play_store( - track: 'internal', - aab: 'android/app/build/outputs/bundle/playRelease/app-play-release.aab' - ) + lane :beta do |options| + if options[:official] + upload_to_play_store( + package_name: 'chat.rocket.android', + track: 'internal', + aab: 'android/app/build/outputs/bundle/officialPlayRelease/app-official-play-release.aab' + ) + else + upload_to_play_store( + package_name: 'chat.rocket.reactnative', + track: 'internal', + aab: 'android/app/build/outputs/bundle/experimentalPlayRelease/app-experimental-play-release.aab' + ) + end end end diff --git a/app/constants/environment.js b/app/constants/environment.js index 099d27d1ce..43a1dc49f9 100644 --- a/app/constants/environment.js +++ b/app/constants/environment.js @@ -1,3 +1,5 @@ import RNConfigReader from 'react-native-config-reader'; export const isFDroidBuild = RNConfigReader.FDROID_BUILD; + +export const isOfficial = RNConfigReader.IS_OFFICIAL; diff --git a/app/lib/database/index.js b/app/lib/database/index.js index 41f135551b..67ae9782c8 100644 --- a/app/lib/database/index.js +++ b/app/lib/database/index.js @@ -28,6 +28,7 @@ import serversMigrations from './model/servers/migrations'; import { isIOS } from '../../utils/deviceInfo'; import appGroup from '../../utils/appGroup'; +import { isOfficial } from '../../constants/environment'; const appGroupPath = isIOS ? appGroup.path : ''; @@ -35,9 +36,11 @@ if (__DEV__ && isIOS) { console.log(appGroupPath); } +const getDatabasePath = name => `${ appGroupPath }${ name }${ isOfficial ? '' : '-experimental' }.db`; + export const getDatabase = (database = '') => { const path = database.replace(/(^\w+:|^)\/\//, '').replace(/\//g, '.'); - const dbName = `${ appGroupPath }${ path }-experimental.db`; + const dbName = getDatabasePath(path); const adapter = new SQLiteAdapter({ dbName, @@ -70,7 +73,7 @@ class DB { databases = { serversDB: new Database({ adapter: new SQLiteAdapter({ - dbName: `${ appGroupPath }default-experimental.db`, + dbName: getDatabasePath('default'), schema: serversSchema, migrations: serversMigrations }), @@ -97,7 +100,7 @@ class DB { setShareDB(database = '') { const path = database.replace(/(^\w+:|^)\/\//, '').replace(/\//g, '.'); - const dbName = `${ appGroupPath }${ path }-experimental.db`; + const dbName = getDatabasePath(path); const adapter = new SQLiteAdapter({ dbName, diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/100.png b/ios/Experimental.xcassets/AppIcon.appiconset/100.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/100.png rename to ios/Experimental.xcassets/AppIcon.appiconset/100.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/1024.png b/ios/Experimental.xcassets/AppIcon.appiconset/1024.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/1024.png rename to ios/Experimental.xcassets/AppIcon.appiconset/1024.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/114.png b/ios/Experimental.xcassets/AppIcon.appiconset/114.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/114.png rename to ios/Experimental.xcassets/AppIcon.appiconset/114.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/120.png b/ios/Experimental.xcassets/AppIcon.appiconset/120.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/120.png rename to ios/Experimental.xcassets/AppIcon.appiconset/120.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/144.png b/ios/Experimental.xcassets/AppIcon.appiconset/144.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/144.png rename to ios/Experimental.xcassets/AppIcon.appiconset/144.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/152.png b/ios/Experimental.xcassets/AppIcon.appiconset/152.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/152.png rename to ios/Experimental.xcassets/AppIcon.appiconset/152.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/167.png b/ios/Experimental.xcassets/AppIcon.appiconset/167.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/167.png rename to ios/Experimental.xcassets/AppIcon.appiconset/167.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/180.png b/ios/Experimental.xcassets/AppIcon.appiconset/180.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/180.png rename to ios/Experimental.xcassets/AppIcon.appiconset/180.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/20.png b/ios/Experimental.xcassets/AppIcon.appiconset/20.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/20.png rename to ios/Experimental.xcassets/AppIcon.appiconset/20.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/29.png b/ios/Experimental.xcassets/AppIcon.appiconset/29.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/29.png rename to ios/Experimental.xcassets/AppIcon.appiconset/29.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/40.png b/ios/Experimental.xcassets/AppIcon.appiconset/40.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/40.png rename to ios/Experimental.xcassets/AppIcon.appiconset/40.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/50.png b/ios/Experimental.xcassets/AppIcon.appiconset/50.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/50.png rename to ios/Experimental.xcassets/AppIcon.appiconset/50.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/57.png b/ios/Experimental.xcassets/AppIcon.appiconset/57.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/57.png rename to ios/Experimental.xcassets/AppIcon.appiconset/57.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/58.png b/ios/Experimental.xcassets/AppIcon.appiconset/58.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/58.png rename to ios/Experimental.xcassets/AppIcon.appiconset/58.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/60.png b/ios/Experimental.xcassets/AppIcon.appiconset/60.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/60.png rename to ios/Experimental.xcassets/AppIcon.appiconset/60.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/72.png b/ios/Experimental.xcassets/AppIcon.appiconset/72.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/72.png rename to ios/Experimental.xcassets/AppIcon.appiconset/72.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/76.png b/ios/Experimental.xcassets/AppIcon.appiconset/76.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/76.png rename to ios/Experimental.xcassets/AppIcon.appiconset/76.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/80.png b/ios/Experimental.xcassets/AppIcon.appiconset/80.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/80.png rename to ios/Experimental.xcassets/AppIcon.appiconset/80.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/87.png b/ios/Experimental.xcassets/AppIcon.appiconset/87.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/87.png rename to ios/Experimental.xcassets/AppIcon.appiconset/87.png diff --git a/ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/Experimental.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from ios/RocketChatRN/Images.xcassets/AppIcon.appiconset/Contents.json rename to ios/Experimental.xcassets/AppIcon.appiconset/Contents.json diff --git a/ios/Experimental.xcassets/Contents.json b/ios/Experimental.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/ios/Experimental.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/Contents.json b/ios/Experimental.xcassets/Launch Screen Icon.imageset/Contents.json similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/Contents.json rename to ios/Experimental.xcassets/Launch Screen Icon.imageset/Contents.json diff --git a/ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/icon.png b/ios/Experimental.xcassets/Launch Screen Icon.imageset/icon.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/icon.png rename to ios/Experimental.xcassets/Launch Screen Icon.imageset/icon.png diff --git a/ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/icon@2x.png b/ios/Experimental.xcassets/Launch Screen Icon.imageset/icon@2x.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/icon@2x.png rename to ios/Experimental.xcassets/Launch Screen Icon.imageset/icon@2x.png diff --git a/ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/icon@3x.png b/ios/Experimental.xcassets/Launch Screen Icon.imageset/icon@3x.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/icon@3x.png rename to ios/Experimental.xcassets/Launch Screen Icon.imageset/icon@3x.png diff --git a/ios/Experimental.xcassets/splashBackgroundColor.colorset/Contents.json b/ios/Experimental.xcassets/splashBackgroundColor.colorset/Contents.json new file mode 100644 index 0000000000..76ebb74fc1 --- /dev/null +++ b/ios/Experimental.xcassets/splashBackgroundColor.colorset/Contents.json @@ -0,0 +1,59 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "extended-srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.945", + "green" : "0.937", + "red" : "0.933" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "extended-srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.961", + "green" : "0.455", + "red" : "0.114" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/ios/LaunchScreen.storyboard b/ios/LaunchScreen.storyboard index 4cf51f288b..f6ec6adeb5 100644 --- a/ios/LaunchScreen.storyboard +++ b/ios/LaunchScreen.storyboard @@ -1,9 +1,9 @@ - + - + @@ -24,6 +24,7 @@ + @@ -32,7 +33,6 @@ - @@ -43,7 +43,7 @@ - + diff --git a/ios/NotificationService/Info.plist b/ios/NotificationService/Info.plist index 5705853e51..d2f1244d4b 100644 --- a/ios/NotificationService/Info.plist +++ b/ios/NotificationService/Info.plist @@ -2,8 +2,6 @@ - KeychainGroup - $(AppIdentifierPrefix)chat.rocket.reactnative AppGroup group.ios.chat.rocket CFBundleDevelopmentRegion @@ -24,6 +22,8 @@ $(MARKETING_VERSION) CFBundleVersion 1 + KeychainGroup + $(AppIdentifierPrefix)chat.rocket.reactnative NSExtension NSExtensionPointIdentifier diff --git a/ios/Official.xcassets/AppIcon.appiconset/100.png b/ios/Official.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 0000000000..7f24a26797 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/100.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/1024.png b/ios/Official.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000000..e737a61ea6 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/1024.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/114.png b/ios/Official.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 0000000000..7b5b7e31f0 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/114.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/120.png b/ios/Official.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 0000000000..2db6152265 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/120.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/144.png b/ios/Official.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 0000000000..9e4461b531 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/144.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/152.png b/ios/Official.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 0000000000..ece9c43b4e Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/152.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/167.png b/ios/Official.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 0000000000..c10c5fae9a Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/167.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/180.png b/ios/Official.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 0000000000..e883fea311 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/180.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/20.png b/ios/Official.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 0000000000..580f31abf6 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/20.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/29.png b/ios/Official.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 0000000000..075803b018 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/29.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/40.png b/ios/Official.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 0000000000..cc301e7db6 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/40.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/50.png b/ios/Official.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 0000000000..4b68ad4618 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/50.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/57.png b/ios/Official.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 0000000000..5af4cfb70a Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/57.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/58.png b/ios/Official.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 0000000000..e9c3392d48 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/58.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/60.png b/ios/Official.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 0000000000..57618b80da Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/60.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/72.png b/ios/Official.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 0000000000..b539994906 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/72.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/76.png b/ios/Official.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 0000000000..caef08f4d2 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/76.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/80.png b/ios/Official.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 0000000000..1b956d3da4 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/80.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/87.png b/ios/Official.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 0000000000..17381abce1 Binary files /dev/null and b/ios/Official.xcassets/AppIcon.appiconset/87.png differ diff --git a/ios/Official.xcassets/AppIcon.appiconset/Contents.json b/ios/Official.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..4fdf88263a --- /dev/null +++ b/ios/Official.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,158 @@ +{ + "images" : [ + { + "filename" : "40.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "60.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "87.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "filename" : "80.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "57.png", + "idiom" : "iphone", + "scale" : "1x", + "size" : "57x57" + }, + { + "filename" : "114.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "57x57" + }, + { + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "180.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "20.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "filename" : "29.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "filename" : "58.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "filename" : "40.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "filename" : "80.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "filename" : "50.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "50x50" + }, + { + "filename" : "100.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "50x50" + }, + { + "filename" : "72.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "72x72" + }, + { + "filename" : "144.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "72x72" + }, + { + "filename" : "76.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "152.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "167.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "1024.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Official.xcassets/Contents.json b/ios/Official.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/ios/Official.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Official.xcassets/Launch Screen Icon.imageset/Contents.json b/ios/Official.xcassets/Launch Screen Icon.imageset/Contents.json new file mode 100644 index 0000000000..a7e6775761 --- /dev/null +++ b/ios/Official.xcassets/Launch Screen Icon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Icon.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Official.xcassets/Launch Screen Icon.imageset/Icon.png b/ios/Official.xcassets/Launch Screen Icon.imageset/Icon.png new file mode 100644 index 0000000000..624302b848 Binary files /dev/null and b/ios/Official.xcassets/Launch Screen Icon.imageset/Icon.png differ diff --git a/ios/Official.xcassets/Launch Screen Icon.imageset/Icon@2x.png b/ios/Official.xcassets/Launch Screen Icon.imageset/Icon@2x.png new file mode 100644 index 0000000000..46b4dedd4d Binary files /dev/null and b/ios/Official.xcassets/Launch Screen Icon.imageset/Icon@2x.png differ diff --git a/ios/Official.xcassets/Launch Screen Icon.imageset/Icon@3x.png b/ios/Official.xcassets/Launch Screen Icon.imageset/Icon@3x.png new file mode 100644 index 0000000000..9ff1d336fb Binary files /dev/null and b/ios/Official.xcassets/Launch Screen Icon.imageset/Icon@3x.png differ diff --git a/ios/RocketChatRN/Images.xcassets/splashBackgroundColor.colorset/Contents.json b/ios/Official.xcassets/splashBackgroundColor.colorset/Contents.json similarity index 85% rename from ios/RocketChatRN/Images.xcassets/splashBackgroundColor.colorset/Contents.json rename to ios/Official.xcassets/splashBackgroundColor.colorset/Contents.json index 0e90a95d4c..07fb2c4e4e 100644 --- a/ios/RocketChatRN/Images.xcassets/splashBackgroundColor.colorset/Contents.json +++ b/ios/Official.xcassets/splashBackgroundColor.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "extended-srgb", "components" : { "alpha" : "1.000", - "blue" : "0xF5", - "green" : "0x74", - "red" : "0x1D" + "blue" : "0x5C", + "green" : "0x45", + "red" : "0xF5" } }, "idiom" : "universal" @@ -41,9 +41,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x00", - "green" : "0x00", - "red" : "0x00" + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" } }, "idiom" : "universal" diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index b9004681a9..2b0d270082 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -87,10 +87,58 @@ 50046CB6BDA69B9232CF66D9 /* libPods-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C235DC7B31A4D1578EDEF219 /* libPods-RocketChatRN.a */; }; 7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; }; 7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; }; + 7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; }; + 7A14FCF4257FEB59005BDCD4 /* Official.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCF3257FEB59005BDCD4 /* Official.xcassets */; }; 7A3268F624F04FFE0050E241 /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A3268F524F04FFE0050E241 /* custom.ttf */; }; 7A3268F724F04FFE0050E241 /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A3268F524F04FFE0050E241 /* custom.ttf */; }; - 7AAA749E23043B1E00F1ADE9 /* Watermelon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AAA749D23043B1E00F1ADE9 /* Watermelon.swift */; }; - 7AC99C1C2339361F0000A0CB /* Watermelon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AAA749D23043B1E00F1ADE9 /* Watermelon.swift */; }; + 7AAB3E15257E6A6E00707CF6 /* Sender.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C8282511304100FEF824 /* Sender.swift */; }; + 7AAB3E16257E6A6E00707CF6 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E680ED82512990700C9257A /* Request.swift */; }; + 7AAB3E17257E6A6E00707CF6 /* ReplyNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ED00BB02513E04400A1331F /* ReplyNotification.swift */; }; + 7AAB3E18257E6A6E00707CF6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB8EF712510F1EE00F352B7 /* Storage.swift */; }; + 7AAB3E19257E6A6E00707CF6 /* Push.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2F61652512958900871711 /* Push.swift */; }; + 7AAB3E1A257E6A6E00707CF6 /* RoomType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E0426E5251A5467008F022C /* RoomType.swift */; }; + 7AAB3E1B257E6A6E00707CF6 /* MessageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E51D961251263CD00DC95DE /* MessageType.swift */; }; + 7AAB3E1C257E6A6E00707CF6 /* PushResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C8202511301400FEF824 /* PushResponse.swift */; }; + 7AAB3E1D257E6A6E00707CF6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 7AAB3E1E257E6A6E00707CF6 /* Encryption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EF5FBD0250C109E00614FEA /* Encryption.swift */; }; + 7AAB3E1F257E6A6E00707CF6 /* RocketChat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E470E822513A71E00E3DD1D /* RocketChat.swift */; }; + 7AAB3E20257E6A6E00707CF6 /* HTTPMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2F61632512955D00871711 /* HTTPMethod.swift */; }; + 7AAB3E21257E6A6E00707CF6 /* Payload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C8262511303900FEF824 /* Payload.swift */; }; + 7AAB3E23257E6A6E00707CF6 /* Data+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E598AE625150660002BDFBD /* Data+Extensions.swift */; }; + 7AAB3E24257E6A6E00707CF6 /* Date+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E598AE32515057D002BDFBD /* Date+Extensions.swift */; }; + 7AAB3E25257E6A6E00707CF6 /* Database.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E1C2F7F250FCB69005DCE7D /* Database.swift */; }; + 7AAB3E26257E6A6E00707CF6 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E67380324DC529B0009E081 /* String+Extensions.swift */; }; + 7AAB3E27257E6A6E00707CF6 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C8242511303100FEF824 /* Notification.swift */; }; + 7AAB3E28257E6A6E00707CF6 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2F615A25128F9A00871711 /* API.swift */; }; + 7AAB3E29257E6A6E00707CF6 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2F615C25128FA300871711 /* Response.swift */; }; + 7AAB3E2A257E6A6E00707CF6 /* AppGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E068D0024FD2E0500A0FFC1 /* AppGroup.m */; }; + 7AAB3E2B257E6A6E00707CF6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 7AAB3E2C257E6A6E00707CF6 /* URL+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C81B2511208400FEF824 /* URL+Extensions.swift */; }; + 7AAB3E2D257E6A6E00707CF6 /* AppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E068CFD24FD2DC700A0FFC1 /* AppGroup.swift */; }; + 7AAB3E2E257E6A6E00707CF6 /* RoomKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C82C2511337700FEF824 /* RoomKey.swift */; }; + 7AAB3E2F257E6A6E00707CF6 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C82A2511335A00FEF824 /* Message.swift */; }; + 7AAB3E30257E6A6E00707CF6 /* NotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E51D964251263D600DC95DE /* NotificationType.swift */; }; + 7AAB3E31257E6A6E00707CF6 /* SendMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E598AE825151A63002BDFBD /* SendMessage.swift */; }; + 7AAB3E33257E6A6E00707CF6 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37C79D9BD0742CE936B6982 /* libc++.tbd */; }; + 7AAB3E34257E6A6E00707CF6 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA8192326CD5100E22452 /* libsqlite3.tbd */; }; + 7AAB3E35257E6A6E00707CF6 /* libc.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA8172326CD4B00E22452 /* libc.tbd */; }; + 7AAB3E36257E6A6E00707CF6 /* VideoToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA8152326CD4500E22452 /* VideoToolbox.framework */; }; + 7AAB3E37257E6A6E00707CF6 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA8132326CD3E00E22452 /* CoreVideo.framework */; }; + 7AAB3E38257E6A6E00707CF6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA8112326CD3900E22452 /* CoreAudio.framework */; }; + 7AAB3E39257E6A6E00707CF6 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA80F2326CD3300E22452 /* GLKit.framework */; }; + 7AAB3E3A257E6A6E00707CF6 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA80D2326CD2F00E22452 /* CoreGraphics.framework */; }; + 7AAB3E3B257E6A6E00707CF6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA80B2326CD2800E22452 /* AudioToolbox.framework */; }; + 7AAB3E3C257E6A6E00707CF6 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E1EA8092326CD2200E22452 /* AVFoundation.framework */; }; + 7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */; }; + 7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; + 7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; }; + 7AAB3E40257E6A6E00707CF6 /* libPods-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C235DC7B31A4D1578EDEF219 /* libPods-RocketChatRN.a */; }; + 7AAB3E42257E6A6E00707CF6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 7AAB3E43257E6A6E00707CF6 /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A3268F524F04FFE0050E241 /* custom.ttf */; }; + 7AAB3E44257E6A6E00707CF6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; }; + 7AAB3E45257E6A6E00707CF6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; }; + 7AAB3E49257E6A6E00707CF6 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EC6ACB022CB9FC300A41C61 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 7AAB3E4A257E6A6E00707CF6 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */; }; DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; }; /* End PBXBuildFile section */ @@ -117,6 +165,20 @@ remoteGlobalIDString = 6E660D5E213BCCD300189354; remoteInfo = WatermelonDB; }; + 7AAB3E0F257E6A6E00707CF6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1EC6ACAF22CB9FC300A41C61; + remoteInfo = ShareRocketChatRN; + }; + 7AAB3E11257E6A6E00707CF6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1EFEB5942493B6640072EDC0; + remoteInfo = NotificationService; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -132,6 +194,18 @@ name = "Embed App Extensions"; runOnlyForDeploymentPostprocessing = 0; }; + 7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 7AAB3E49257E6A6E00707CF6 /* ShareRocketChatRN.appex in Embed App Extensions */, + 7AAB3E4A257E6A6E00707CF6 /* NotificationService.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -139,7 +213,7 @@ 037C33B0D9A54FB4CB670FB7 /* Pods-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareRocketChatRN.release.xcconfig"; path = "Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; 0383633C4523666C176CAA52 /* Pods-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareRocketChatRN.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; 06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 13B07F961A680F5B00A75B9A /* RocketChatRN.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RocketChatRN.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = RocketChatRN/AppDelegate.m; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RocketChatRN/Images.xcassets; sourceTree = ""; }; @@ -197,9 +271,11 @@ 66D6B1D0567051BE541450C9 /* Pods-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RocketChatRN.release.xcconfig"; path = "Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.release.xcconfig"; sourceTree = ""; }; 7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Experimental.xcassets; sourceTree = ""; }; + 7A14FCF3257FEB59005BDCD4 /* Official.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Official.xcassets; sourceTree = ""; }; 7A3268F524F04FFE0050E241 /* custom.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = custom.ttf; sourceTree = ""; }; 7AAA749C23043B1D00F1ADE9 /* RocketChatRN-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RocketChatRN-Bridging-Header.h"; sourceTree = ""; }; - 7AAA749D23043B1E00F1ADE9 /* Watermelon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Watermelon.swift; sourceTree = ""; }; + 7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 81411D280138EF5344596C2F /* libPods-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 9730F55A254AC78BC5361659 /* Pods-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.release.xcconfig"; path = "Pods/Target Support Files/Pods-NotificationService/Pods-NotificationService.release.xcconfig"; sourceTree = ""; }; @@ -251,6 +327,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7AAB3E32257E6A6E00707CF6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7AAB3E33257E6A6E00707CF6 /* libc++.tbd in Frameworks */, + 7AAB3E34257E6A6E00707CF6 /* libsqlite3.tbd in Frameworks */, + 7AAB3E35257E6A6E00707CF6 /* libc.tbd in Frameworks */, + 7AAB3E36257E6A6E00707CF6 /* VideoToolbox.framework in Frameworks */, + 7AAB3E37257E6A6E00707CF6 /* CoreVideo.framework in Frameworks */, + 7AAB3E38257E6A6E00707CF6 /* CoreAudio.framework in Frameworks */, + 7AAB3E39257E6A6E00707CF6 /* GLKit.framework in Frameworks */, + 7AAB3E3A257E6A6E00707CF6 /* CoreGraphics.framework in Frameworks */, + 7AAB3E3B257E6A6E00707CF6 /* AudioToolbox.framework in Frameworks */, + 7AAB3E3C257E6A6E00707CF6 /* AVFoundation.framework in Frameworks */, + 7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */, + 7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */, + 7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */, + 7AAB3E40257E6A6E00707CF6 /* libPods-RocketChatRN.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -263,9 +360,10 @@ 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FB01A68108700A75B9A /* AppDelegate.m */, 13B07FB51A68108700A75B9A /* Images.xcassets */, + 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */, + 7A14FCF3257FEB59005BDCD4 /* Official.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, 13B07FB71A68108700A75B9A /* main.m */, - 7AAA749D23043B1E00F1ADE9 /* Watermelon.swift */, 7AAA749C23043B1D00F1ADE9 /* RocketChatRN-Bridging-Header.h */, 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */, 1ED00BB02513E04400A1331F /* ReplyNotification.swift */, @@ -426,9 +524,10 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* RocketChatRN.app */, + 13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */, 1EC6ACB022CB9FC300A41C61 /* ShareRocketChatRN.appex */, 1EFEB5952493B6640072EDC0 /* NotificationService.appex */, + 7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */, ); name = Products; sourceTree = ""; @@ -499,7 +598,7 @@ ); name = RocketChatRN; productName = "Hello World"; - productReference = 13B07F961A680F5B00A75B9A /* RocketChatRN.app */; + productReference = 13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */; productType = "com.apple.product-type.application"; }; 1EC6ACAF22CB9FC300A41C61 /* ShareRocketChatRN */ = { @@ -545,6 +644,34 @@ productReference = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; productType = "com.apple.product-type.app-extension"; }; + 7AAB3E0D257E6A6E00707CF6 /* Rocket.Chat */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */; + buildPhases = ( + 7AAB3E12257E6A6E00707CF6 /* [CP] Check Pods Manifest.lock */, + 7AAB3E13257E6A6E00707CF6 /* Start Packager */, + 7AAB3E14257E6A6E00707CF6 /* Sources */, + 7AAB3E32257E6A6E00707CF6 /* Frameworks */, + 7AAB3E41257E6A6E00707CF6 /* Resources */, + 7AAB3E46257E6A6E00707CF6 /* Bundle React Native code and images */, + 7AAB3E47257E6A6E00707CF6 /* [CP] Copy Pods Resources */, + 7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */, + 7AAB3E4B257E6A6E00707CF6 /* ShellScript */, + 7AAB3E4C257E6A6E00707CF6 /* [CP] Embed Pods Frameworks */, + 7AAB3E4D257E6A6E00707CF6 /* [CP-User] [RNFB] Core Configuration */, + 7AAB3E4E257E6A6E00707CF6 /* [CP-User] [RNFB] Crashlytics Configuration */, + ); + buildRules = ( + ); + dependencies = ( + 7AAB3E0E257E6A6E00707CF6 /* PBXTargetDependency */, + 7AAB3E10257E6A6E00707CF6 /* PBXTargetDependency */, + ); + name = Rocket.Chat; + productName = "Hello World"; + productReference = 7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -590,6 +717,10 @@ DevelopmentTeam = S6UPZG7ZR3; ProvisioningStyle = Manual; }; + 7AAB3E0D257E6A6E00707CF6 = { + DevelopmentTeam = S6UPZG7ZR3; + ProvisioningStyle = Manual; + }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RocketChatRN" */; @@ -615,6 +746,7 @@ 13B07F861A680F5B00A75B9A /* RocketChatRN */, 1EC6ACAF22CB9FC300A41C61 /* ShareRocketChatRN */, 1EFEB5942493B6640072EDC0 /* NotificationService */, + 7AAB3E0D257E6A6E00707CF6 /* Rocket.Chat */, ); }; /* End PBXProject section */ @@ -636,6 +768,7 @@ files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 7A3268F624F04FFE0050E241 /* custom.ttf in Resources */, + 7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */, 7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */, 7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */, ); @@ -659,6 +792,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7AAB3E41257E6A6E00707CF6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7A14FCF4257FEB59005BDCD4 /* Official.xcassets in Resources */, + 7AAB3E42257E6A6E00707CF6 /* Images.xcassets in Resources */, + 7AAB3E43257E6A6E00707CF6 /* custom.ttf in Resources */, + 7AAB3E44257E6A6E00707CF6 /* GoogleService-Info.plist in Resources */, + 7AAB3E45257E6A6E00707CF6 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -868,6 +1013,167 @@ shellPath = /bin/sh; shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/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 \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; }; + 7AAB3E12257E6A6E00707CF6 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RocketChatRN-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; + }; + 7AAB3E13257E6A6E00707CF6 /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/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 \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + }; + 7AAB3E46257E6A6E00707CF6 /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 12; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; + }; + 7AAB3E47257E6A6E00707CF6 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 7AAB3E4B257E6A6E00707CF6 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n"; + }; + 7AAB3E4C257E6A6E00707CF6 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-frameworks.sh", + "${PODS_ROOT}/JitsiMeetSDK/Frameworks/JitsiMeet.framework", + "${PODS_ROOT}/JitsiMeetSDK/Frameworks/WebRTC.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeet.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 7AAB3E4D257E6A6E00707CF6 /* [CP-User] [RNFB] Core Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "[CP-User] [RNFB] Core 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\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 -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 | 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 -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || 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.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.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes usful\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\n\n # config.admob_delay_app_measurement_init\n _ADMOB_DELAY_APP_MEASUREMENT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_delay_app_measurement_init\")\n if [[ $_ADMOB_DELAY_APP_MEASUREMENT == \"true\" ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADDelayAppMeasurementInit\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"YES\")\n fi\n\n # config.admob_ios_app_id\n _ADMOB_IOS_APP_ID=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"admob_ios_app_id\")\n if [[ $_ADMOB_IOS_APP_ID ]]; then\n _PLIST_ENTRY_KEYS+=(\"GADApplicationIdentifier\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_ADMOB_IOS_APP_ID\")\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\n"; + }; + 7AAB3E4E257E6A6E00707CF6 /* [CP-User] [RNFB] Crashlytics Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + 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"; + }; 9558AC195A3506BB8472CE99 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1052,7 +1358,6 @@ 1E76CBC825152C070067298C /* RocketChat.swift in Sources */, 1E76CBD725152C840067298C /* HTTPMethod.swift in Sources */, 1E76CBC725152BFF0067298C /* Payload.swift in Sources */, - 7AAA749E23043B1E00F1ADE9 /* Watermelon.swift in Sources */, 1E76CBD225152C730067298C /* Data+Extensions.swift in Sources */, 1E76CBD125152C710067298C /* Date+Extensions.swift in Sources */, 1E76CBD425152C790067298C /* Database.swift in Sources */, @@ -1077,7 +1382,6 @@ files = ( 1EC6ACF622CBA01500A41C61 /* ShareRocketChatRN.m in Sources */, 1E068CFF24FD2DC700A0FFC1 /* AppGroup.swift in Sources */, - 7AC99C1C2339361F0000A0CB /* Watermelon.swift in Sources */, 1E068D0224FD2E0500A0FFC1 /* AppGroup.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1113,6 +1417,41 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7AAB3E14257E6A6E00707CF6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7AAB3E15257E6A6E00707CF6 /* Sender.swift in Sources */, + 7AAB3E16257E6A6E00707CF6 /* Request.swift in Sources */, + 7AAB3E17257E6A6E00707CF6 /* ReplyNotification.swift in Sources */, + 7AAB3E18257E6A6E00707CF6 /* Storage.swift in Sources */, + 7AAB3E19257E6A6E00707CF6 /* Push.swift in Sources */, + 7AAB3E1A257E6A6E00707CF6 /* RoomType.swift in Sources */, + 7AAB3E1B257E6A6E00707CF6 /* MessageType.swift in Sources */, + 7AAB3E1C257E6A6E00707CF6 /* PushResponse.swift in Sources */, + 7AAB3E1D257E6A6E00707CF6 /* AppDelegate.m in Sources */, + 7AAB3E1E257E6A6E00707CF6 /* Encryption.swift in Sources */, + 7AAB3E1F257E6A6E00707CF6 /* RocketChat.swift in Sources */, + 7AAB3E20257E6A6E00707CF6 /* HTTPMethod.swift in Sources */, + 7AAB3E21257E6A6E00707CF6 /* Payload.swift in Sources */, + 7AAB3E23257E6A6E00707CF6 /* Data+Extensions.swift in Sources */, + 7AAB3E24257E6A6E00707CF6 /* Date+Extensions.swift in Sources */, + 7AAB3E25257E6A6E00707CF6 /* Database.swift in Sources */, + 7AAB3E26257E6A6E00707CF6 /* String+Extensions.swift in Sources */, + 7AAB3E27257E6A6E00707CF6 /* Notification.swift in Sources */, + 7AAB3E28257E6A6E00707CF6 /* API.swift in Sources */, + 7AAB3E29257E6A6E00707CF6 /* Response.swift in Sources */, + 7AAB3E2A257E6A6E00707CF6 /* AppGroup.m in Sources */, + 7AAB3E2B257E6A6E00707CF6 /* main.m in Sources */, + 7AAB3E2C257E6A6E00707CF6 /* URL+Extensions.swift in Sources */, + 7AAB3E2D257E6A6E00707CF6 /* AppGroup.swift in Sources */, + 7AAB3E2E257E6A6E00707CF6 /* RoomKey.swift in Sources */, + 7AAB3E2F257E6A6E00707CF6 /* Message.swift in Sources */, + 7AAB3E30257E6A6E00707CF6 /* NotificationType.swift in Sources */, + 7AAB3E31257E6A6E00707CF6 /* SendMessage.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1126,6 +1465,16 @@ target = 1EFEB5942493B6640072EDC0 /* NotificationService */; targetProxy = 1EFEB59A2493B6640072EDC0 /* PBXContainerItemProxy */; }; + 7AAB3E0E257E6A6E00707CF6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1EC6ACAF22CB9FC300A41C61 /* ShareRocketChatRN */; + targetProxy = 7AAB3E0F257E6A6E00707CF6 /* PBXContainerItemProxy */; + }; + 7AAB3E10257E6A6E00707CF6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1EFEB5942493B6640072EDC0 /* NotificationService */; + targetProxy = 7AAB3E11257E6A6E00707CF6 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1153,7 +1502,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = S6UPZG7ZR3; ENABLE_BITCODE = NO; @@ -1183,9 +1532,10 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative; - PRODUCT_NAME = RocketChatRN; - PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative Development"; + PRODUCT_NAME = "Rocket.Chat Experimental"; + PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.reactnative"; SWIFT_OBJC_BRIDGING_HEADER = "RocketChatRN-Bridging-Header.h"; + SWIFT_OBJC_INTERFACE_HEADER_NAME = "RocketChatRN-Swift.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1206,7 +1556,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = S6UPZG7ZR3; ENABLE_BITCODE = NO; @@ -1236,9 +1586,10 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative; - PRODUCT_NAME = RocketChatRN; + PRODUCT_NAME = "Rocket.Chat Experimental"; PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.reactnative"; SWIFT_OBJC_BRIDGING_HEADER = "RocketChatRN-Bridging-Header.h"; + SWIFT_OBJC_INTERFACE_HEADER_NAME = "RocketChatRN-Swift.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; @@ -1304,7 +1655,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative.ShareExtension Development"; + PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.reactnative.ShareExtension"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1401,7 +1752,7 @@ MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative.NotificationService Development"; + PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.reactnative.NotificationService"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OBJC_BRIDGING_HEADER = "NotificationService/NotificationService-Bridging-Header.h"; @@ -1446,6 +1797,110 @@ }; name = Release; }; + 7AAB3E50257E6A6E00707CF6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = ACD75701AFD1CB848CAB0CB3 /* Pods-RocketChatRN.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APPLICATION_EXTENSION_API_ONLY = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = RocketChatRN/RocketChatRN.entitlements; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = S6UPZG7ZR3; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../../../react-native/React/**", + "$(SRCROOT)/../node_modules/@nozbe/watermelondb/native/ios/WatermelonDB/SupportingFiles/**", + ); + INFOPLIST_FILE = RocketChatRN/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(inherited)", + ); + OTHER_CFLAGS = ( + "$(inherited)", + "-DFB_SONARKIT_ENABLED=1", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.ios; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.ios"; + SWIFT_OBJC_BRIDGING_HEADER = "RocketChatRN-Bridging-Header.h"; + SWIFT_OBJC_INTERFACE_HEADER_NAME = "RocketChatRN-Swift.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 7AAB3E51257E6A6E00707CF6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 66D6B1D0567051BE541450C9 /* Pods-RocketChatRN.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APPLICATION_EXTENSION_API_ONLY = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = ""; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = RocketChatRN/RocketChatRN.entitlements; + CODE_SIGN_IDENTITY = "Apple Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = S6UPZG7ZR3; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/../../../react-native/React/**", + "$(SRCROOT)/../node_modules/@nozbe/watermelondb/native/ios/WatermelonDB/SupportingFiles/**", + ); + INFOPLIST_FILE = RocketChatRN/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + "$(inherited)", + ); + OTHER_CFLAGS = ( + "$(inherited)", + "-DFB_SONARKIT_ENABLED=1", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.ios; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.ios"; + SWIFT_OBJC_BRIDGING_HEADER = "RocketChatRN-Bridging-Header.h"; + SWIFT_OBJC_INTERFACE_HEADER_NAME = "RocketChatRN-Swift.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1578,6 +2033,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7AAB3E50257E6A6E00707CF6 /* Debug */, + 7AAB3E51257E6A6E00707CF6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RocketChatRN" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme index 3fd37eb6a7..0bd04dfdb1 100644 --- a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme +++ b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme @@ -30,7 +30,7 @@ @@ -66,7 +66,7 @@ @@ -84,7 +84,7 @@ diff --git a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChat.xcscheme b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChat.xcscheme new file mode 100644 index 0000000000..5f4de25a32 --- /dev/null +++ b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChat.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChatRN.xcscheme b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChatRN.xcscheme index a0a55dc16e..dbff852ea5 100644 --- a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChatRN.xcscheme +++ b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/RocketChatRN.xcscheme @@ -29,7 +29,7 @@ @@ -59,7 +59,7 @@ @@ -92,7 +92,7 @@ @@ -126,7 +126,7 @@ diff --git a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme index 5771aad3f4..6db82c3370 100644 --- a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme +++ b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme @@ -30,7 +30,7 @@ @@ -75,7 +75,7 @@ @@ -93,7 +93,7 @@ diff --git a/ios/RocketChatRN/Images.xcassets/Contents.json b/ios/RocketChatRN/Images.xcassets/Contents.json index da4a164c91..73c00596a7 100644 --- a/ios/RocketChatRN/Images.xcassets/Contents.json +++ b/ios/RocketChatRN/Images.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/ios/RocketChatRN/Images.xcassets/Icons/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/Contents.json deleted file mode 100644 index da4a164c91..0000000000 --- a/ios/RocketChatRN/Images.xcassets/Icons/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_black.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/message_empty_black.imageset/Contents.json deleted file mode 100644 index 8507827073..0000000000 --- a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_black.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "Message Empty Black Theme.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_dark.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/message_empty_dark.imageset/Contents.json deleted file mode 100644 index d414a4c130..0000000000 --- a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_dark.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "Message Empty Dark Theme.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_light.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/Icons/message_empty_light.imageset/Contents.json deleted file mode 100644 index d1ff3f57bb..0000000000 --- a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_light.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "Message Empty.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/Contents.json similarity index 88% rename from ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/Contents.json rename to ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/Contents.json index eed49b1492..371d769fb8 100644 --- a/ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/Contents.json +++ b/ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/Contents.json @@ -1,23 +1,23 @@ { "images" : [ { - "idiom" : "universal", "filename" : "audio_thumb.png", + "idiom" : "universal", "scale" : "1x" }, { - "idiom" : "universal", "filename" : "audio_thumb@2x.png", + "idiom" : "universal", "scale" : "2x" }, { - "idiom" : "universal", "filename" : "audio_thumb@3x.png", + "idiom" : "universal", "scale" : "3x" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/audio_thumb.png b/ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/audio_thumb.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/audio_thumb.png rename to ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/audio_thumb.png diff --git a/ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/audio_thumb@2x.png b/ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/audio_thumb@2x.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/audio_thumb@2x.png rename to ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/audio_thumb@2x.png diff --git a/ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/audio_thumb@3x.png b/ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/audio_thumb@3x.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/audio_thumb.imageset/audio_thumb@3x.png rename to ios/RocketChatRN/Images.xcassets/audio_thumb.imageset/audio_thumb@3x.png diff --git a/ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/logo.imageset/Contents.json similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Launch Screen Icon.imageset/Contents.json rename to ios/RocketChatRN/Images.xcassets/logo.imageset/Contents.json diff --git a/ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/icon.png b/ios/RocketChatRN/Images.xcassets/logo.imageset/icon.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/icon.png rename to ios/RocketChatRN/Images.xcassets/logo.imageset/icon.png diff --git a/ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/icon@2x.png b/ios/RocketChatRN/Images.xcassets/logo.imageset/icon@2x.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/icon@2x.png rename to ios/RocketChatRN/Images.xcassets/logo.imageset/icon@2x.png diff --git a/ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/icon@3x.png b/ios/RocketChatRN/Images.xcassets/logo.imageset/icon@3x.png similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/logo.imageset/icon@3x.png rename to ios/RocketChatRN/Images.xcassets/logo.imageset/icon@3x.png diff --git a/ios/RocketChatRN/Images.xcassets/message_empty_black.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/message_empty_black.imageset/Contents.json new file mode 100644 index 0000000000..dff142af84 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/message_empty_black.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Message Empty Black Theme.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_black.imageset/Message Empty Black Theme.pdf b/ios/RocketChatRN/Images.xcassets/message_empty_black.imageset/Message Empty Black Theme.pdf similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/message_empty_black.imageset/Message Empty Black Theme.pdf rename to ios/RocketChatRN/Images.xcassets/message_empty_black.imageset/Message Empty Black Theme.pdf diff --git a/ios/RocketChatRN/Images.xcassets/message_empty_dark.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/message_empty_dark.imageset/Contents.json new file mode 100644 index 0000000000..90d210a029 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/message_empty_dark.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Message Empty Dark Theme.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_dark.imageset/Message Empty Dark Theme.pdf b/ios/RocketChatRN/Images.xcassets/message_empty_dark.imageset/Message Empty Dark Theme.pdf similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/message_empty_dark.imageset/Message Empty Dark Theme.pdf rename to ios/RocketChatRN/Images.xcassets/message_empty_dark.imageset/Message Empty Dark Theme.pdf diff --git a/ios/RocketChatRN/Images.xcassets/message_empty_light.imageset/Contents.json b/ios/RocketChatRN/Images.xcassets/message_empty_light.imageset/Contents.json new file mode 100644 index 0000000000..defdb34c90 --- /dev/null +++ b/ios/RocketChatRN/Images.xcassets/message_empty_light.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "Message Empty.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/RocketChatRN/Images.xcassets/Icons/message_empty_light.imageset/Message Empty.pdf b/ios/RocketChatRN/Images.xcassets/message_empty_light.imageset/Message Empty.pdf similarity index 100% rename from ios/RocketChatRN/Images.xcassets/Icons/message_empty_light.imageset/Message Empty.pdf rename to ios/RocketChatRN/Images.xcassets/message_empty_light.imageset/Message Empty.pdf diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index e0cf557119..5fd2e90d11 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -2,14 +2,16 @@ - KeychainGroup - $(AppIdentifierPrefix)chat.rocket.reactnative + IS_OFFICIAL + + AppGroup + group.ios.chat.rocket BugsnagAPIKey CFBundleDevelopmentRegion en CFBundleDisplayName - Rocket.Chat Experimental + $(PRODUCT_NAME) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -38,9 +40,18 @@ CFBundleVersion - 100 + $(CURRENT_PROJECT_VERSION) ITSAppUsesNonExemptEncryption + KeychainGroup + $(AppIdentifierPrefix)chat.rocket.reactnative + LSApplicationQueriesSchemes + + googlechrome + googlechromes + firefox + brave + LSRequiresIPhoneOS NSAppTransportSecurity @@ -60,6 +71,8 @@ Take photos to share with other users NSContactsUsageDescription Allow $(PRODUCT_NAME) to access your contacts + NSFaceIDUsageDescription + Unlock the app with FaceID NSLocationAlwaysAndWhenInUseUsageDescription This permission stems from a library we use and will never be called anyway. If you see this, deny access NSLocationAlwaysUsageDescription @@ -76,8 +89,6 @@ Upload photos to share with other users or to change your avatar NSRemindersUsageDescription Allow $(PRODUCT_NAME) to access your reminders - NSFaceIDUsageDescription - Unlock the app with FaceID UIAppFonts custom.ttf @@ -107,14 +118,5 @@ UIViewControllerBasedStatusBarAppearance - LSApplicationQueriesSchemes - - googlechrome - googlechromes - firefox - brave - - AppGroup - group.ios.chat.rocket diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 60da51fe8c..35791ba381 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -2,8 +2,8 @@ - KeychainGroup - $(AppIdentifierPrefix)chat.rocket.reactnative + AppGroup + group.ios.chat.rocket CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -22,6 +22,8 @@ 4.13.0 CFBundleVersion 1 + KeychainGroup + $(AppIdentifierPrefix)chat.rocket.reactnative NSAppTransportSecurity NSAllowsArbitraryLoads @@ -62,7 +64,5 @@ custom.ttf - AppGroup - group.ios.chat.rocket diff --git a/ios/Shared/RocketChat/Database.swift b/ios/Shared/RocketChat/Database.swift index 4dcf295d5b..7e7928506c 100644 --- a/ios/Shared/RocketChat/Database.swift +++ b/ios/Shared/RocketChat/Database.swift @@ -25,7 +25,8 @@ final class Database { init(server: String) { if let url = URL(string: server) { if let domain = url.domain, let directory = directory { - self.database = WatermelonDB.Database(path: "\(directory)/\(domain)-experimental.db") + let isOfficial = Bundle.main.object(forInfoDictionaryKey: "IS_OFFICIAL") as? Bool ?? false + self.database = WatermelonDB.Database(path: "\(directory)/\(domain)\(isOfficial ? "" : "-experimental").db") } } } diff --git a/ios/Watermelon.swift b/ios/Watermelon.swift deleted file mode 100644 index 5008e23690..0000000000 --- a/ios/Watermelon.swift +++ /dev/null @@ -1,9 +0,0 @@ -// -// Watermelon.swift -// RocketChatRN -// -// Created by Diego Mello on 14/08/19. -// Copyright © 2019 Facebook. All rights reserved. -// - -import Foundation diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 456a8a2c0f..6b6dd11ccd 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -25,13 +25,8 @@ platform :ios do ) end - desc "Runs all the tests" - lane :test do - scan - end - desc "Submit a new Beta Build to Apple TestFlight" - lane :beta do + lane :beta do |options| api_key = app_store_connect_api_key( key_id: "F296L2294Y", issuer_id: "69a6de8e-75cf-47e3-e053-5b8c7c11a4d1", @@ -39,12 +34,14 @@ platform :ios do in_house: false ) pilot( - ipa: 'ios/RocketChatRN.ipa', + ipa: 'ios/Rocket.Chat.ipa', + app_identifier: options[:official] ? 'chat.rocket.ios' : 'chat.rocket.reactnative', skip_waiting_for_build_processing: true ) + upload_symbols_to_crashlytics(dsym_path: "./ios/Rocket.Chat.app.dSYM.zip") end - desc "Build App for release" + desc "Build Experimental app" lane :release do api_key = app_store_connect_api_key( key_id: "F296L2294Y", @@ -56,7 +53,11 @@ platform :ios do get_provisioning_profile(app_identifier: "chat.rocket.reactnative.ShareExtension") get_provisioning_profile(app_identifier: "chat.rocket.reactnative.NotificationService") # pem(api_key: api_key) # still uses Spaceship http://docs.fastlane.tools/actions/pem/#how-does-it-work - gym(scheme: "RocketChatRN", workspace: "RocketChatRN.xcworkspace") + gym( + scheme: "RocketChatRN", + workspace: "RocketChatRN.xcworkspace", + output_name: "Rocket.Chat" + ) end desc "Build fork app" @@ -64,6 +65,41 @@ platform :ios do gym(scheme: "RocketChatRN", workspace: "RocketChatRN.xcworkspace", skip_codesigning: true, skip_archive: true) end + desc "Build Official app" + lane :build_official do + sh "../../scripts/prepare_ios_official.sh" + + match( + type: "appstore", + app_identifier: ["chat.rocket.ios", "chat.rocket.ios.NotificationService", "chat.rocket.ios.Rocket-Chat-ShareExtension"], + readonly: true, + output_path: './' + ) + + update_project_provisioning( + xcodeproj: 'RocketChatRN.xcodeproj', + profile: "AppStore_chat.rocket.ios.NotificationService.mobileprovision", + target_filter: "NotificationService", + build_configuration: 'Release', + code_signing_identity: 'iPhone Distribution' + ) + + update_project_provisioning( + xcodeproj: 'RocketChatRN.xcodeproj', + profile: "AppStore_chat.rocket.ios.Rocket-Chat-ShareExtension.mobileprovision", + target_filter: "ShareRocketChatRN", + build_configuration: 'Release', + code_signing_identity: 'iPhone Distribution' + ) + + gym( + scheme: "RocketChat", + workspace: "RocketChatRN.xcworkspace", + xcargs: "-allowProvisioningUpdates", + output_name: "Rocket.Chat" + ) + end + after_all do |lane| delete_keychain(name: ENV["MATCH_KEYCHAIN_NAME"]) end diff --git a/ios/fastlane/README.md b/ios/fastlane/README.md index 82c024be66..275f6ac1ec 100644 --- a/ios/fastlane/README.md +++ b/ios/fastlane/README.md @@ -16,11 +16,6 @@ or alternatively using `brew install fastlane` # Available Actions ## iOS -### ios test -``` -fastlane ios test -``` -Runs all the tests ### ios beta ``` fastlane ios beta @@ -30,12 +25,17 @@ Submit a new Beta Build to Apple TestFlight ``` fastlane ios release ``` -Build App for release -### ios build +Build Experimental app +### ios build_fork +``` +fastlane ios build_fork +``` +Build fork app +### ios build_official ``` -fastlane ios build +fastlane ios build_official ``` -Build App for development +Build Official app ---- diff --git a/package.json b/package.json index c8cafd9b61..6fc1fed654 100644 --- a/package.json +++ b/package.json @@ -190,7 +190,7 @@ "specs": "e2e/tests", "configurations": { "ios.sim.debug": { - "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/RocketChatRN.app", + "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/Rocket.Chat Experimental.app", "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { @@ -198,7 +198,7 @@ } }, "ios.sim.release": { - "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/RocketChatRN.app", + "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/Rocket.Chat Experimental.app", "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build", "type": "ios.simulator", "device": { diff --git a/scripts/prepare_ios_official.sh b/scripts/prepare_ios_official.sh new file mode 100755 index 0000000000..8750c1803f --- /dev/null +++ b/scripts/prepare_ios_official.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +sed -i '' \ + 's/PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareExtension;/PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.ios.Rocket-Chat-ShareExtension;/' \ + ../RocketChatRN.xcodeproj/project.pbxproj + +sed -i '' \ + 's/PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;/PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.ios.NotificationService;/' \ + ../RocketChatRN.xcodeproj/project.pbxproj \ No newline at end of file