From 1a5b21d56a6c7621b8f6db90d5516f321c314c24 Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Tue, 2 Feb 2021 22:50:38 +0100 Subject: [PATCH] Preparing for CI test --- .github/workflows/development.yml | 31 --- .github/workflows/production.yml | 2 +- .github/workflows/staging.yml | 33 ++-- Gemfile | 4 +- Gemfile.lock | 6 + VERSIONING.md | 30 +++ android/app/src/main/AndroidManifest.xml | 23 ++- .../res/drawable-night/splashscreen_image.png | Bin 0 -> 70155 bytes .../app/src/main/res/values-night/colors.xml | 5 + android/app/src/main/res/values/colors.xml | 9 +- android/app/src/main/res/values/styles.xml | 3 +- app.config.ts | 22 +-- assets/icon.png | Bin 33077 -> 0 bytes fastlane/Fastfile | 161 +++++++++------ fastlane/Gymfile | 3 + fastlane/Matchfile | 1 - fastlane/Pluginfile | 6 + fastlane/README.md | 16 +- ios/tooot.xcodeproj/project.pbxproj | 15 +- ios/tooot/AppDelegate.m | 2 +- .../SplashScreen.imageset/Contents.json | 31 +++ .../dark_splashscreen.png | Bin 0 -> 70155 bytes .../Contents.json | 31 +++ .../dark_background.png | Bin 0 -> 82 bytes ios/tooot/Info.plist | 174 ++++++++-------- .../Background.colorset/Contents.json | 38 ++++ .../RootViewColor.xcassets/Contents.json | 6 + ios/tooot/Supporting/Expo.plist | 2 +- package.json | 14 +- splashes/dark.png | Bin 0 -> 70155 bytes assets/splash.png => splashes/default.png | Bin src/Screens.tsx | 8 +- src/components/GracefullyImage.tsx | 186 +++++++++++------- .../Timelines/Timeline/Shared/Actions.tsx | 3 + .../Timelines/Timeline/Shared/Attachment.tsx | 2 +- .../Timeline/Shared/Attachment/Audio.tsx | 2 +- .../Timelines/Timeline/Shared/Card.tsx | 9 +- src/screens/Actions.tsx | 14 ++ src/screens/Compose.tsx | 2 +- src/screens/Compose/EditAttachment/Image.tsx | 5 +- src/screens/Compose/Root.tsx | 8 - .../Compose/Root/Footer/Attachments.tsx | 12 +- src/screens/Compose/Root/Footer/Emojis.tsx | 14 +- src/screens/Tabs.tsx | 5 +- src/screens/Tabs/Me/Settings.tsx | 4 +- src/screens/Tabs/Me/Settings/Analytics.tsx | 3 +- src/screens/Tabs/Me/Settings/Tooot.tsx | 4 +- src/screens/Tabs/Me/Switch/Root.tsx | 32 +-- src/screens/Tabs/Shared/Account/Header.tsx | 45 +---- .../Tabs/Shared/Account/Information.tsx | 10 +- .../Shared/Account/Information/Avatar.tsx | 26 ++- src/startup/sentry.ts | 7 +- src/utils/slices/contextsSlice.ts | 4 +- src/utils/slices/instancesSlice.ts | 16 +- 54 files changed, 641 insertions(+), 448 deletions(-) delete mode 100644 .github/workflows/development.yml create mode 100644 VERSIONING.md create mode 100644 android/app/src/main/res/drawable-night/splashscreen_image.png create mode 100644 android/app/src/main/res/values-night/colors.xml delete mode 100644 assets/icon.png create mode 100644 fastlane/Gymfile create mode 100644 fastlane/Pluginfile create mode 100644 ios/tooot/Images.xcassets/SplashScreen.imageset/dark_splashscreen.png create mode 100644 ios/tooot/Images.xcassets/SplashScreenBackground.imageset/dark_background.png create mode 100644 ios/tooot/RootViewColor.xcassets/Background.colorset/Contents.json create mode 100644 ios/tooot/RootViewColor.xcassets/Contents.json create mode 100644 splashes/dark.png rename assets/splash.png => splashes/default.png (100%) diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml deleted file mode 100644 index b20868ea..00000000 --- a/.github/workflows/development.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Publish development -on: - push: - branches: - - '*-development' -jobs: - publish: - runs-on: ubuntu-latest - steps: - - name: -- Step 1 -- Checkout code - uses: actions/checkout@v2 - - name: -- Step 2 -- Setup node - uses: actions/setup-node@v2 - with: - node-version: 14.x - - name: -- Step 3 -- Use Expo action - uses: expo/expo-github-action@v5 - with: - expo-version: 4.x - expo-username: ${{ secrets.EXPO_USERNAME }} - expo-token: ${{ secrets.EXPO_TOKEN }} - - name: -- Step 4 -- Install dependencies - run: yarn install - - name: -- Step 5 -- Publish - env: - SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }} - SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} - SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - SENTRY_DEPLOY_ENV: development - run: expo publish --release-channel=${GITHUB_REF#refs/heads/} diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index 1d253940..b72d6010 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -2,7 +2,7 @@ name: Publish production on: push: branches: - - '*-production' + - production jobs: publish: runs-on: ubuntu-latest diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index 247d475d..f83f4cbf 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -1,11 +1,11 @@ -name: Publish staging +name: Build staging on: push: branches: - - '*-staging' + - staging jobs: - publish: - runs-on: ubuntu-latest + build-ios: + runs-on: macos-latest steps: - name: -- Step 1 -- Checkout code uses: actions/checkout@v2 @@ -13,19 +13,26 @@ jobs: uses: actions/setup-node@v2 with: node-version: 14.x - - name: -- Step 3 -- Use Expo action - uses: expo/expo-github-action@v5 - with: - expo-version: 4.x - expo-username: ${{ secrets.EXPO_USERNAME }} - expo-token: ${{ secrets.EXPO_TOKEN }} + - name: -- Step 3 -- Setup ruby + uses: actions/setup-ruby@v1 - name: -- Step 4 -- Install dependencies run: yarn install - - name: -- Step 5 -- Publish + - name: -- Step 5 -- Install native dependencies + run: npx pod-install + - name: -- Step 6 -- Run fastlane env: + TOOOT_ENVIRONMENT: staging SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - SENTRY_DEPLOY_ENV: staging - run: expo publish --release-channel=${GITHUB_REF#refs/heads/} + LC_ALL: en_US.UTF-8 + LANG: en_US.UTF-8 + FASTLANE_USER: ${{ secrets.FASTLANE_USER }} + MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }} + MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }} + MATCH_GIT_PRIVATE_KEY: ${{ MATCH_GIT_PRIVATE_KEY }} + APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ APP_STORE_CONNECT_API_KEY_KEY_ID }} + APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ APP_STORE_CONNECT_API_KEY_ISSUER_ID }} + APP_STORE_CONNECT_API_KEY_KEY: ${{ APP_STORE_CONNECT_API_KEY_KEY }} + run: yarn ios:build diff --git a/Gemfile b/Gemfile index adc90d98..2ccf2ecb 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ source "https://rubygems.org" -gem "fastlane" \ No newline at end of file +gem "fastlane" +plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') +eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock index d611c9d3..63efde57 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -85,6 +85,9 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) + fastlane-plugin-json (1.0.0) + fastlane-plugin-versioning (0.4.4) + fastlane-plugin-yarn (1.2) gh_inspector (1.1.3) google-api-client (0.38.0) addressable (~> 2.5, >= 2.5.1) @@ -196,6 +199,9 @@ PLATFORMS DEPENDENCIES fastlane + fastlane-plugin-json + fastlane-plugin-versioning + fastlane-plugin-yarn BUNDLED WITH 1.17.2 diff --git a/VERSIONING.md b/VERSIONING.md new file mode 100644 index 00000000..389dcb44 --- /dev/null +++ b/VERSIONING.md @@ -0,0 +1,30 @@ +## Major releases - App Store + +"Major releases" are artifacts published as `x.?.?`: + * An artifact must be released as `x.?.?` if native modules have been changed or updated, including upgrading Expo SDK version. + * A new app store version has to be submitted. + * Outdated versions in principle do not receive further OTA updates. + +## Minor releases - App Store and OTA + +"Minor releases" are artifacts published as `?.y.?`: + * An artifact can be released as `?.y.?` when there is no change nor update made to the native modules. + * A new app store version can be submitted for better first launch experience. + * All these versions that are not part of above mentioned outdates versions receive also OTA updates. + +## Patch releases - OTA + +"Patch releases" are artifacts published as `?.?.z`: + * An artifact must be release as `?.?.z` when there is no major change to the functionalities. + * No new app store version will be submitted. + * All these versions that are not part of above mentioned outdates versions receive also OTA updates. + +## OTA release channels + + * `MAJOR-environment`. Environments include `production`, `staging` and `development`. + +## Major versions mapping to native module versions + +| Major version | Native module version | +| :-----------: | :-------------------: | +| `0` | `210201` | \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index eca08281..b8e1e673 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -21,13 +21,28 @@ - + - + @@ -42,6 +57,6 @@ - + - \ No newline at end of file + diff --git a/android/app/src/main/res/drawable-night/splashscreen_image.png b/android/app/src/main/res/drawable-night/splashscreen_image.png new file mode 100644 index 0000000000000000000000000000000000000000..83ca55a4a3b5ace827d4f8b005b7837229c7cf8f GIT binary patch literal 70155 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

!prcwo7sFb)6Lw`&cS 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 nU}k`wkROEbkt1IO#5gF literal 0 HcmV?d00001 diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json index c69ca4ab..847f2599 100644 --- a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json +++ b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/Contents.json @@ -5,11 +5,42 @@ "filename": "background.png", "scale": "1x" }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "idiom": "universal", + "filename": "dark_background.png", + "scale": "1x" + }, { "idiom": "universal", "scale": "2x" }, { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], "idiom": "universal", "scale": "3x" } diff --git a/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/dark_background.png b/ios/tooot/Images.xcassets/SplashScreenBackground.imageset/dark_background.png new file mode 100644 index 0000000000000000000000000000000000000000..8b65011f49dd67806c900fad4b66f299f6291523 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blCQlc~kP5~(QgxSrJZ=y#dBT(_ bfA|>~pE7zs<-fQDD9qsL>gTe~DWM4fdE661 literal 0 HcmV?d00001 diff --git a/ios/tooot/Info.plist b/ios/tooot/Info.plist index 73d0c046..6f194baf 100644 --- a/ios/tooot/Info.plist +++ b/ios/tooot/Info.plist @@ -1,95 +1,85 @@ - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 0 - LSRequiresIPhoneOS - - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - NSExceptionDomains - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - - - - NSLocationWhenInUseUsageDescription - - UILaunchStoryboardName - SplashScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - - UIViewControllerBasedStatusBarAppearance - - CFBundleAllowMixedLocalizations - - ITSAppUsesNonExemptEncryption - - UIUserInterfaceStyle - Automatic - CFBundleURLTypes - - - CFBundleURLSchemes - - tooot - com.xmflsct.app.tooot - - - - UIRequiresFullScreen - - CFBundleDisplayName - tooot - NSMicrophoneUsageDescription - Allow $(PRODUCT_NAME) to access your microphone - NSPhotoLibraryUsageDescription - Give $(PRODUCT_NAME) permission to save photos - NSPhotoLibraryAddUsageDescription - Give $(PRODUCT_NAME) permission to save photos - NSCameraUsageDescription - Give $(PRODUCT_NAME) permission to access your camera - NSMicrophoneUsageDescription - Give $(PRODUCT_NAME) permission to use your microphone - CFBundleURLTypes - - - CFBundleURLName - gizmos - CFBundleURLSchemes - - tooot - - - - - \ No newline at end of file + + CFBundleAllowMixedLocalizations + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + tooot + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.8 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLName + gizmos + CFBundleURLSchemes + + tooot + + + + CFBundleVersion + 2102022230 + ITSAppUsesNonExemptEncryption + + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + NSCameraUsageDescription + Give $(PRODUCT_NAME) permission to access your camera + NSLocationWhenInUseUsageDescription + + NSMicrophoneUsageDescription + Give $(PRODUCT_NAME) permission to use your microphone + NSPhotoLibraryAddUsageDescription + Give $(PRODUCT_NAME) permission to save photos + NSPhotoLibraryUsageDescription + Give $(PRODUCT_NAME) permission to save photos + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + armv7 + + UIRequiresFullScreen + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIUserInterfaceStyle + Automatic + UIViewControllerBasedStatusBarAppearance + + + diff --git a/ios/tooot/RootViewColor.xcassets/Background.colorset/Contents.json b/ios/tooot/RootViewColor.xcassets/Background.colorset/Contents.json new file mode 100644 index 00000000..ff4bf220 --- /dev/null +++ b/ios/tooot/RootViewColor.xcassets/Background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "250", + "green" : "250", + "red" : "250" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "25", + "green" : "25", + "red" : "25" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/tooot/RootViewColor.xcassets/Contents.json b/ios/tooot/RootViewColor.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/ios/tooot/RootViewColor.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/tooot/Supporting/Expo.plist b/ios/tooot/Supporting/Expo.plist index 6ceadb31..78942c5a 100644 --- a/ios/tooot/Supporting/Expo.plist +++ b/ios/tooot/Supporting/Expo.plist @@ -9,7 +9,7 @@ EXUpdatesLaunchWaitMs 0 EXUpdatesReleaseChannel - 210201-development + 0-staging EXUpdatesSDKVersion 40.0.0 EXUpdatesURL diff --git a/package.json b/package.json index db36db3c..99be2fe2 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "start": "react-native start", "android": "react-native run-android", "ios": "react-native run-ios", - "ios:development": "bundle exec fastlane ios development", + "ios:build": "bundle exec fastlane ios build", "test": "jest --watchAll", "release": "scripts/release.sh" }, @@ -104,6 +104,12 @@ "typescript": "~4.1.3" }, "private": true, - "name": "app", - "version": "1.0.0" -} + "name": "tooot", + "versions": { + "native": "210201", + "major": 0, + "minor": 8, + "patch": 0, + "expo": "40.0.0" + } +} \ No newline at end of file diff --git a/splashes/dark.png b/splashes/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..83ca55a4a3b5ace827d4f8b005b7837229c7cf8f GIT binary patch literal 70155 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

