diff --git a/Gutenberg/version.rb b/Gutenberg/version.rb index 567633e7b64b..371376554142 100644 --- a/Gutenberg/version.rb +++ b/Gutenberg/version.rb @@ -12,7 +12,7 @@ # LOCAL_GUTENBERG=../my-gutenberg-fork bundle exec pod install GUTENBERG_CONFIG = { # commit: '' - tag: 'v1.99.0' + tag: 'v1.100.0-alpha1' } GITHUB_ORG = 'wordpress-mobile' diff --git a/Podfile.lock b/Podfile.lock index 03c54408dff3..9b63449660fc 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -545,18 +545,18 @@ DEPENDENCIES: - AppCenter (~> 4.1) - AppCenter/Distribute (~> 4.1) - Automattic-Tracks-iOS (~> 2.2) - - boost (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/boost.podspec.json`) - - BVLinearGradient (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/BVLinearGradient.podspec.json`) + - boost (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/boost.podspec.json`) + - BVLinearGradient (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/BVLinearGradient.podspec.json`) - CocoaLumberjack/Swift (~> 3.0) - CropViewController (= 2.5.3) - Down (~> 0.6.6) - - FBLazyVector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/FBLazyVector.podspec.json`) - - FBReactNativeSpec (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json`) + - FBLazyVector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/FBLazyVector.podspec.json`) + - FBReactNativeSpec (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json`) - FSInteractiveMap (from `https://github.com/wordpress-mobile/FSInteractiveMap.git`, tag `0.2.0`) - Gifu (= 3.2.0) - - glog (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/glog.podspec.json`) + - glog (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/glog.podspec.json`) - Gridicons (~> 1.1.0) - - Gutenberg (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, tag `v1.99.0`) + - Gutenberg (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, tag `v1.100.0-alpha1`) - JTAppleCalendar (~> 8.0.2) - Kanvas (~> 1.4.4) - MediaEditor (>= 1.2.2, ~> 1.2) @@ -565,48 +565,48 @@ DEPENDENCIES: - "NSURL+IDN (~> 0.4)" - OCMock (~> 3.4.3) - OHHTTPStubs/Swift (~> 9.1.0) - - RCT-Folly (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RCT-Folly.podspec.json`) - - RCTRequired (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RCTRequired.podspec.json`) - - RCTTypeSafety (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RCTTypeSafety.podspec.json`) + - RCT-Folly (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RCT-Folly.podspec.json`) + - RCTRequired (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RCTRequired.podspec.json`) + - RCTTypeSafety (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RCTTypeSafety.podspec.json`) - Reachability (= 3.2) - - React (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React.podspec.json`) - - React-bridging (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-bridging.podspec.json`) - - React-callinvoker (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-callinvoker.podspec.json`) - - React-Codegen (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-Codegen.podspec.json`) - - React-Core (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-Core.podspec.json`) - - React-CoreModules (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-CoreModules.podspec.json`) - - React-cxxreact (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-cxxreact.podspec.json`) - - React-jsi (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-jsi.podspec.json`) - - React-jsiexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-jsiexecutor.podspec.json`) - - React-jsinspector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-jsinspector.podspec.json`) - - React-logger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-logger.podspec.json`) - - react-native-blur (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-blur.podspec.json`) - - react-native-get-random-values (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-get-random-values.podspec.json`) - - react-native-safe-area (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-safe-area.podspec.json`) - - react-native-safe-area-context (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-safe-area-context.podspec.json`) - - react-native-slider (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-slider.podspec.json`) - - react-native-video (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-video.podspec.json`) - - react-native-webview (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-webview.podspec.json`) - - React-perflogger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-perflogger.podspec.json`) - - React-RCTActionSheet (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTActionSheet.podspec.json`) - - React-RCTAnimation (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTAnimation.podspec.json`) - - React-RCTBlob (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTBlob.podspec.json`) - - React-RCTImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTImage.podspec.json`) - - React-RCTLinking (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTLinking.podspec.json`) - - React-RCTNetwork (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTNetwork.podspec.json`) - - React-RCTSettings (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTSettings.podspec.json`) - - React-RCTText (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTText.podspec.json`) - - React-RCTVibration (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTVibration.podspec.json`) - - React-runtimeexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-runtimeexecutor.podspec.json`) - - ReactCommon (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/ReactCommon.podspec.json`) - - RNCClipboard (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNCClipboard.podspec.json`) - - RNCMaskedView (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNCMaskedView.podspec.json`) - - RNFastImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNFastImage.podspec.json`) - - RNGestureHandler (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNGestureHandler.podspec.json`) - - RNReanimated (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNReanimated.podspec.json`) - - RNScreens (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNScreens.podspec.json`) - - RNSVG (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNSVG.podspec.json`) - - RNTAztecView (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, tag `v1.99.0`) + - React (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React.podspec.json`) + - React-bridging (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-bridging.podspec.json`) + - React-callinvoker (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-callinvoker.podspec.json`) + - React-Codegen (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-Codegen.podspec.json`) + - React-Core (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-Core.podspec.json`) + - React-CoreModules (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-CoreModules.podspec.json`) + - React-cxxreact (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-cxxreact.podspec.json`) + - React-jsi (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-jsi.podspec.json`) + - React-jsiexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-jsiexecutor.podspec.json`) + - React-jsinspector (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-jsinspector.podspec.json`) + - React-logger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-logger.podspec.json`) + - react-native-blur (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-blur.podspec.json`) + - react-native-get-random-values (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-get-random-values.podspec.json`) + - react-native-safe-area (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-safe-area.podspec.json`) + - react-native-safe-area-context (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-safe-area-context.podspec.json`) + - react-native-slider (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-slider.podspec.json`) + - react-native-video (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-video.podspec.json`) + - react-native-webview (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-webview.podspec.json`) + - React-perflogger (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-perflogger.podspec.json`) + - React-RCTActionSheet (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTActionSheet.podspec.json`) + - React-RCTAnimation (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTAnimation.podspec.json`) + - React-RCTBlob (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTBlob.podspec.json`) + - React-RCTImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTImage.podspec.json`) + - React-RCTLinking (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTLinking.podspec.json`) + - React-RCTNetwork (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTNetwork.podspec.json`) + - React-RCTSettings (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTSettings.podspec.json`) + - React-RCTText (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTText.podspec.json`) + - React-RCTVibration (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTVibration.podspec.json`) + - React-runtimeexecutor (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-runtimeexecutor.podspec.json`) + - ReactCommon (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/ReactCommon.podspec.json`) + - RNCClipboard (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNCClipboard.podspec.json`) + - RNCMaskedView (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNCMaskedView.podspec.json`) + - RNFastImage (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNFastImage.podspec.json`) + - RNGestureHandler (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNGestureHandler.podspec.json`) + - RNReanimated (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNReanimated.podspec.json`) + - RNScreens (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNScreens.podspec.json`) + - RNSVG (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNSVG.podspec.json`) + - RNTAztecView (from `https://github.com/wordpress-mobile/gutenberg-mobile.git`, tag `v1.100.0-alpha1`) - Starscream (= 3.0.6) - SVProgressHUD (= 2.2.5) - SwiftLint (~> 0.50) @@ -616,7 +616,7 @@ DEPENDENCIES: - WordPressShared (~> 2.2) - WordPressUI (~> 1.12.5) - WPMediaPicker (~> 1.8.8) - - Yoga (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/Yoga.podspec.json`) + - Yoga (from `https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/Yoga.podspec.json`) - ZendeskSupportSDK (= 5.3.0) - ZIPFoundation (~> 0.9.8) @@ -677,108 +677,108 @@ SPEC REPOS: EXTERNAL SOURCES: boost: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/boost.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/boost.podspec.json BVLinearGradient: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/BVLinearGradient.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/BVLinearGradient.podspec.json FBLazyVector: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/FBLazyVector.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/FBLazyVector.podspec.json FBReactNativeSpec: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/FBReactNativeSpec/FBReactNativeSpec.podspec.json FSInteractiveMap: :git: https://github.com/wordpress-mobile/FSInteractiveMap.git :tag: 0.2.0 glog: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/glog.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/glog.podspec.json Gutenberg: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true - :tag: v1.99.0 + :tag: v1.100.0-alpha1 RCT-Folly: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RCT-Folly.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RCT-Folly.podspec.json RCTRequired: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RCTRequired.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RCTRequired.podspec.json RCTTypeSafety: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RCTTypeSafety.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RCTTypeSafety.podspec.json React: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React.podspec.json React-bridging: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-bridging.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-bridging.podspec.json React-callinvoker: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-callinvoker.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-callinvoker.podspec.json React-Codegen: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-Codegen.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-Codegen.podspec.json React-Core: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-Core.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-Core.podspec.json React-CoreModules: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-CoreModules.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-CoreModules.podspec.json React-cxxreact: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-cxxreact.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-cxxreact.podspec.json React-jsi: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-jsi.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-jsi.podspec.json React-jsiexecutor: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-jsiexecutor.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-jsiexecutor.podspec.json React-jsinspector: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-jsinspector.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-jsinspector.podspec.json React-logger: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-logger.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-logger.podspec.json react-native-blur: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-blur.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-blur.podspec.json react-native-get-random-values: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-get-random-values.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-get-random-values.podspec.json react-native-safe-area: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-safe-area.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-safe-area.podspec.json react-native-safe-area-context: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-safe-area-context.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-safe-area-context.podspec.json react-native-slider: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-slider.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-slider.podspec.json react-native-video: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-video.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-video.podspec.json react-native-webview: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/react-native-webview.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/react-native-webview.podspec.json React-perflogger: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-perflogger.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-perflogger.podspec.json React-RCTActionSheet: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTActionSheet.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTActionSheet.podspec.json React-RCTAnimation: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTAnimation.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTAnimation.podspec.json React-RCTBlob: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTBlob.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTBlob.podspec.json React-RCTImage: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTImage.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTImage.podspec.json React-RCTLinking: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTLinking.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTLinking.podspec.json React-RCTNetwork: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTNetwork.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTNetwork.podspec.json React-RCTSettings: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTSettings.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTSettings.podspec.json React-RCTText: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTText.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTText.podspec.json React-RCTVibration: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-RCTVibration.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-RCTVibration.podspec.json React-runtimeexecutor: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/React-runtimeexecutor.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/React-runtimeexecutor.podspec.json ReactCommon: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/ReactCommon.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/ReactCommon.podspec.json RNCClipboard: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNCClipboard.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNCClipboard.podspec.json RNCMaskedView: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNCMaskedView.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNCMaskedView.podspec.json RNFastImage: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNFastImage.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNFastImage.podspec.json RNGestureHandler: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNGestureHandler.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNGestureHandler.podspec.json RNReanimated: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNReanimated.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNReanimated.podspec.json RNScreens: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNScreens.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNScreens.podspec.json RNSVG: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/RNSVG.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/RNSVG.podspec.json RNTAztecView: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true - :tag: v1.99.0 + :tag: v1.100.0-alpha1 Yoga: - :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.99.0/third-party-podspecs/Yoga.podspec.json + :podspec: https://raw.githubusercontent.com/wordpress-mobile/gutenberg-mobile/v1.100.0-alpha1/third-party-podspecs/Yoga.podspec.json CHECKOUT OPTIONS: FSInteractiveMap: @@ -787,11 +787,11 @@ CHECKOUT OPTIONS: Gutenberg: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true - :tag: v1.99.0 + :tag: v1.100.0-alpha1 RNTAztecView: :git: https://github.com/wordpress-mobile/gutenberg-mobile.git :submodules: true - :tag: v1.99.0 + :tag: v1.100.0-alpha1 SPEC CHECKSUMS: Alamofire: 3ec537f71edc9804815215393ae2b1a8ea33a844 diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index bf2d6f7fc5d0..2ea8deb39667 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,6 +1,6 @@ 22.9 ----- - +* [**] Block editor: Move undo/redo buttons to the navigation bar [#20930] 22.8 ----- diff --git a/WordPress/Classes/Extensions/Colors and Styles/UIColor+MurielColors.swift b/WordPress/Classes/Extensions/Colors and Styles/UIColor+MurielColors.swift index a6e962a4ebfd..1d5817c6324c 100644 --- a/WordPress/Classes/Extensions/Colors and Styles/UIColor+MurielColors.swift +++ b/WordPress/Classes/Extensions/Colors and Styles/UIColor+MurielColors.swift @@ -296,6 +296,12 @@ extension UIColor { static var prologueBackground: UIColor { return UIColor(light: muriel(color: MurielColor(name: .blue, shade: .shade0)), dark: .systemBackground) } + + // MARK: - Editor + + static var editorActionText: UIColor { + return UIColor(light: .black, dark: .white) + } } @objc diff --git a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift index bc1b01796e91..535db4eb771a 100644 --- a/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift +++ b/WordPress/Classes/ViewRelated/Aztec/ViewControllers/AztecPostViewController.swift @@ -782,7 +782,7 @@ class AztecPostViewController: UIViewController, PostEditor { navigationController?.navigationBar.isTranslucent = false navigationController?.navigationBar.accessibilityIdentifier = "Azctec Editor Navigation Bar" navigationItem.leftBarButtonItems = navigationBarManager.leftBarButtonItems - navigationItem.rightBarButtonItems = navigationBarManager.rightBarButtonItems + navigationItem.rightBarButtonItems = navigationBarManager.rightBarButtonItemsAztec navigationItem.titleView = navigationBarManager.blogTitleViewLabel } @@ -862,7 +862,6 @@ class AztecPostViewController: UIViewController, PostEditor { } func refreshInterface() { - reloadBlogTitleView() reloadEditorContents() reloadPublishButton() refreshTitleViewForMediaUploadIfNeeded() @@ -916,15 +915,6 @@ class AztecPostViewController: UIViewController, PostEditor { setHTML(content) } - func reloadBlogTitleView() { - var blogTitle = post.blog.url ?? String() - if let blogName = post.blog.settings?.name, blogName.isEmpty == false { - blogTitle = blogName - } - - navigationBarManager.reloadBlogTitleView(text: blogTitle) - } - func reloadPublishButton() { navigationBarManager.reloadPublishButton() } @@ -3549,6 +3539,12 @@ extension AztecPostViewController: PostEditorNavigationBarManagerDelegate { closeWasPressed() } + func navigationBarManager(_ manager: PostEditorNavigationBarManager, undoWasPressed sender: UIButton) { + } + + func navigationBarManager(_ manager: PostEditorNavigationBarManager, redoWasPressed sender: UIButton) { + } + func navigationBarManager(_ manager: PostEditorNavigationBarManager, moreWasPressed sender: UIButton) { moreWasPressed() } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/Detail Header/SiteIconView.swift b/WordPress/Classes/ViewRelated/Blog/Blog Details/Detail Header/SiteIconView.swift index 29ecc61b6a89..09bb894a7532 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/Detail Header/SiteIconView.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/Detail Header/SiteIconView.swift @@ -106,6 +106,10 @@ class SiteIconView: UIView { @objc func touchedButton() { tapped?() } + + func removeButtonBorder() { + button.layer.borderWidth = 0 + } } extension SiteIconView: UIDropInteractionDelegate { diff --git a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift index 1a1ea5888b3a..7ea35979c2b3 100644 --- a/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift +++ b/WordPress/Classes/ViewRelated/Gutenberg/GutenbergViewController.swift @@ -455,16 +455,31 @@ class GutenbergViewController: UIViewController, PostEditor, FeaturedImageDelega navigationController?.navigationBar.accessibilityIdentifier = "Gutenberg Editor Navigation Bar" navigationItem.leftBarButtonItems = navigationBarManager.leftBarButtonItems navigationItem.rightBarButtonItems = navigationBarManager.rightBarButtonItems - navigationItem.titleView = navigationBarManager.blogTitleViewLabel + + // Add bottom border line + let screenScale = UIScreen.main.scale + let borderWidth: CGFloat = 1.0 / screenScale + let borderColor = UIColor(red: 60/255, green: 60/255, blue: 67/255, alpha: 0.36).cgColor + + let borderBottom = UIView() + borderBottom.backgroundColor = UIColor(cgColor: borderColor) + borderBottom.frame = CGRect(x: 0, y: navigationController?.navigationBar.frame.size.height ?? 0 - borderWidth, width: navigationController?.navigationBar.frame.size.width ?? 0, height: borderWidth) + borderBottom.autoresizingMask = [.flexibleWidth, .flexibleTopMargin] + navigationController?.navigationBar.addSubview(borderBottom) } - private func reloadBlogTitleView() { - var blogTitle = post.blog.url ?? String() - if let blogName = post.blog.settings?.name, blogName.isEmpty == false { - blogTitle = blogName - } + private func reloadBlogIconView() { + let blog = post.blog - navigationBarManager.reloadBlogTitleView(text: blogTitle) + if blog.hasIcon == true { + let size = CGSize(width: 24, height: 24) + navigationBarManager.siteIconView.imageView.downloadSiteIcon(for: blog, imageSize: size) + } else if blog.isWPForTeams() { + navigationBarManager.siteIconView.imageView.tintColor = UIColor.listIcon + navigationBarManager.siteIconView.imageView.image = UIImage.gridicon(.p2) + } else { + navigationBarManager.siteIconView.imageView.image = UIImage.siteIconPlaceholder + } } private func reloadEditorContents() { @@ -479,7 +494,7 @@ class GutenbergViewController: UIViewController, PostEditor, FeaturedImageDelega } private func refreshInterface() { - reloadBlogTitleView() + reloadBlogIconView() reloadEditorContents() reloadPublishButton() } @@ -584,7 +599,6 @@ extension GutenbergViewController { // MARK: - GutenbergBridgeDelegate extension GutenbergViewController: GutenbergBridgeDelegate { - func gutenbergDidGetRequestFetch(path: String, completion: @escaping (Result) -> Void) { post.managedObjectContext!.perform { GutenbergNetworkRequest(path: path, blog: self.post.blog, method: .get).request(completion: completion) @@ -1333,10 +1347,36 @@ extension GutenbergViewController: PostEditorNavigationBarManagerDelegate { return AztecPostViewController.Constants.savingDraftButtonSize } + func gutenbergDidRequestToggleUndoButton(_ isDisabled: Bool) { + DispatchQueue.main.async { + UIView.animate(withDuration: 0.2) { + self.navigationBarManager.undoButton.isUserInteractionEnabled = isDisabled ? false : true + self.navigationBarManager.undoButton.alpha = isDisabled ? 0.3 : 1.0 + } + } + } + + func gutenbergDidRequestToggleRedoButton(_ isDisabled: Bool) { + DispatchQueue.main.async { + UIView.animate(withDuration: 0.2) { + self.navigationBarManager.redoButton.isUserInteractionEnabled = isDisabled ? false : true + self.navigationBarManager.redoButton.alpha = isDisabled ? 0.3 : 1.0 + } + } + } + func navigationBarManager(_ manager: PostEditorNavigationBarManager, closeWasPressed sender: UIButton) { requestHTML(for: .close) } + func navigationBarManager(_ manager: PostEditorNavigationBarManager, undoWasPressed sender: UIButton) { + self.gutenberg.onUndoPressed() + } + + func navigationBarManager(_ manager: PostEditorNavigationBarManager, redoWasPressed sender: UIButton) { + self.gutenberg.onRedoPressed() + } + func navigationBarManager(_ manager: PostEditorNavigationBarManager, moreWasPressed sender: UIButton) { requestHTML(for: .more) } diff --git a/WordPress/Classes/ViewRelated/Post/PostEditor+MoreOptions.swift b/WordPress/Classes/ViewRelated/Post/PostEditor+MoreOptions.swift index f414d444a80d..b797b9bf30c8 100644 --- a/WordPress/Classes/ViewRelated/Post/PostEditor+MoreOptions.swift +++ b/WordPress/Classes/ViewRelated/Post/PostEditor+MoreOptions.swift @@ -33,7 +33,8 @@ extension PostEditor { return } - navigationBarManager.reloadTitleView(navigationBarManager.generatingPreviewTitleView) + SVProgressHUD.setDefaultMaskType(.clear) + SVProgressHUD.show(withStatus: NSLocalizedString("Generating Preview", comment: "Message to indicate progress of generating preview")) postService.autoSave(post, success: { [weak self] savedPost, previewURL in @@ -83,8 +84,7 @@ extension PostEditor { return } - let navigationBarManager = self.navigationBarManager - navigationBarManager.reloadTitleView(navigationBarManager.blogTitleViewLabel) + SVProgressHUD.dismiss() if error != nil { let title = NSLocalizedString("Preview Unavailable", comment: "Title on display preview error" ) diff --git a/WordPress/Classes/ViewRelated/Post/PostEditorNavigationBarManager.swift b/WordPress/Classes/ViewRelated/Post/PostEditorNavigationBarManager.swift index b0ba43ef65fc..4a05bf4f5eb1 100644 --- a/WordPress/Classes/ViewRelated/Post/PostEditorNavigationBarManager.swift +++ b/WordPress/Classes/ViewRelated/Post/PostEditorNavigationBarManager.swift @@ -7,12 +7,31 @@ protocol PostEditorNavigationBarManagerDelegate: AnyObject { var savingDraftButtonSize: CGSize { get } func navigationBarManager(_ manager: PostEditorNavigationBarManager, closeWasPressed sender: UIButton) + func navigationBarManager(_ manager: PostEditorNavigationBarManager, undoWasPressed sender: UIButton) + func navigationBarManager(_ manager: PostEditorNavigationBarManager, redoWasPressed sender: UIButton) func navigationBarManager(_ manager: PostEditorNavigationBarManager, moreWasPressed sender: UIButton) func navigationBarManager(_ manager: PostEditorNavigationBarManager, publishButtonWasPressed sender: UIButton) func navigationBarManager(_ manager: PostEditorNavigationBarManager, displayCancelMediaUploads sender: UIButton) func navigationBarManager(_ manager: PostEditorNavigationBarManager, reloadTitleView view: UIView) } +class ExtendedTouchAreaButton: UIButton { + private var touchAreaPadding: CGFloat = 24.0 + + override var isHighlighted: Bool { + didSet { + UIView.animate(withDuration: 0.2) { + self.alpha = self.isHighlighted ? 0.5 : 1.0 + } + } + } + + override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { + let extendedArea = bounds.insetBy(dx: -touchAreaPadding, dy: -touchAreaPadding) + return extendedArea.contains(point) + } +} + // A class to share the navigation bar UI of the Post Editor. // Currenly shared between Aztec and Gutenberg // @@ -23,26 +42,86 @@ class PostEditorNavigationBarManager { /// Dismiss Button /// + let siteIconView: SiteIconView = { + let siteIconView = SiteIconView(frame: .zero) + siteIconView.translatesAutoresizingMaskIntoConstraints = false + siteIconView.imageView.sizeToFit() + + let widthConstraint = siteIconView.widthAnchor.constraint(equalToConstant: 28) + let heightConstraint = siteIconView.heightAnchor.constraint(equalToConstant: 28) + NSLayoutConstraint.activate([widthConstraint, heightConstraint]) + siteIconView.isUserInteractionEnabled = false + siteIconView.removeButtonBorder() + return siteIconView + }() + lazy var closeButton: UIButton = { + let closeImage = UIImage(named: "editor-chevron-down") let button = UIButton(type: .system) + button.setImage(closeImage, for: .normal) + button.sizeToFit() + button.translatesAutoresizingMaskIntoConstraints = false + button.configuration?.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0) + button.isUserInteractionEnabled = false + return button + }() - var configuration = UIButton.Configuration.plain() - configuration.image = Assets.closeButtonModalImage - configuration.contentInsets = Constants.closeButtonInsets - button.configuration = configuration - - button.addTarget(self, action: #selector(closeWasPressed), for: .touchUpInside) - button.setContentHuggingPriority(.required, for: .horizontal) + lazy var closeButtonContainer: ExtendedTouchAreaButton = { + let button = ExtendedTouchAreaButton(type: .custom) + button.translatesAutoresizingMaskIntoConstraints = false button.accessibilityIdentifier = "editor-close-button" - button.tintColor = .editorPrimary + button.accessibilityLabel = NSLocalizedString("Close", comment: "Action button to close the editor") + + let tapGesture = UITapGestureRecognizer(target: self, action: #selector(closeWasPressed)) + button.addGestureRecognizer(tapGesture) + + button.addSubview(closeButton) + button.addSubview(siteIconView) + + NSLayoutConstraint.activate([ + closeButton.leadingAnchor.constraint(equalTo: button.leadingAnchor, constant: -8), + closeButton.centerYAnchor.constraint(equalTo: button.centerYAnchor), + siteIconView.leadingAnchor.constraint(equalTo: closeButton.trailingAnchor, constant: 0), + siteIconView.trailingAnchor.constraint(equalTo: button.trailingAnchor), + siteIconView.centerYAnchor.constraint(equalTo: button.centerYAnchor) + ]) + button.isUserInteractionEnabled = true + button.frame = CGRect(x: 0, y: 0, width: 70, height: 28) + return button + }() + + lazy var undoButton: UIButton = { + let isRTL = UIView.userInterfaceLayoutDirection(for: .unspecified) == .rightToLeft + let undoImage = UIImage(named: "editor-undo") + let button = UIButton(type: .system) + button.setImage(isRTL ? undoImage?.withHorizontallyFlippedOrientation() : undoImage, for: .normal) + button.accessibilityIdentifier = "editor-undo-button" + button.accessibilityLabel = NSLocalizedString("Undo", comment: "Action button to undo last change") + button.addTarget(self, action: #selector(undoWasPressed), for: .touchUpInside) + button.sizeToFit() + button.alpha = 0.3 + button.isUserInteractionEnabled = false + return button + }() + + lazy var redoButton: UIButton = { + let isRTL = UIView.userInterfaceLayoutDirection(for: .unspecified) == .rightToLeft + let redoImage = UIImage(named: "editor-redo") + let button = UIButton(type: .system) + button.setImage(isRTL ? redoImage?.withHorizontallyFlippedOrientation() : redoImage, for: .normal) + button.accessibilityIdentifier = "editor-redo-button" + button.accessibilityLabel = NSLocalizedString("Redo", comment: "Action button to redo last change") + button.addTarget(self, action: #selector(redoWasPressed), for: .touchUpInside) + button.sizeToFit() + button.alpha = 0.3 + button.isUserInteractionEnabled = false return button }() private lazy var moreButton: UIButton = { - let image = UIImage.gridicon(.ellipsis) + let image = UIImage(named: "editor-more") let button = UIButton(type: .system) button.setImage(image, for: .normal) - button.frame = CGRect(origin: .zero, size: image.size) button.accessibilityLabel = NSLocalizedString("More Options", comment: "Action button to display more available options") button.accessibilityIdentifier = "more_post_options" button.addTarget(self, action: #selector(moreWasPressed), for: .touchUpInside) @@ -66,7 +145,8 @@ class PostEditorNavigationBarManager { button.sizeToFit() button.isEnabled = delegate?.isPublishButtonEnabled ?? false button.setContentHuggingPriority(.required, for: .horizontal) - button.tintColor = .editorPrimary + button.tintColor = .editorActionText + button.titleLabel?.font = UIFont.systemFont(ofSize: 17.0) return button }() @@ -81,19 +161,13 @@ class PostEditorNavigationBarManager { return button }() - /// Preview Generating Button - /// - private lazy var previewGeneratingView: LoadingStatusView = { - let view = LoadingStatusView(title: NSLocalizedString("Generating Preview", comment: "Message to indicate progress of generating preview")) - return view - }() - // MARK: - Bar button items /// Negative Offset BarButtonItem: Used to fine tune navigationBar Items /// internal lazy var separatorButtonItem: UIBarButtonItem = { let separator = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) + separator.width = 16 return separator }() @@ -101,7 +175,7 @@ class PostEditorNavigationBarManager { /// NavigationBar's Close Button /// lazy var closeBarButtonItem: UIBarButtonItem = { - let cancelItem = UIBarButtonItem(customView: self.closeButton) + let cancelItem = UIBarButtonItem(customView: self.closeButtonContainer) cancelItem.accessibilityLabel = NSLocalizedString("Close", comment: "Action button to close edior and cancel changes or insertion of post") cancelItem.accessibilityIdentifier = "Close" return cancelItem @@ -127,6 +201,14 @@ class PostEditorNavigationBarManager { delegate?.navigationBarManager(self, closeWasPressed: sender) } + @objc private func undoWasPressed(sender: UIButton) { + delegate?.navigationBarManager(self, undoWasPressed: sender) + } + + @objc private func redoWasPressed(sender: UIButton) { + delegate?.navigationBarManager(self, redoWasPressed: sender) + } + @objc private func moreWasPressed(sender: UIButton) { delegate?.navigationBarManager(self, moreWasPressed: sender) } @@ -142,18 +224,20 @@ class PostEditorNavigationBarManager { // MARK: - Public var leftBarButtonItems: [UIBarButtonItem] { - return [separatorButtonItem, closeBarButtonItem] + return [closeBarButtonItem] } var uploadingMediaTitleView: UIView { mediaUploadingButton } - var generatingPreviewTitleView: UIView { - previewGeneratingView + var rightBarButtonItems: [UIBarButtonItem] { + let undoButton = UIBarButtonItem(customView: self.undoButton) + let redoButton = UIBarButtonItem(customView: self.redoButton) + return [publishBarButtonItem, separatorButtonItem, moreBarButtonItem, separatorButtonItem, redoButton, separatorButtonItem, undoButton] } - var rightBarButtonItems: [UIBarButtonItem] { + var rightBarButtonItemsAztec: [UIBarButtonItem] { return [moreBarButtonItem, publishBarButtonItem, separatorButtonItem] } @@ -163,10 +247,6 @@ class PostEditorNavigationBarManager { publishButton.isEnabled = delegate?.isPublishButtonEnabled ?? true } - func reloadBlogTitleView(text: String) { - blogTitleViewLabel.text = text - } - func reloadTitleView(_ view: UIView) { delegate?.navigationBarManager(self, reloadTitleView: view) } diff --git a/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/Contents.json new file mode 100644 index 000000000000..206b603f50cc --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "editor-chevron-down.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "editor-chevron-down@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "editor-chevron-down@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down.png b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down.png new file mode 100644 index 000000000000..030eca9c1203 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down@2x.png b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down@2x.png new file mode 100644 index 000000000000..116610e73763 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down@2x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down@3x.png b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down@3x.png new file mode 100644 index 000000000000..e017efe120a0 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-chevron-down.imageset/editor-chevron-down@3x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-more.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/Contents.json new file mode 100644 index 000000000000..b9692eabd44d --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "editor-more.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "editor-more@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "editor-more@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more.png b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more.png new file mode 100644 index 000000000000..50ae464cf9a0 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more@2x.png b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more@2x.png new file mode 100644 index 000000000000..50f8ba4fa299 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more@2x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more@3x.png b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more@3x.png new file mode 100644 index 000000000000..933dee6311d1 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-more.imageset/editor-more@3x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/Contents.json new file mode 100644 index 000000000000..8d0f99c00c06 --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "redo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "redo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "redo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo.png b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo.png new file mode 100644 index 000000000000..d7c40357de33 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo@2x.png b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo@2x.png new file mode 100644 index 000000000000..7fcc8387ad5d Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo@2x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo@3x.png b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo@3x.png new file mode 100644 index 000000000000..4bba41d82987 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-redo.imageset/redo@3x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/Contents.json b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/Contents.json new file mode 100644 index 000000000000..529cdd37b859 --- /dev/null +++ b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "undo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "undo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "undo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo.png b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo.png new file mode 100644 index 000000000000..5fde404937bb Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo@2x.png b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo@2x.png new file mode 100644 index 000000000000..8fb11c970db0 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo@2x.png differ diff --git a/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo@3x.png b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo@3x.png new file mode 100644 index 000000000000..15703e1b6d63 Binary files /dev/null and b/WordPress/Resources/AppImages.xcassets/editor-undo.imageset/undo@3x.png differ diff --git a/WordPress/UITests/Tests/EditorGutenbergTests.swift b/WordPress/UITests/Tests/EditorGutenbergTests.swift index 0dabfb3c009d..c596048eae77 100644 --- a/WordPress/UITests/Tests/EditorGutenbergTests.swift +++ b/WordPress/UITests/Tests/EditorGutenbergTests.swift @@ -55,6 +55,22 @@ class EditorGutenbergTests: XCTestCase { .done() } + func testUndoRedo() throws { + + try BlockEditorScreen() + .verifyUndoIsDisabled() + .verifyRedoIsDisabled() + .enterTextInTitle(text: title) + .addParagraphBlock(withText: content) + .verifyContentStructure(blocks: 1, words: content.components(separatedBy: " ").count, characters: content.count) + .undo() + .undo() + .verifyContentStructure(blocks: 0, words: 0, characters: 0) + .redo() + .redo() + .verifyContentStructure(blocks: 1, words: content.components(separatedBy: " ").count, characters: content.count) + } + func testAddRemoveFeaturedImage() throws { try BlockEditorScreen() diff --git a/WordPress/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift b/WordPress/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift index fbb2d566ca6f..e1d01ca6f1b2 100644 --- a/WordPress/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift +++ b/WordPress/UITestsFoundation/Screens/Editor/BlockEditorScreen.swift @@ -8,6 +8,14 @@ public class BlockEditorScreen: ScreenObject { $0.navigationBars["Gutenberg Editor Navigation Bar"].buttons["Close"] } + let undoButtonGetter: (XCUIApplication) -> XCUIElement = { + $0.navigationBars["Gutenberg Editor Navigation Bar"].buttons["Undo"] + } + + let redoButtonGetter: (XCUIApplication) -> XCUIElement = { + $0.navigationBars["Gutenberg Editor Navigation Bar"].buttons["Redo"] + } + let addBlockButtonGetter: (XCUIApplication) -> XCUIElement = { $0.buttons["add-block-button"] } @@ -25,6 +33,8 @@ public class BlockEditorScreen: ScreenObject { } var editorCloseButton: XCUIElement { editorCloseButtonGetter(app) } + var undoButton: XCUIElement { undoButtonGetter(app) } + var redoButton: XCUIElement { redoButtonGetter(app) } var addBlockButton: XCUIElement { addBlockButtonGetter(app) } var moreButton: XCUIElement { moreButtonGetter(app) } var insertFromUrlButton: XCUIElement { insertFromUrlButtonGetter(app) } @@ -35,7 +45,7 @@ public class BlockEditorScreen: ScreenObject { // is loaded, we rely only on the button to add a new block and on the navigation bar we // expect to encase the screen. try super.init( - expectedElementGetters: [ editorCloseButtonGetter, addBlockButtonGetter ], + expectedElementGetters: [ editorCloseButtonGetter, undoButtonGetter, redoButtonGetter, addBlockButtonGetter ], app: app ) } @@ -235,6 +245,34 @@ public class BlockEditorScreen: ScreenObject { blockButton.tap() } + @discardableResult + public func undo() throws -> BlockEditorScreen { + undoButton.tap() + + return try BlockEditorScreen() + } + + @discardableResult + public func verifyUndoIsDisabled() throws -> BlockEditorScreen { + XCTAssertFalse(undoButton.isEnabled) + + return try BlockEditorScreen() + } + + @discardableResult + public func redo() throws -> BlockEditorScreen { + redoButton.tap() + + return try BlockEditorScreen() + } + + @discardableResult + public func verifyRedoIsDisabled() throws -> BlockEditorScreen { + XCTAssertFalse(redoButton.isEnabled) + + return try BlockEditorScreen() + } + /// Some tests might fail during the block picking flow. In such cases, we need to dismiss the /// block picker itself before being able to interact with the rest of the app again. public func dismissBlocksPickerIfNeeded() { diff --git a/WordPress/WordPress.xcodeproj/project.pbxproj b/WordPress/WordPress.xcodeproj/project.pbxproj index a35469543aa8..f0db765d52c8 100644 --- a/WordPress/WordPress.xcodeproj/project.pbxproj +++ b/WordPress/WordPress.xcodeproj/project.pbxproj @@ -10534,7 +10534,7 @@ path = Classes; sourceTree = ""; }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { + 29B97314FDCFA39411CA2CEA = { isa = PBXGroup; children = ( 3F20FDF3276BF21000DA3CAD /* Packages */, @@ -18890,14 +18890,14 @@ bg, sk, ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + mainGroup = 29B97314FDCFA39411CA2CEA; packageReferences = ( 3FF1442E266F3C2400138163 /* XCRemoteSwiftPackageReference "ScreenObject" */, 3FC2C33B26C4CF0A00C6D98F /* XCRemoteSwiftPackageReference "XCUITestHelpers" */, 17A8858B2757B97F0071FCA3 /* XCRemoteSwiftPackageReference "AutomatticAbout-swift" */, 3F2B62DA284F4E0B0008CD59 /* XCRemoteSwiftPackageReference "Charts" */, 3F3B23C02858A1B300CACE60 /* XCRemoteSwiftPackageReference "test-collector-swift" */, - 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */, + 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */, 3F338B6F289BD3040014ADC5 /* XCRemoteSwiftPackageReference "Nimble" */, ); productRefGroup = 19C28FACFE9D520D11CA2CBB /* Products */; @@ -20653,11 +20653,11 @@ files = ( ); inputPaths = ( - $SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist, + "$SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist", ); name = "Copy Gutenberg JS"; outputFileListPaths = ( - $SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.outputs.xcfilelist, + "$SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.outputs.xcfilelist", ); outputPaths = ( "", @@ -20872,13 +20872,13 @@ files = ( ); inputFileListPaths = ( - $SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist, + "$SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.inputs.xcfilelist", ); inputPaths = ( ); name = "Copy Gutenberg JS"; outputFileListPaths = ( - $SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.outputs.xcfilelist, + "$SRCROOT/../Scripts/BuildPhases/CopyGutenbergJS.outputs.xcfilelist", ); outputPaths = ( ); @@ -30709,7 +30709,7 @@ minimumVersion = 0.3.0; }; }; - 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */ = { + 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/airbnb/lottie-ios.git"; requirement = { @@ -30790,12 +30790,12 @@ }; 3F411B6E28987E3F002513AE /* Lottie */ = { isa = XCSwiftPackageProductDependency; - package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */; + package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */; productName = Lottie; }; 3F44DD57289C379C006334CD /* Lottie */ = { isa = XCSwiftPackageProductDependency; - package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios" */; + package = 3F411B6D28987E3F002513AE /* XCRemoteSwiftPackageReference "lottie-ios.git" */; productName = Lottie; }; 3FC2C33C26C4CF0A00C6D98F /* XCUITestHelpers */ = {