Update branching

This commit is contained in:
Zhiyuan Zheng 2021-03-14 21:48:28 +01:00
parent b21f1b5a0e
commit a23f98842f
No known key found for this signature in database
GPG Key ID: 078A93AB607D85E0
13 changed files with 54 additions and 128 deletions

View File

@ -1,4 +1,4 @@
export TOOOT_ENVIRONMENT="" export ENVIRONMENT="development"
export SENTRY_ORGANIZATION="" export SENTRY_ORGANIZATION=""
export SENTRY_PROJECT="" export SENTRY_PROJECT=""

View File

@ -1,8 +1,5 @@
name: Build development on: push
on:
push:
branches:
- development
jobs: jobs:
build: build:
runs-on: macos-latest runs-on: macos-latest
@ -27,13 +24,13 @@ jobs:
run: bundle install run: bundle install
- name: -- Step 6 -- Run fastlane - name: -- Step 6 -- Run fastlane
env: env:
TOOOT_ENVIRONMENT: development ENVIRONMENT: ${{ secrets.ENVIRONMENT }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }} SENTRY_ORGANIZATION: ${{ secrets.SENTRY_ORGANIZATION }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
FASTLANE_USER: ${{ secrets.FASTLANE_USER }} FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }} MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}

View File

@ -1,33 +0,0 @@
name: Publish production
on:
push:
branches:
- main
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: -- Step 1 -- Checkout code
uses: actions/checkout@v2
with:
submodules: true
- 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: production
run: expo publish --release-channel=${GITHUB_REF#refs/heads/}

View File

@ -1,53 +0,0 @@
name: Build staging
on:
push:
branches:
- staging
jobs:
build:
runs-on: macos-latest
steps:
- name: -- Step 1 -- Checkout code
uses: actions/checkout@v2
with:
submodules: true
- 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 node dependencies
run: yarn install
- name: -- Step 5 -- Install native dependencies
run: npx pod-install
- name: -- Step 6 -- Install ruby dependencies
run: bundle install
- name: -- Step 7 -- 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 }}
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
ANDROID_KEYSTORE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_KEY_PASSWORD }}
SUPPLY_JSON_KEY_DATA: ${{ secrets.SUPPLY_JSON_KEY_DATA }}
GH_PAT_GET_RELEASE: ${{ secrets.GH_PAT_GET_RELEASE }}
FL_GITHUB_RELEASE_API_BEARER: ${{ secrets.GITHUB_TOKEN }}
run: yarn app:build

View File

@ -7,16 +7,16 @@ GEM
artifactory (3.0.15) artifactory (3.0.15)
atomos (0.1.3) atomos (0.1.3)
aws-eventstream (1.1.1) aws-eventstream (1.1.1)
aws-partitions (1.431.1) aws-partitions (1.432.0)
aws-sdk-core (3.112.1) aws-sdk-core (3.113.0)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0) aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
jmespath (~> 1.0) jmespath (~> 1.0)
aws-sdk-kms (1.42.0) aws-sdk-kms (1.43.0)
aws-sdk-core (~> 3, >= 3.112.0) aws-sdk-core (~> 3, >= 3.112.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.89.0) aws-sdk-s3 (1.91.0)
aws-sdk-core (~> 3, >= 3.112.0) aws-sdk-core (~> 3, >= 3.112.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
@ -48,7 +48,7 @@ GEM
faraday_middleware (1.0.0) faraday_middleware (1.0.0)
faraday (~> 1.0) faraday (~> 1.0)
fastimage (2.2.3) fastimage (2.2.3)
fastlane (2.176.0) fastlane (2.178.0)
CFPropertyList (>= 2.3, < 4.0.0) CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0) addressable (>= 2.3, < 3.0.0)
artifactory (~> 3.0) artifactory (~> 3.0)
@ -98,7 +98,7 @@ GEM
representable (~> 3.0) representable (~> 3.0)
retriable (>= 2.0, < 4.0) retriable (>= 2.0, < 4.0)
signet (~> 0.12) signet (~> 0.12)
google-apis-core (0.2.1) google-apis-core (0.3.0)
addressable (~> 2.5, >= 2.5.1) addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.14) googleauth (~> 0.14)
httpclient (>= 2.8.1, < 3.0) httpclient (>= 2.8.1, < 3.0)
@ -108,17 +108,17 @@ GEM
rexml rexml
signet (~> 0.14) signet (~> 0.14)
webrick webrick
google-apis-iamcredentials_v1 (0.1.0) google-apis-iamcredentials_v1 (0.2.0)
google-apis-core (~> 0.1) google-apis-core (~> 0.1)
google-apis-storage_v1 (0.2.0) google-apis-storage_v1 (0.3.0)
google-apis-core (~> 0.1) google-apis-core (~> 0.1)
google-cloud-core (1.5.0) google-cloud-core (1.6.0)
google-cloud-env (~> 1.0) google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0) google-cloud-errors (~> 1.0)
google-cloud-env (1.4.0) google-cloud-env (1.5.0)
faraday (>= 0.17.3, < 2.0) faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.0.1) google-cloud-errors (1.1.0)
google-cloud-storage (1.30.0) google-cloud-storage (1.31.0)
addressable (~> 2.5) addressable (~> 2.5)
digest-crc (~> 0.4) digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1) google-apis-iamcredentials_v1 (~> 0.1)