!prcwo7sFb)6Lw`&cS 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 nU}k`wkROEbkt1IO#5gF literal 0 HcmV?d00001 diff --git a/assets/splash.png b/splashes/default.png similarity index 100% rename from assets/splash.png rename to splashes/default.png diff --git a/src/Screens.tsx b/src/Screens.tsx index 095b6ad2..0708cfa9 100644 --- a/src/Screens.tsx +++ b/src/Screens.tsx @@ -114,14 +114,18 @@ const Index: React.FC = ({ localCorrupt }) => { return ( <> - + - + } -const GracefullyImage: React.FC = ({ - sharedElement, - hidden = false, - uri, - blurhash, - dimension, - onPress, - style, - imageStyle -}) => { - const { mode, theme } = useTheme() - const [imageLoaded, setImageLoaded] = useState(false) - - const children = useCallback(() => { - return ( - <> - {sharedElement ? ( - - setImageLoaded(true)} - /> - - ) : ( - setImageLoaded(true)} - /> - )} - {blurhash && (hidden || !imageLoaded) ? ( - - ) : null} - +const GracefullyImage = React.memo( + ({ + sharedElement, + hidden = false, + uri, + blurhash, + dimension, + onPress, + style, + imageStyle + }: Props) => { + const { mode, theme } = useTheme() + const [previewLoaded, setPreviewLoaded] = useState( + uri.preview ? false : true ) - }, [hidden, imageLoaded, mode, uri]) + const [originalLoaded, setOriginalLoaded] = useState(false) + const [originalFailed, setOriginalFailed] = useState(false) + const [remoteLoaded, setRemoteLoaded] = useState(uri.remote ? false : true) - return ( -

