diff --git a/.circleci/config.yml b/.circleci/config.yml index f1bce12e8af9..6e4101d54ba2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -19,38 +19,33 @@ commands: - run: name: Setup gradle.properties command: cp gradle.properties-example gradle.properties - yarn-install: + npm-install: steps: - restore_cache: - name: Restore Yarn Cache + name: Restore NPM Cache keys: - - yarn-i18n-v4-cache-v{{ .Environment.CACHE_TRIGGER_VERSION }}-job-{{ .Environment.CIRCLE_JOB }}-{{ checksum "libs/gutenberg-mobile/yarn.lock" }} + - npm-i18n-v1-cache-v{{ .Environment.CACHE_TRIGGER_VERSION }}-job-{{ .Environment.CIRCLE_JOB }}-{{ checksum "libs/gutenberg-mobile/package-lock.json" }} - run: - name: Yarn Install + name: NPM Install working_directory: libs/gutenberg-mobile - command: yarn install --frozen-lockfile --prefer-offline --network-concurrency 1 + command: npm ci --prefer-offline - save_cache: - name: Save Yarn Cache - key: yarn-i18n-v4-cache-v{{ .Environment.CACHE_TRIGGER_VERSION }}-job-{{ .Environment.CIRCLE_JOB }}-{{ checksum "libs/gutenberg-mobile/yarn.lock" }} + name: Save NPM Cache + key: npm-i18n-v1-cache-v{{ .Environment.CACHE_TRIGGER_VERSION }}-job-{{ .Environment.CIRCLE_JOB }}-{{ checksum "libs/gutenberg-mobile/package-lock.json" }} paths: - - libs/gutenberg-mobile/node_modules + - ~/.npm - libs/gutenberg-mobile/i18n-cache/data checkout-submodules: steps: - run: name: Checkout submodules - command: git submodule update --init --recursive - checkout-gutenberg-mobile-submodule-only: + command: git submodule update --init --recursive --depth 1 + npm-bundle-android: steps: - run: - name: Checkout gutenberg-mobile submodule (no recursive) - command: git submodule update --init - yarn-bundle-android: - steps: - - run: - name: Yarn bundle Android + name: Npm bundle Android working_directory: libs/gutenberg-mobile - command: yarn bundle:android + command: npm run bundle:android save-gutenberg-bundle-cache: steps: - run: @@ -62,7 +57,7 @@ commands: name: Cache JS Bundle key: android-js-bundle-{{ checksum "gutenberg_submodule_hash" }} paths: - - libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets/index.android.bundle + - libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/build/assets/index.android.bundle restore-gutenberg-bundle-cache: steps: - run: @@ -85,21 +80,21 @@ jobs: - run: name: Abort If JS Bundle Exists command: | - if [ -f "libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets/index.android.bundle" ]; then + if [ -f "libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/build/assets/index.android.bundle" ]; then echo "Gutenberg-Mobile bundle already in cache, no need to create a new one." circleci-agent step halt else echo "Gutenberg-Mobile bundle not found in cache. Proceeding to generate new bundle" fi - checkout-submodules - - yarn-install - - yarn-bundle-android + - npm-install + - npm-bundle-android - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets + command: mkdir -p libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/build/assets - run: name: Move bundle to assets folder - command: mv libs/gutenberg-mobile/bundle/android/App.js libs/gutenberg-mobile/react-native-gutenberg-bridge/android/build/assets/index.android.bundle + command: mv libs/gutenberg-mobile/bundle/android/App.js libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/build/assets/index.android.bundle - save-gutenberg-bundle-cache test: executor: @@ -107,15 +102,15 @@ jobs: api-version: "28" steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - android/restore-gradle-cache - copy-gradle-properties - restore-gutenberg-bundle-cache - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + command: mkdir -p libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - attach_workspace: - at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + at: libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - run: name: Test WordPress environment: @@ -134,15 +129,15 @@ jobs: api-version: "28" steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - android/restore-gradle-cache - copy-gradle-properties - restore-gutenberg-bundle-cache - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + command: mkdir -p libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - attach_workspace: - at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + at: libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - run: name: Checkstyle environment: @@ -177,7 +172,7 @@ jobs: api-version: "28" steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - bundle-install/bundle-install: cache_key_prefix: installable-build - run: @@ -187,9 +182,9 @@ jobs: - restore-gutenberg-bundle-cache - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + command: mkdir -p libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - attach_workspace: - at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + at: libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - run: name: Build APK environment: @@ -226,15 +221,15 @@ jobs: api-version: "28" steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - android/restore-gradle-cache - copy-gradle-properties - restore-gutenberg-bundle-cache - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + command: mkdir -p libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - attach_workspace: - at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + at: libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - run: name: Build environment: @@ -269,15 +264,15 @@ jobs: api-version: "28" steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - android/restore-gradle-cache - copy-gradle-properties - restore-gutenberg-bundle-cache - run: name: Ensure assets folder exists - command: mkdir -p libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + command: mkdir -p libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - attach_workspace: - at: libs/gutenberg-mobile/react-native-gutenberg-bridge/android/src/main/assets + at: libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android/src/main/assets - run: name: Build environment: @@ -301,7 +296,7 @@ jobs: - image: circleci/ruby:2.6.4 steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - run: name: Install bundler command: gem install bundler --version 2.0.2 @@ -318,7 +313,7 @@ jobs: APP_VERSION_PREFIX: << pipeline.parameters.translation_review_lang_id >> steps: - git/shallow-checkout - - checkout-gutenberg-mobile-submodule-only + - checkout-submodules - bundle-install/bundle-install: cache_key_prefix: installable-build - run: diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 584b610a7d82..692b4987ec24 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,7 +1,6 @@ 15.2 ----- * [**] Fixes tons of rendering issues in Reader post detail by changing the technical solution (shared CSS file). - * [**] Block editor: Display content metrics information (blocks, words, characters count). * [**] Block Editor: Adds editor support for theme defined colors and theme defined gradients on cover and button blocks. * [**] Block Editor: Add support allowing Cover Block video uploads to complete after the editor has closed diff --git a/WordPress/build.gradle b/WordPress/build.gradle index 55ecd1939061..160a8563fc2c 100644 --- a/WordPress/build.gradle +++ b/WordPress/build.gradle @@ -150,6 +150,9 @@ android { exclude '**/libjscexecutor.so' exclude '**/libhermes-inspector.so' exclude '**/libhermes-executor-debug.so' + + pickFirst 'META-INF/-no-jdk.kotlin_module' + } bundle { diff --git a/WordPress/lint-baseline.xml b/WordPress/lint-baseline.xml index 42c2fd629297..023d9ff9aabc 100644 --- a/WordPress/lint-baseline.xml +++ b/WordPress/lint-baseline.xml @@ -57,7 +57,7 @@ errorLine1=" view.setPadding(" errorLine2=" ^"> @@ -3927,7 +3927,7 @@ errorLine1=" Layout.BREAK_STRATEGY_SIMPLE : Layout.BREAK_STRATEGY_HIGH_QUALITY;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -3943,7 +3943,7 @@ errorLine1=" Layout.BREAK_STRATEGY_SIMPLE : Layout.BREAK_STRATEGY_HIGH_QUALITY;" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -3959,7 +3959,7 @@ errorLine1=" view.setJustificationMode(Layout.JUSTIFICATION_MODE_INTER_WORD);" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -3975,7 +3975,7 @@ errorLine1=" view.setJustificationMode(Layout.JUSTIFICATION_MODE_NONE);" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -3991,7 +3991,7 @@ errorLine1=" classpath 'com.android.tools.build:gradle:3.4.2'" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -4007,7 +4007,7 @@ errorLine1=" implementation 'androidx.appcompat:appcompat:1.0.0'" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -4023,7 +4023,7 @@ errorLine1=" implementation 'androidx.appcompat:appcompat:1.0.0'" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -4039,7 +4039,7 @@ errorLine1=" implementation 'androidx.recyclerview:recyclerview:1.0.0'" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> @@ -4055,7 +4055,7 @@ errorLine1=" @ReactProp(name = PROP_TEXT)" errorLine2=" ~~~~~~~~~"> @@ -4071,7 +4071,7 @@ errorLine1=" private HashMap<Integer, Media> mMediaToAddAfterMounting = new HashMap<>();" errorLine2=" ~~~~~~~~~~~~~~~"> @@ -4087,7 +4087,7 @@ url="http://developer.android.com/design/style/iconography.html" urls="http://developer.android.com/design/style/iconography.html"> + file="../libs/gutenberg-mobile/gutenberg/packages/react-native-aztec/android/src/main/res/drawable-hdpi/ic_launcher.png"/> + file="../libs/gutenberg-mobile/gutenberg/packages/react-native-aztec/android/src/main/res/drawable-mdpi/ic_launcher.png"/> + file="../libs/gutenberg-mobile/gutenberg/packages/react-native-aztec/android/src/main/res/drawable-xhdpi/ic_launcher.png"/> + file="../libs/gutenberg-mobile/gutenberg/packages/react-native-aztec/android/src/main/res/drawable-xxhdpi/ic_launcher.png"/> @@ -4159,7 +4159,7 @@ errorLine1=" (int) update.getPaddingLeft()," errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~"> @@ -4175,7 +4175,7 @@ errorLine1=" (int) update.getPaddingRight()," errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index 9f95ed410c4c..4c785a556a48 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -2874,6 +2874,7 @@ Current value is %s CUSTOMIZE + Customize Gradient Dismiss Don’t cry because it’s over, smile because it happened. @@ -2896,6 +2897,8 @@ Double tap to select a video Double tap to select an image Double tap to select layout + + Double tap to select the option Double tap to toggle setting Double tap to undo last change @@ -2916,6 +2919,8 @@ translators: sample content for "Portfolio" page template translators: sample content for "Services" page template translators: sample content for "Team" page template --> Get in Touch + Go back + Gradient Type Help icon Here is the panel content! Hide keyboard @@ -2965,10 +2970,14 @@ translators: sample content for "Services" page template --> My post status info My pre publish panel Navigate Up + Navigates to custom color picker + Navigates to customize the gradient + Navigates to the previous content sheet No application can handle this request. Please install a Web browser. Number of columns Only show excerpt Open Block Actions Menu + Open link in a browser Open Settings Page break block. %s diff --git a/build.gradle b/build.gradle index bdda38b5009c..6bca6f2a9292 100644 --- a/build.gradle +++ b/build.gradle @@ -55,7 +55,7 @@ allprojects { maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url "$rootDir/libs/gutenberg-mobile/node_modules/react-native/android" + url "$rootDir/libs/gutenberg-mobile/gutenberg/node_modules/react-native/android" } } else { maven { url "https://dl.bintray.com/wordpress-mobile/react-native-mirror/" } diff --git a/libs/editor/WordPressEditor/build.gradle b/libs/editor/WordPressEditor/build.gradle index 82b331424e77..552088701691 100644 --- a/libs/editor/WordPressEditor/build.gradle +++ b/libs/editor/WordPressEditor/build.gradle @@ -75,7 +75,7 @@ dependencies { api ("com.github.wordpress-mobile.WordPress-Aztec-Android:wordpress-shortcodes:$aztecVersion") api ("com.github.wordpress-mobile.WordPress-Aztec-Android:wordpress-comments:$aztecVersion") - implementation (project(':react-native-gutenberg-bridge')) { + implementation (project(':@wordpress_react-native-bridge')) { exclude group: 'com.squareup.okhttp3' exclude group: "com.android.volley" exclude group: 'com.google.code.findbugs' diff --git a/libs/gutenberg-mobile b/libs/gutenberg-mobile index a6e1740addf5..e9a657960994 160000 --- a/libs/gutenberg-mobile +++ b/libs/gutenberg-mobile @@ -1 +1 @@ -Subproject commit a6e1740addf5db29c9c49f9314a21ad0bb2beebb +Subproject commit e9a657960994994abcdb1923a3717da59f3b03f2 diff --git a/settings.gradle b/settings.gradle index 72261d027571..c87add6a1d37 100644 --- a/settings.gradle +++ b/settings.gradle @@ -11,25 +11,25 @@ include ':libs:WordPressAnnotations' include ':WordPressMocks' project(':WordPressMocks').projectDir = new File(rootProject.projectDir, properties.getOrDefault('wp.wordpress_mocks_path', 'libs/mocks') + '/WordPressMocks') -include ':react-native-aztec' -project(':react-native-aztec').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/react-native-aztec/android') +include ':@wordpress_react-native-aztec' +project(':@wordpress_react-native-aztec').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/packages/react-native-aztec/android') -include ':react-native-gutenberg-bridge' -project(':react-native-gutenberg-bridge').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/react-native-gutenberg-bridge/android') +include ':@wordpress_react-native-bridge' +project(':@wordpress_react-native-bridge').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android') if (properties.getOrDefault('wp.BUILD_GUTENBERG_FROM_SOURCE', false).toBoolean()) { include ':react-native-linear-gradient' - project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/node_modules/react-native-linear-gradient/android') + project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/node_modules/react-native-linear-gradient/android') include ':react-native-svg' - project(':react-native-svg').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/node_modules/react-native-svg/android') + project(':react-native-svg').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/node_modules/react-native-svg/android') include ':react-native-aztec' - project(':react-native-aztec').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/react-native-aztec/android') - include ':react-native-recyclerview-list' - project(':react-native-recyclerview-list').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/node_modules/react-native-recyclerview-list/android') + project(':react-native-aztec').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/packages/react-native-aztec/android') include ':react-native-gutenberg-bridge' - project(':react-native-gutenberg-bridge').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/react-native-gutenberg-bridge/android') + project(':react-native-gutenberg-bridge').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/packages/react-native-bridge/android') include ':react-native-video' - project(':react-native-video').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/node_modules/react-native-video/android-exoplayer') + project(':react-native-video').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/node_modules/react-native-video/android-exoplayer') include ':@react-native-community_slider' - project(':@react-native-community_slider').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/node_modules/@react-native-community/slider/src/android') + project(':@react-native-community_slider').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/node_modules/@react-native-community/slider/src/android') + include ':react-native-get-random-values' + project(':react-native-get-random-values').projectDir = new File(rootProject.projectDir, 'libs/gutenberg-mobile/gutenberg/node_modules/react-native-get-random-values/android') }