View File

@ -0,0 +1,3 @@
# [tooot](https://tooot.app/) app for Mastodon
[![GPL-3.0](https://img.shields.io/github/license/tooot-app/push?style=flat-square)](LICENSE) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/tooot-app/app/build?style=flat-square) ![GitHub issues](https://img.shields.io/github/issues/tooot-app/app?style=flat-square) ![GitHub package.json version](https://img.shields.io/github/package-json/v/tooot-app/app?style=flat-square) ![Code Climate maintainability](https://img.shields.io/codeclimate/maintainability/tooot-app/app?style=flat-square)

View File

@ -13,7 +13,6 @@ export default (): ExpoConfig => ({
privacy: 'hidden', privacy: 'hidden',
assetBundlePatterns: ['assets/*'], assetBundlePatterns: ['assets/*'],
extra: { extra: {
toootEnvironment: process.env.TOOOT_ENVIRONMENT,
sentryDSN: process.env.SENTRY_DSN sentryDSN: process.env.SENTRY_DSN
}, },
hooks: { hooks: {
@ -25,7 +24,7 @@ export default (): ExpoConfig => ({
project: process.env.SENTRY_PROJECT, project: process.env.SENTRY_PROJECT,
authToken: process.env.SENTRY_AUTH_TOKEN, authToken: process.env.SENTRY_AUTH_TOKEN,
setCommits: process.env.GITHUB_SHA || undefined, setCommits: process.env.GITHUB_SHA || undefined,
deployEnv: process.env.TOOOT_ENVIRONMENT deployEnv: process.env.ENVIRONMENT
} }
} }
] ]

View File

@ -1,12 +1,12 @@
fastlane_version "2.173.0" fastlane_version "2.178.0"
skip_docs skip_docs
ensure_env_vars( ensure_env_vars(
env_vars: ["TOOOT_ENVIRONMENT", "SENTRY_ORGANIZATION", "SENTRY_PROJECT", "SENTRY_AUTH_TOKEN"] env_vars: ["ENVIRONMENT", "SENTRY_ORGANIZATION", "SENTRY_PROJECT", "SENTRY_AUTH_TOKEN"]
) )
VERSIONS = read_json( json_path: "./package.json" )[:versions] VERSIONS = read_json( json_path: "./package.json" )[:versions]
ENVIRONMENT = ENV["TOOOT_ENVIRONMENT"] ENVIRONMENT = ENV["ENVIRONMENT"]
VERSION = "#{VERSIONS[:major]}.#{VERSIONS[:minor]}" VERSION = "#{VERSIONS[:major]}.#{VERSIONS[:minor]}"
RELEASE_CHANNEL = "#{VERSIONS[:major]}-#{VERSIONS[:minor]}-#{ENVIRONMENT}" RELEASE_CHANNEL = "#{VERSIONS[:major]}-#{VERSIONS[:minor]}-#{ENVIRONMENT}"
BUILD_NUMBER = ENV["GITHUB_RUN_NUMBER"] BUILD_NUMBER = ENV["GITHUB_RUN_NUMBER"]
@ -14,9 +14,9 @@ GITHUB_REPO = "tooot-app/app"
case ENVIRONMENT case ENVIRONMENT
when "development" when "development"
GITHUB_RELEASE= "" GITHUB_RELEASE= ""
when "staging" when "candidate"
GITHUB_RELEASE = "v#{VERSION}-#{VERSIONS[:patch]}" GITHUB_RELEASE = "v#{VERSION}-#{VERSIONS[:patch]}"
when "production" when "release"
GITHUB_RELEASE = "v#{VERSION}" GITHUB_RELEASE = "v#{VERSION}"
end end
@ -34,7 +34,7 @@ private_lane :prepare_appstore_ios do
"NSAllowsArbitraryLoads" => false "NSAllowsArbitraryLoads" => false
} }
) )
increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER ) increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER, skip_info_plist: true )
app_store_connect_api_key app_store_connect_api_key
end end
@ -44,6 +44,11 @@ private_lane :update_expo_ios do
set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesReleaseChannel", value: RELEASE_CHANNEL ) set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesReleaseChannel", value: RELEASE_CHANNEL )
end end
desc 'IOS: Install pods'
private_lane :install_pods_ios do
cocoapods(podfile: "./ios/", deployment: true)
end
desc "ANDROID: Prepare play store" desc "ANDROID: Prepare play store"
private_lane :prepare_playstore_android do private_lane :prepare_playstore_android do
android_set_version_name( version_name: VERSION, gradle_file: "./android/app/build.gradle" ) android_set_version_name( version_name: VERSION, gradle_file: "./android/app/build.gradle" )
@ -81,17 +86,19 @@ private_lane :build_ios do
build_ios_app( export_method: "development", output_directory: BUILD_DIRECTORY ) build_ios_app( export_method: "development", output_directory: BUILD_DIRECTORY )
install_on_device( skip_wifi: true ) install_on_device( skip_wifi: true )
end end
when "staging" when "candidate"
install_pods_ios
prepare_appstore_ios prepare_appstore_ios
match( type: "appstore", readonly: true ) match( type: "appstore", readonly: true )
build_ios_app( export_method: "app-store", include_symbols: true, include_bitcode: true ) build_ios_app( export_method: "app-store", include_symbols: true, include_bitcode: true )
upload_to_testflight( upload_to_testflight(
demo_account_required: true, demo_account_required: true,
distribute_external: true, distribute_external: true,
groups: "测用户", groups: "测用户",
changelog: "Ready for testing" changelog: "Ready for testing"
) )
when "production" when "release"
install_pods_ios
prepare_appstore_ios prepare_appstore_ios
match( type: "appstore", readonly: true, include_bitcode: true ) match( type: "appstore", readonly: true, include_bitcode: true )
build_ios_app( export_method: "app-store" ) build_ios_app( export_method: "app-store" )
@ -114,7 +121,7 @@ private_lane :build_android do
command: "install #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}" command: "install #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}"
) )
end end
when "staging" when "candidate"
prepare_playstore_android prepare_playstore_android
build_android_app( build_android_app(
task: 'clean bundle', task: 'clean bundle',
@ -138,7 +145,7 @@ private_lane :build_android do
skip_upload_images: true, skip_upload_images: true,
skip_upload_screenshots: true skip_upload_screenshots: true
) )
when "production" when "release"
end end
end end
@ -151,9 +158,9 @@ lane :build do
build_ios build_ios
build_android build_android
case ENVIRONMENT case ENVIRONMENT
when "staging" when "candidate"
github_release(prerelease: true) github_release(prerelease: true)
when "production" when "release"
github_release(prerelease: false) github_release(prerelease: false)
end end
end end