!prcwo7sFb)6Lw`&cS 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 nU}k`wkROEbkt1IO#5gF literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml new file mode 100644 index 00000000..55096642 --- /dev/null +++ b/android/app/src/main/res/values-night/colors.xml @@ -0,0 +1,5 @@ + + + + #191919 + diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 88cd0a91..e2efbb44 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -1,6 +1,11 @@ - + + #FFFFFF #FAFAFA #023c69 - \ No newline at end of file + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index ed009e7d..52c9e4cf 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -11,7 +11,8 @@ diff --git a/app.config.ts b/app.config.ts index 8956ddcc..b99e6197 100644 --- a/app.config.ts +++ b/app.config.ts @@ -1,26 +1,20 @@ import { ExpoConfig } from '@expo/config' +import { versions } from './package.json' import 'dotenv/config' +const toootVersion = `${versions.major}.${versions.minor}.${versions.patch}` + export default (): ExpoConfig => ({ name: 'tooot', description: 'tooot for Mastodon', slug: 'tooot', + version: toootVersion, + sdkVersion: versions.expo, privacy: 'hidden', - sdkVersion: '40.0.0', - version: '0.8', - platforms: ['ios', 'android'], - orientation: 'portrait', - userInterfaceStyle: 'automatic', - icon: './assets/icon.png', - splash: { - backgroundColor: '#FAFAFA', - image: './assets/splash.png' - }, - scheme: 'tooot', assetBundlePatterns: ['assets/*'], extra: { - sentryDSN: process.env.SENTRY_DSN, - sentryEnv: process.env.SENTRY_DEPLOY_ENV + toootEnvironment: process.env.TOOOT_ENVIRONMENT, + sentryDSN: process.env.SENTRY_DSN }, hooks: { postPublish: [ @@ -31,7 +25,7 @@ export default (): ExpoConfig => ({ project: process.env.SENTRY_PROJECT, authToken: process.env.SENTRY_AUTH_TOKEN, setCommits: process.env.GITHUB_SHA || undefined, - deployEnv: process.env.SENTRY_DEPLOY_ENV + deployEnv: process.env.TOOOT_ENVIRONMENT } } ] diff --git a/assets/icon.png b/assets/icon.png deleted file mode 100644 index ab0e8cbc06269cd00275eabeacb7be0a54be73b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33077 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 diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 0ecfa0e2..0cea5d18 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,79 +1,110 @@ -$ExpoSDK = '40.0.0' -$NativeVersion = '210201' # Update when there is native module change +fastlane_version "2.172.0" -fastlane_version '2.172.0' +ensure_env_vars( + env_vars: ["TOOOT_ENVIRONMENT"] +) + +VERSIONS = read_json( json_path: "./package.json" )[:versions] +ENVIRONMENT = ENV["TOOOT_ENVIRONMENT"] +VERSION = "#{VERSIONS[:major]}.#{VERSIONS[:minor]}" +RELEASE_CHANNEL = "#{VERSIONS[:major]}-#{ENVIRONMENT}" +BUILD_NUMBER = Time.now.strftime("%y%m%d") platform :ios do - desc 'Build and deploy' - private_lane :build do |options| - branch = 'NATIVEVERSION-TYPE'.gsub('NATIVEVERSION', $NativeVersion).gsub('TYPE', options[:type]) - set_info_plist_value( - path: './ios/tooot/Supporting/Expo.plist', - key: 'EXUpdatesSDKVersion', - value: $ExpoSDK - ) - set_info_plist_value( - path: './ios/tooot/Supporting/Expo.plist', - key: 'EXUpdatesReleaseChannel', - value: branch - ) + XCODEPROJ = "./ios/tooot.xcodeproj" + INFO_PLIST = "./ios/tooot/Info.plist" + EXPO_PLIST = "./ios/tooot/Supporting/Expo.plist" - case options[:type] - when 'staging', 'production' - ensure_git_branch( - branch: options[:type] - ) - ensure_git_status_clean - increment_build_number( - build_number: $NativeVersion - ) - app_store_connect_api_key( - key_filepath: "appstore.p8" - ) - end - - match( - type: options[:type], - readonly: true - ) - - case options[:type] - when 'development' - build_ios_app( - scheme: 'tooot', - silent: true, - include_bitcode: true, - workspace: './ios/tooot.xcworkspace', - export_method: 'development' - ) - install_on_device( - skip_wifi: true - ) - when 'staging' - build_ios_app( - scheme: 'tooot', - workspace: './ios/tooot.xcworkspace' - ) - upload_to_testflight( - skip_submission: true, - notify_external_testers: false - ) + desc "Prepare app store" + private_lane :prepare_appstore do + case ENVIRONMENT + when "staging", "production" + increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER ) + app_store_connect_api_key end end - desc 'Build development to phone' - lane :development do - build(type: 'development') + desc "Expo release" + private_lane :expo_release do + yarn( package_path: "./package.json", flags: "release", command: RELEASE_CHANNEL ) end - desc 'Build staging to TestFlight' - lane :staging do - build(type: 'staging') + desc "Get certificates" + private_lane :get_certificates do |options| + if ENV['CI'] == true + match( type: options[:type], readonly: true, keychain_name: KEYCHAIN_NAME, keychain_password: KEYCHAIN_PASS ) + else + match( type: options[:type], readonly: true ) + end end - desc 'Build product to App Store' - lane :production do - build(type: 'production') + desc "Build and deploy" + lane :build do + BUILD_DIRECTORY = "./ios/build" + SHOULD_BUILD_NATIVE = false + + case ENVIRONMENT + when "staging", "production" + PREVIOUS_VERSION = get_info_plist_value( path: INFO_PLIST, key: "CFBundleShortVersionString" ) + if VERSION.to_f > PREVIOUS_VERSION.to_f + SHOULD_BUILD_NATIVE = true + set_info_plist_value( path: INFO_PLIST, key: "CFBundleShortVersionString", value: VERSION ) + set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesSDKVersion", value: VERSIONS[:expo] ) + set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesReleaseChannel", value: RELEASE_CHANNEL ) + end + when "development" + SHOULD_BUILD_NATIVE = true + end + + if SHOULD_BUILD_NATIVE == true + prepare_appstore + + KEYCHAIN_NAME = "tooot" + KEYCHAIN_PASS = SecureRandom.base64 + if ENV['CI'] == true + create_keychain( + name: KEYCHAIN_NAME, + password: KEYCHAIN_PASS, + default_keychain: true, + unlock: true, + timeout: 3600, + lock_when_sleeps: true + ) + end + + case ENVIRONMENT + when "development" + get_certificates( type: "development" ) + build_ios_app( + export_method: "development", + output_directory: BUILD_DIRECTORY, + output_name: VERSION + "-" + BUILD_NUMBER + ) + install_on_device( skip_wifi: true ) + when "staging" + get_certificates( type: "appstore" ) + build_ios_app( + export_method: "app-store", + output_directory: BUILD_DIRECTORY, + output_name: VERSION + "-" + BUILD_NUMBER + ) + upload_to_testflight( + demo_account_required: true, + distribute_external: true, + groups: "内测用户", + changelog: "Ready for testing" + ) + when "production" + get_certificates( type: "appstore" ) + build_ios_app( + export_method: "app-store", + output_directory: BUILD_DIRECTORY, + output_name: VERSION + "-" + BUILD_NUMBER + ) + end + end + + expo_release end end diff --git a/fastlane/Gymfile b/fastlane/Gymfile new file mode 100644 index 00000000..a8f82852 --- /dev/null +++ b/fastlane/Gymfile @@ -0,0 +1,3 @@ +scheme "tooot" +workspace "./ios/tooot.xcworkspace" +clean true \ No newline at end of file diff --git a/fastlane/Matchfile b/fastlane/Matchfile index 664483e0..7f6446f2 100644 --- a/fastlane/Matchfile +++ b/fastlane/Matchfile @@ -1,3 +1,2 @@ git_user_email("me@xmflsct.com") -git_private_key("./github.key") storage_mode("git") diff --git a/fastlane/Pluginfile b/fastlane/Pluginfile new file mode 100644 index 00000000..26c71a41 --- /dev/null +++ b/fastlane/Pluginfile @@ -0,0 +1,6 @@ +# Autogenerated by fastlane +# +# Ensure this file is checked in to source control! + +gem 'fastlane-plugin-yarn' +gem 'fastlane-plugin-json' diff --git a/fastlane/README.md b/fastlane/README.md index 7476eb8e..bdf09fa7 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -16,21 +16,11 @@ or alternatively using `brew install fastlane` # Available Actions ## iOS -### ios development +### ios build ``` -fastlane ios development +fastlane ios build ``` -Build development to phone -### ios staging -``` -fastlane ios staging -``` -Build staging to TestFlight -### ios production -``` -fastlane ios production -``` -Build product to App Store +Build and deploy ---- diff --git a/ios/tooot.xcodeproj/project.pbxproj b/ios/tooot.xcodeproj/project.pbxproj index 89650a2d..b856caaa 100644 --- a/ios/tooot.xcodeproj/project.pbxproj +++ b/ios/tooot.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */; }; 6CB3B7B773184F6EB8040C3E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C2DAF0391E246238BE2A4B4 /* InfoPlist.strings */; }; 8BA74ECC129842FEA0CC08AF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = F78D778B9BBC48D584012340 /* InfoPlist.strings */; }; 96905EF65AED1B983A6B3ABC /* libPods-tooot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */; }; @@ -30,6 +31,7 @@ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = tooot/main.m; sourceTree = ""; }; 4C2DAF0391E246238BE2A4B4 /* InfoPlist.strings */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = /Users/zhzhe/Documents/GitHub/tooot/app/ios/tooot/Supporting/en.lproj/InfoPlist.strings; sourceTree = ""; }; 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-tooot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-tooot.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = RootViewColor.xcassets; path = tooot/RootViewColor.xcassets; sourceTree = ""; }; 6C2E3173556A471DD304B334 /* Pods-tooot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.debug.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.debug.xcconfig"; sourceTree = ""; }; 7A4D352CD337FB3A3BF06240 /* Pods-tooot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tooot.release.xcconfig"; path = "Target Support Files/Pods-tooot/Pods-tooot.release.xcconfig"; sourceTree = ""; }; AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = tooot/SplashScreen.storyboard; sourceTree = ""; }; @@ -72,6 +74,7 @@ 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 13B07FB71A68108700A75B9A /* main.m */, AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, + 5E36538225C9B8BD009F93EE /* RootViewColor.xcassets */, B96B72E5384D44A7B240B27E /* GoogleService-Info.plist */, ); name = tooot; @@ -179,6 +182,7 @@ 13B07F861A680F5B00A75B9A = { DevelopmentTeam = 8EGBLQ2MA6; LastSwiftMigration = 1120; + ProvisioningStyle = Automatic; }; }; }; @@ -205,6 +209,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 5E36538325C9B8BD009F93EE /* RootViewColor.xcassets in Resources */, BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, @@ -325,7 +330,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = tooot/tooot.entitlements; - CURRENT_PROJECT_VERSION = 1; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2102022230; DEVELOPMENT_TEAM = 8EGBLQ2MA6; ENABLE_BITCODE = NO; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; @@ -343,6 +350,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot; PRODUCT_NAME = tooot; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; @@ -357,7 +365,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = tooot/tooot.entitlements; - CURRENT_PROJECT_VERSION = 1; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 2102022230; DEVELOPMENT_TEAM = 8EGBLQ2MA6; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; INFOPLIST_FILE = tooot/Info.plist; @@ -370,6 +380,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = com.xmflsct.app.tooot; PRODUCT_NAME = tooot; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; diff --git a/ios/tooot/AppDelegate.m b/ios/tooot/AppDelegate.m index 6b7d0734..6b5d1c23 100644 --- a/ios/tooot/AppDelegate.m +++ b/ios/tooot/AppDelegate.m @@ -85,7 +85,7 @@ static void InitializeFlipper(UIApplication *application) { { RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:self.launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge moduleName:@"main" initialProperties:nil]; - rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + rootView.backgroundColor = [UIColor colorNamed:@"Background"]; UIViewController *rootViewController = [UIViewController new]; rootViewController.view = rootView; diff --git a/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json b/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json index 40eb421f..63ffe583 100644 --- a/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json +++ b/ios/tooot/Images.xcassets/SplashScreen.imageset/Contents.json @@ -5,11 +5,42 @@ "filename": "splashscreen.png", "scale": "1x" }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "idiom": "universal", + "filename": "dark_splashscreen.png", + "scale": "1x" + }, { "idiom": "universal", "scale": "2x" }, { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + }, + { + "appearances": [ + { + "appearance": "luminosity", + "value": "dark" + } + ], "idiom": "universal", "scale": "3x" } diff --git a/ios/tooot/Images.xcassets/SplashScreen.imageset/dark_splashscreen.png b/ios/tooot/Images.xcassets/SplashScreen.imageset/dark_splashscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..83ca55a4a3b5ace827d4f8b005b7837229c7cf8f GIT binary patch literal 70155 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