View File

@ -83,7 +83,7 @@ const renderNode = ({
<Text <Text
key={index} key={index}
style={{ style={{
color: accountIndex !== -1 ? theme.blue : undefined, color: accountIndex !== -1 ? theme.blue : theme.primary,
fontSize: adaptedFontsize, fontSize: adaptedFontsize,
lineHeight: adaptedLineheight lineHeight: adaptedLineheight
}} }}

View File

@ -125,7 +125,7 @@ const TimelineDefault: React.FC<Props> = ({
{!disableDetails && actualStatus.card && ( {!disableDetails && actualStatus.card && (
<TimelineCard card={actualStatus.card} /> <TimelineCard card={actualStatus.card} />
)} )}
<TimelineFullConversation status={actualStatus} /> <TimelineFullConversation queryKey={queryKey} status={actualStatus} />
</View> </View>
{queryKey && !disableDetails && ( {queryKey && !disableDetails && (

View File

@ -121,7 +121,10 @@ const TimelineNotifications: React.FC<Props> = ({
{notification.status.card && ( {notification.status.card && (
<TimelineCard card={notification.status.card} /> <TimelineCard card={notification.status.card} />
)} )}
<TimelineFullConversation status={notification.status} /> <TimelineFullConversation
queryKey={queryKey}
status={notification.status}
/>
</View> </View>
) : null} ) : null}
</View> </View>

View File

@ -1,3 +1,4 @@
import { QueryKeyTimeline } from '@utils/queryHooks/timeline'
import { StyleConstants } from '@utils/styles/constants' import { StyleConstants } from '@utils/styles/constants'
import { useTheme } from '@utils/styles/ThemeManager' import { useTheme } from '@utils/styles/ThemeManager'
import React from 'react' import React from 'react'
@ -5,15 +6,18 @@ import { useTranslation } from 'react-i18next'
import { Text } from 'react-native' import { Text } from 'react-native'
export interface Props { export interface Props {
queryKey?: QueryKeyTimeline
status: Mastodon.Status status: Mastodon.Status
} }
const TimelineFullConversation = React.memo( const TimelineFullConversation = React.memo(
({ status }: Props) => { ({ queryKey, status }: Props) => {
const { t } = useTranslation('componentTimeline') const { t } = useTranslation('componentTimeline')
const { theme } = useTheme() const { theme } = useTheme()
return status.in_reply_to_account_id && return queryKey &&
queryKey[1].page !== 'Toot' &&
status.in_reply_to_account_id &&
(status.mentions.length === 0 || (status.mentions.length === 0 ||
status.mentions.filter( status.mentions.filter(
mention => mention.id !== status.in_reply_to_account_id mention => mention.id !== status.in_reply_to_account_id

View File

@ -7,7 +7,6 @@ const sentry = () => {
log('log', 'Sentry', 'initializing') log('log', 'Sentry', 'initializing')
Sentry.init({ Sentry.init({
dsn: Constants.manifest.extra.sentryDSN, dsn: Constants.manifest.extra.sentryDSN,
environment: Constants.manifest.extra.toootEnvironment,
enableInExpoDevelopment: false, enableInExpoDevelopment: false,
debug: debug:
__DEV__ || __DEV__ ||