diff --git a/.gitignore b/.gitignore index c954afb75a0f3b..2be75f1eda6860 100644 --- a/.gitignore +++ b/.gitignore @@ -62,7 +62,6 @@ buck-out .gradle local.properties *.iml -/android/ # Node node_modules diff --git a/Libraries/Components/ScrollResponder.js b/Libraries/Components/ScrollResponder.js new file mode 100644 index 00000000000000..4ce0afae96de58 --- /dev/null +++ b/Libraries/Components/ScrollResponder.js @@ -0,0 +1,773 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +'use strict'; + +const Dimensions = require('../Utilities/Dimensions'); +const FrameRateLogger = require('../Interaction/FrameRateLogger'); +const Keyboard = require('./Keyboard/Keyboard'); +const Platform = require('../Utilities/Platform'); +const React = require('react'); +const ReactNative = require('../Renderer/shims/ReactNative'); +const TextInputState = require('./TextInput/TextInputState'); +const UIManager = require('../ReactNative/UIManager'); + +const invariant = require('invariant'); + +import type {HostComponent} from '../Renderer/shims/ReactNativeTypes'; +import type {PressEvent, ScrollEvent} from '../Types/CoreEventTypes'; +import {type EventSubscription} from '../vendor/emitter/EventEmitter'; +import type {KeyboardEvent} from './Keyboard/Keyboard'; +import typeof ScrollView from './ScrollView/ScrollView'; +import type {Props as ScrollViewProps} from './ScrollView/ScrollView'; +import Commands from './ScrollView/ScrollViewCommands'; + +/** + * Mixin that can be integrated in order to handle scrolling that plays well + * with `ResponderEventPlugin`. Integrate with your platform specific scroll + * views, or even your custom built (every-frame animating) scroll views so that + * all of these systems play well with the `ResponderEventPlugin`. + * + * iOS scroll event timing nuances: + * =============================== + * + * + * Scrolling without bouncing, if you touch down: + * ------------------------------- + * + * 1. `onMomentumScrollBegin` (when animation begins after letting up) + * ... physical touch starts ... + * 2. `onTouchStartCapture` (when you press down to stop the scroll) + * 3. `onTouchStart` (same, but bubble phase) + * 4. `onResponderRelease` (when lifting up - you could pause forever before * lifting) + * 5. `onMomentumScrollEnd` + * + * + * Scrolling with bouncing, if you touch down: + * ------------------------------- + * + * 1. `onMomentumScrollBegin` (when animation begins after letting up) + * ... bounce begins ... + * ... some time elapses ... + * ... physical touch during bounce ... + * 2. `onMomentumScrollEnd` (Makes no sense why this occurs first during bounce) + * 3. `onTouchStartCapture` (immediately after `onMomentumScrollEnd`) + * 4. `onTouchStart` (same, but bubble phase) + * 5. `onTouchEnd` (You could hold the touch start for a long time) + * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back) + * + * So when we receive an `onTouchStart`, how can we tell if we are touching + * *during* an animation (which then causes the animation to stop)? The only way + * to tell is if the `touchStart` occurred immediately after the + * `onMomentumScrollEnd`. + * + * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if + * necessary + * + * `ScrollResponder` also includes logic for blurring a currently focused input + * if one is focused while scrolling. The `ScrollResponder` is a natural place + * to put this logic since it can support not dismissing the keyboard while + * scrolling, unless a recognized "tap"-like gesture has occurred. + * + * The public lifecycle API includes events for keyboard interaction, responder + * interaction, and scrolling (among others). The keyboard callbacks + * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll + * responder's props so that you can guarantee that the scroll responder's + * internal state has been updated accordingly (and deterministically) by + * the time the props callbacks are invoke. Otherwise, you would always wonder + * if the scroll responder is currently in a state where it recognizes new + * keyboard positions etc. If coordinating scrolling with keyboard movement, + * *always* use these hooks instead of listening to your own global keyboard + * events. + * + * Public keyboard lifecycle API: (props callbacks) + * + * Standard Keyboard Appearance Sequence: + * + * this.props.onKeyboardWillShow + * this.props.onKeyboardDidShow + * + * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate + * tap inside the scroll responder's scrollable region was responsible + * for the dismissal of the keyboard. There are other reasons why the + * keyboard could be dismissed. + * + * this.props.onScrollResponderKeyboardDismissed + * + * Standard Keyboard Hide Sequence: + * + * this.props.onKeyboardWillHide + * this.props.onKeyboardDidHide + */ + +const IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16; + +export type State = {| + isTouching: boolean, + lastMomentumScrollBeginTime: number, + lastMomentumScrollEndTime: number, + observedScrollSinceBecomingResponder: boolean, + becameResponderWhileAnimating: boolean, +|}; + +const ScrollResponderMixin = { + _subscriptionKeyboardWillShow: (null: ?EventSubscription), + _subscriptionKeyboardWillHide: (null: ?EventSubscription), + _subscriptionKeyboardDidShow: (null: ?EventSubscription), + _subscriptionKeyboardDidHide: (null: ?EventSubscription), + scrollResponderMixinGetInitialState: function (): State { + return { + isTouching: false, + lastMomentumScrollBeginTime: 0, + lastMomentumScrollEndTime: 0, + + // Reset to false every time becomes responder. This is used to: + // - Determine if the scroll view has been scrolled and therefore should + // refuse to give up its responder lock. + // - Determine if releasing should dismiss the keyboard when we are in + // tap-to-dismiss mode (this.props.keyboardShouldPersistTaps !== 'always'). + observedScrollSinceBecomingResponder: false, + becameResponderWhileAnimating: false, + }; + }, + + /** + * Invoke this from an `onScroll` event. + */ + scrollResponderHandleScrollShouldSetResponder: function (): boolean { + // Allow any event touch pass through if the default pan responder is disabled + if (this.props.disableScrollViewPanResponder === true) { + return false; + } + return this.state.isTouching; + }, + + /** + * Merely touch starting is not sufficient for a scroll view to become the + * responder. Being the "responder" means that the very next touch move/end + * event will result in an action/movement. + * + * Invoke this from an `onStartShouldSetResponder` event. + * + * `onStartShouldSetResponder` is used when the next move/end will trigger + * some UI movement/action, but when you want to yield priority to views + * nested inside of the view. + * + * There may be some cases where scroll views actually should return `true` + * from `onStartShouldSetResponder`: Any time we are detecting a standard tap + * that gives priority to nested views. + * + * - If a single tap on the scroll view triggers an action such as + * recentering a map style view yet wants to give priority to interaction + * views inside (such as dropped pins or labels), then we would return true + * from this method when there is a single touch. + * + * - Similar to the previous case, if a two finger "tap" should trigger a + * zoom, we would check the `touches` count, and if `>= 2`, we would return + * true. + * + */ + scrollResponderHandleStartShouldSetResponder: function ( + e: PressEvent, + ): boolean { + // Allow any event touch pass through if the default pan responder is disabled + if (this.props.disableScrollViewPanResponder === true) { + return false; + } + + const currentlyFocusedInput = TextInputState.currentlyFocusedInput(); + + if ( + this.props.keyboardShouldPersistTaps === 'handled' && + currentlyFocusedInput != null && + e.target !== currentlyFocusedInput + ) { + return true; + } + return false; + }, + + /** + * There are times when the scroll view wants to become the responder + * (meaning respond to the next immediate `touchStart/touchEnd`), in a way + * that *doesn't* give priority to nested views (hence the capture phase): + * + * - Currently animating. + * - Tapping anywhere that is not a text input, while the keyboard is + * up (which should dismiss the keyboard). + * + * Invoke this from an `onStartShouldSetResponderCapture` event. + */ + scrollResponderHandleStartShouldSetResponderCapture: function ( + e: PressEvent, + ): boolean { + // The scroll view should receive taps instead of its descendants if: + // * it is already animating/decelerating + if (this.scrollResponderIsAnimating()) { + return true; + } + + // Allow any event touch pass through if the default pan responder is disabled + if (this.props.disableScrollViewPanResponder === true) { + return false; + } + + // * the keyboard is up, keyboardShouldPersistTaps is 'never' (the default), + // and a new touch starts with a non-textinput target (in which case the + // first tap should be sent to the scroll view and dismiss the keyboard, + // then the second tap goes to the actual interior view) + const currentlyFocusedTextInput = TextInputState.currentlyFocusedInput(); + const {keyboardShouldPersistTaps} = this.props; + const keyboardNeverPersistTaps = + !keyboardShouldPersistTaps || keyboardShouldPersistTaps === 'never'; + + if (typeof e.target === 'number') { + if (__DEV__) { + console.error( + 'Did not expect event target to be a number. Should have been a native component', + ); + } + + return false; + } + + if ( + keyboardNeverPersistTaps && + currentlyFocusedTextInput != null && + e.target != null && + !TextInputState.isTextInput(e.target) + ) { + return true; + } + + return false; + }, + + /** + * Invoke this from an `onResponderReject` event. + * + * Some other element is not yielding its role as responder. Normally, we'd + * just disable the `UIScrollView`, but a touch has already began on it, the + * `UIScrollView` will not accept being disabled after that. The easiest + * solution for now is to accept the limitation of disallowing this + * altogether. To improve this, find a way to disable the `UIScrollView` after + * a touch has already started. + */ + scrollResponderHandleResponderReject: function () {}, + + /** + * We will allow the scroll view to give up its lock iff it acquired the lock + * during an animation. This is a very useful default that happens to satisfy + * many common user experiences. + * + * - Stop a scroll on the left edge, then turn that into an outer view's + * backswipe. + * - Stop a scroll mid-bounce at the top, continue pulling to have the outer + * view dismiss. + * - However, without catching the scroll view mid-bounce (while it is + * motionless), if you drag far enough for the scroll view to become + * responder (and therefore drag the scroll view a bit), any backswipe + * navigation of a swipe gesture higher in the view hierarchy, should be + * rejected. + */ + scrollResponderHandleTerminationRequest: function (): boolean { + return !this.state.observedScrollSinceBecomingResponder; + }, + + /** + * Invoke this from an `onTouchEnd` event. + * + * @param {PressEvent} e Event. + */ + scrollResponderHandleTouchEnd: function (e: PressEvent) { + const nativeEvent = e.nativeEvent; + this.state.isTouching = nativeEvent.touches.length !== 0; + this.props.onTouchEnd && this.props.onTouchEnd(e); + }, + + /** + * Invoke this from an `onTouchCancel` event. + * + * @param {PressEvent} e Event. + */ + scrollResponderHandleTouchCancel: function (e: PressEvent) { + this.state.isTouching = false; + this.props.onTouchCancel && this.props.onTouchCancel(e); + }, + + /** + * Invoke this from an `onResponderRelease` event. + */ + scrollResponderHandleResponderRelease: function (e: PressEvent) { + this.props.onResponderRelease && this.props.onResponderRelease(e); + + if (typeof e.target === 'number') { + if (__DEV__) { + console.error( + 'Did not expect event target to be a number. Should have been a native component', + ); + } + + return; + } + + // By default scroll views will unfocus a textField + // if another touch occurs outside of it + const currentlyFocusedTextInput = TextInputState.currentlyFocusedInput(); + if ( + this.props.keyboardShouldPersistTaps !== true && + this.props.keyboardShouldPersistTaps !== 'always' && + currentlyFocusedTextInput != null && + e.target !== currentlyFocusedTextInput && + !this.state.observedScrollSinceBecomingResponder && + !this.state.becameResponderWhileAnimating + ) { + this.props.onScrollResponderKeyboardDismissed && + this.props.onScrollResponderKeyboardDismissed(e); + TextInputState.blurTextInput(currentlyFocusedTextInput); + } + }, + + scrollResponderHandleScroll: function (e: ScrollEvent) { + (this: any).state.observedScrollSinceBecomingResponder = true; + (this: any).props.onScroll && (this: any).props.onScroll(e); + }, + + /** + * Invoke this from an `onResponderGrant` event. + */ + scrollResponderHandleResponderGrant: function (e: ScrollEvent) { + this.state.observedScrollSinceBecomingResponder = false; + this.props.onResponderGrant && this.props.onResponderGrant(e); + this.state.becameResponderWhileAnimating = + this.scrollResponderIsAnimating(); + }, + + /** + * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll + * animation, and there's not an easy way to distinguish a drag vs. stopping + * momentum. + * + * Invoke this from an `onScrollBeginDrag` event. + */ + scrollResponderHandleScrollBeginDrag: function (e: ScrollEvent) { + FrameRateLogger.beginScroll(); // TODO: track all scrolls after implementing onScrollEndAnimation + this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e); + }, + + /** + * Invoke this from an `onScrollEndDrag` event. + */ + scrollResponderHandleScrollEndDrag: function (e: ScrollEvent) { + const {velocity} = e.nativeEvent; + // - If we are animating, then this is a "drag" that is stopping the scrollview and momentum end + // will fire. + // - If velocity is non-zero, then the interaction will stop when momentum scroll ends or + // another drag starts and ends. + // - If we don't get velocity, better to stop the interaction twice than not stop it. + if ( + !this.scrollResponderIsAnimating() && + (!velocity || (velocity.x === 0 && velocity.y === 0)) + ) { + FrameRateLogger.endScroll(); + } + this.props.onScrollEndDrag && this.props.onScrollEndDrag(e); + }, + + /** + * Invoke this from an `onMomentumScrollBegin` event. + */ + scrollResponderHandleMomentumScrollBegin: function (e: ScrollEvent) { + this.state.lastMomentumScrollBeginTime = global.performance.now(); + this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e); + }, + + /** + * Invoke this from an `onMomentumScrollEnd` event. + */ + scrollResponderHandleMomentumScrollEnd: function (e: ScrollEvent) { + FrameRateLogger.endScroll(); + this.state.lastMomentumScrollEndTime = global.performance.now(); + this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e); + }, + + /** + * Invoke this from an `onTouchStart` event. + * + * Since we know that the `SimpleEventPlugin` occurs later in the plugin + * order, after `ResponderEventPlugin`, we can detect that we were *not* + * permitted to be the responder (presumably because a contained view became + * responder). The `onResponderReject` won't fire in that case - it only + * fires when a *current* responder rejects our request. + * + * @param {PressEvent} e Touch Start event. + */ + scrollResponderHandleTouchStart: function (e: PressEvent) { + this.state.isTouching = true; + this.props.onTouchStart && this.props.onTouchStart(e); + }, + + /** + * Invoke this from an `onTouchMove` event. + * + * Since we know that the `SimpleEventPlugin` occurs later in the plugin + * order, after `ResponderEventPlugin`, we can detect that we were *not* + * permitted to be the responder (presumably because a contained view became + * responder). The `onResponderReject` won't fire in that case - it only + * fires when a *current* responder rejects our request. + * + * @param {PressEvent} e Touch Start event. + */ + scrollResponderHandleTouchMove: function (e: PressEvent) { + this.props.onTouchMove && this.props.onTouchMove(e); + }, + + /** + * A helper function for this class that lets us quickly determine if the + * view is currently animating. This is particularly useful to know when + * a touch has just started or ended. + */ + scrollResponderIsAnimating: function (): boolean { + const now = global.performance.now(); + const timeSinceLastMomentumScrollEnd = + now - this.state.lastMomentumScrollEndTime; + const isAnimating = + timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS || + this.state.lastMomentumScrollEndTime < + this.state.lastMomentumScrollBeginTime; + return isAnimating; + }, + + /** + * Returns the node that represents native view that can be scrolled. + * Components can pass what node to use by defining a `getScrollableNode` + * function otherwise `this` is used. + */ + scrollResponderGetScrollableNode: function (): ?number { + return this.getScrollableNode + ? this.getScrollableNode() + : ReactNative.findNodeHandle(this); + }, + + /** + * A helper function to scroll to a specific point in the ScrollView. + * This is currently used to help focus child TextViews, but can also + * be used to quickly scroll to any element we want to focus. Syntax: + * + * `scrollResponderScrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})` + * + * Note: The weird argument signature is due to the fact that, for historical reasons, + * the function also accepts separate arguments as as alternative to the options object. + * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED. + */ + scrollResponderScrollTo: function ( + x?: + | number + | { + x?: number, + y?: number, + animated?: boolean, + ... + }, + y?: number, + animated?: boolean, + ) { + if (typeof x === 'number') { + console.warn( + '`scrollResponderScrollTo(x, y, animated)` is deprecated. Use `scrollResponderScrollTo({x: 5, y: 5, animated: true})` instead.', + ); + } else { + ({x, y, animated} = x || {}); + } + + const that: React.ElementRef = (this: any); + invariant( + that.getNativeScrollRef != null, + 'Expected scrollTo to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native', + ); + const nativeScrollRef = that.getNativeScrollRef(); + if (nativeScrollRef == null) { + return; + } + Commands.scrollTo(nativeScrollRef, x || 0, y || 0, animated !== false); + }, + + /** + * Scrolls to the end of the ScrollView, either immediately or with a smooth + * animation. + * + * Example: + * + * `scrollResponderScrollToEnd({animated: true})` + */ + scrollResponderScrollToEnd: function (options?: {animated?: boolean, ...}) { + // Default to true + const animated = (options && options.animated) !== false; + + const that: React.ElementRef = (this: any); + invariant( + that.getNativeScrollRef != null, + 'Expected scrollToEnd to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native', + ); + const nativeScrollRef = that.getNativeScrollRef(); + if (nativeScrollRef == null) { + return; + } + + Commands.scrollToEnd(nativeScrollRef, animated); + }, + + /** + * A helper function to zoom to a specific rect in the scrollview. The argument has the shape + * {x: number; y: number; width: number; height: number; animated: boolean = true} + * + * @platform ios + */ + scrollResponderZoomTo: function ( + rect: {| + x: number, + y: number, + width: number, + height: number, + animated?: boolean, + |}, + animated?: boolean, // deprecated, put this inside the rect argument instead + ) { + invariant(Platform.OS === 'ios', 'zoomToRect is not implemented'); + if ('animated' in rect) { + animated = rect.animated; + delete rect.animated; + } else if (typeof animated !== 'undefined') { + console.warn( + '`scrollResponderZoomTo` `animated` argument is deprecated. Use `options.animated` instead', + ); + } + + const that: React.ElementRef = this; + invariant( + that.getNativeScrollRef != null, + 'Expected zoomToRect to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native', + ); + const nativeScrollRef = that.getNativeScrollRef(); + if (nativeScrollRef == null) { + return; + } + Commands.zoomToRect(nativeScrollRef, rect, animated !== false); + }, + + /** + * Displays the scroll indicators momentarily. + */ + scrollResponderFlashScrollIndicators: function () { + const that: React.ElementRef = (this: any); + invariant( + that.getNativeScrollRef != null, + 'Expected flashScrollIndicators to be called on a scrollViewRef. If this exception occurs it is likely a bug in React Native', + ); + const nativeScrollRef = that.getNativeScrollRef(); + if (nativeScrollRef == null) { + return; + } + Commands.flashScrollIndicators(nativeScrollRef); + }, + + /** + * This method should be used as the callback to onFocus in a TextInputs' + * parent view. Note that any module using this mixin needs to return + * the parent view's ref in getScrollViewRef() in order to use this method. + * @param {number} nodeHandle The TextInput node handle + * @param {number} additionalOffset The scroll view's bottom "contentInset". + * Default is 0. + * @param {bool} preventNegativeScrolling Whether to allow pulling the content + * down to make it meet the keyboard's top. Default is false. + */ + scrollResponderScrollNativeHandleToKeyboard: function ( + nodeHandle: number | React.ElementRef>, + additionalOffset?: number, + preventNegativeScrollOffset?: boolean, + ) { + this.additionalScrollOffset = additionalOffset || 0; + this.preventNegativeScrollOffset = !!preventNegativeScrollOffset; + + if (typeof nodeHandle === 'number') { + UIManager.measureLayout( + nodeHandle, + ReactNative.findNodeHandle(this.getInnerViewNode()), + this.scrollResponderTextInputFocusError, + this.scrollResponderInputMeasureAndScrollToKeyboard, + ); + } else { + const innerRef = this.getInnerViewRef(); + + if (innerRef == null) { + return; + } + + nodeHandle.measureLayout( + innerRef, + this.scrollResponderInputMeasureAndScrollToKeyboard, + this.scrollResponderTextInputFocusError, + ); + } + }, + + /** + * The calculations performed here assume the scroll view takes up the entire + * screen - even if has some content inset. We then measure the offsets of the + * keyboard, and compensate both for the scroll view's "contentInset". + * + * @param {number} left Position of input w.r.t. table view. + * @param {number} top Position of input w.r.t. table view. + * @param {number} width Width of the text input. + * @param {number} height Height of the text input. + */ + scrollResponderInputMeasureAndScrollToKeyboard: function ( + left: number, + top: number, + width: number, + height: number, + ) { + let keyboardScreenY = Dimensions.get('window').height; + if (this.keyboardWillOpenTo) { + keyboardScreenY = this.keyboardWillOpenTo.endCoordinates.screenY; + } + let scrollOffsetY = + top - keyboardScreenY + height + this.additionalScrollOffset; + + // By default, this can scroll with negative offset, pulling the content + // down so that the target component's bottom meets the keyboard's top. + // If requested otherwise, cap the offset at 0 minimum to avoid content + // shifting down. + if (this.preventNegativeScrollOffset) { + scrollOffsetY = Math.max(0, scrollOffsetY); + } + this.scrollResponderScrollTo({x: 0, y: scrollOffsetY, animated: true}); + + this.additionalOffset = 0; + this.preventNegativeScrollOffset = false; + }, + + scrollResponderTextInputFocusError: function (msg: string) { + console.error('Error measuring text field: ', msg); + }, + + /** + * `componentWillMount` is the closest thing to a standard "constructor" for + * React components. + * + * The `keyboardWillShow` is called before input focus. + */ + UNSAFE_componentWillMount: function () { + const {keyboardShouldPersistTaps} = ((this: any).props: ScrollViewProps); + if (typeof keyboardShouldPersistTaps === 'boolean') { + console.warn( + `'keyboardShouldPersistTaps={${ + keyboardShouldPersistTaps === true ? 'true' : 'false' + }}' is deprecated. ` + + `Use 'keyboardShouldPersistTaps="${ + keyboardShouldPersistTaps ? 'always' : 'never' + }"' instead`, + ); + } + + (this: any).keyboardWillOpenTo = null; + (this: any).additionalScrollOffset = 0; + this._subscriptionKeyboardWillShow = Keyboard.addListener( + 'keyboardWillShow', + this.scrollResponderKeyboardWillShow, + ); + + this._subscriptionKeyboardWillHide = Keyboard.addListener( + 'keyboardWillHide', + this.scrollResponderKeyboardWillHide, + ); + this._subscriptionKeyboardDidShow = Keyboard.addListener( + 'keyboardDidShow', + this.scrollResponderKeyboardDidShow, + ); + this._subscriptionKeyboardDidHide = Keyboard.addListener( + 'keyboardDidHide', + this.scrollResponderKeyboardDidHide, + ); + }, + + componentWillUnmount: function () { + if (this._subscriptionKeyboardWillShow != null) { + this._subscriptionKeyboardWillShow.remove(); + } + if (this._subscriptionKeyboardWillHide != null) { + this._subscriptionKeyboardWillHide.remove(); + } + if (this._subscriptionKeyboardDidShow != null) { + this._subscriptionKeyboardDidShow.remove(); + } + if (this._subscriptionKeyboardDidHide != null) { + this._subscriptionKeyboardDidHide.remove(); + } + }, + + /** + * Warning, this may be called several times for a single keyboard opening. + * It's best to store the information in this method and then take any action + * at a later point (either in `keyboardDidShow` or other). + * + * Here's the order that events occur in: + * - focus + * - willShow {startCoordinates, endCoordinates} several times + * - didShow several times + * - blur + * - willHide {startCoordinates, endCoordinates} several times + * - didHide several times + * + * The `ScrollResponder` module callbacks for each of these events. + * Even though any user could have easily listened to keyboard events + * themselves, using these `props` callbacks ensures that ordering of events + * is consistent - and not dependent on the order that the keyboard events are + * subscribed to. This matters when telling the scroll view to scroll to where + * the keyboard is headed - the scroll responder better have been notified of + * the keyboard destination before being instructed to scroll to where the + * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything + * will work. + * + * WARNING: These callbacks will fire even if a keyboard is displayed in a + * different navigation pane. Filter out the events to determine if they are + * relevant to you. (For example, only if you receive these callbacks after + * you had explicitly focused a node etc). + */ + scrollResponderKeyboardWillShow: function (e: KeyboardEvent) { + this.keyboardWillOpenTo = e; + this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e); + }, + + scrollResponderKeyboardWillHide: function (e: KeyboardEvent) { + this.keyboardWillOpenTo = null; + this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e); + }, + + scrollResponderKeyboardDidShow: function (e: KeyboardEvent) { + // TODO(7693961): The event for DidShow is not available on iOS yet. + // Use the one from WillShow and do not assign. + if (e) { + this.keyboardWillOpenTo = e; + } + this.props.onKeyboardDidShow && this.props.onKeyboardDidShow(e); + }, + + scrollResponderKeyboardDidHide: function (e: KeyboardEvent) { + this.keyboardWillOpenTo = null; + this.props.onKeyboardDidHide && this.props.onKeyboardDidHide(e); + }, +}; + +const ScrollResponder = { + Mixin: ScrollResponderMixin, +}; + +module.exports = ScrollResponder; diff --git a/Libraries/Utilities/HMRClient.js b/Libraries/Utilities/HMRClient.js index 63da957ef37028..0c68c76d0e8919 100644 --- a/Libraries/Utilities/HMRClient.js +++ b/Libraries/Utilities/HMRClient.js @@ -10,7 +10,12 @@ const DevSettings = require('./DevSettings'); const invariant = require('invariant'); -const MetroHMRClient = require('metro-runtime/src/modules/HMRClient'); +// const MetroHMRClient = require('metro-runtime/src/modules/HMRClient'); +//corrected dependency for HMRClient +const MetroHMRClient = + Platform.OS === 'android' + ? require('../../../metro/src/lib/bundle-modules/HMRClient') + : require('metro/src/lib/bundle-modules/HMRClient'); const Platform = require('./Platform'); const prettyFormat = require('pretty-format'); diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index b2d44d10d8cd38..4a0a018c1d978e 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -309,6 +309,12 @@ android { } } } + qa { + matchingFallbacks = ['release'] + } + fox { + matchingFallbacks = ['release'] + } release { externalNativeBuild { diff --git a/ReactAndroid/gradle.properties b/ReactAndroid/gradle.properties index f8abfcc2725972..782280d07a2c5c 100644 --- a/ReactAndroid/gradle.properties +++ b/ReactAndroid/gradle.properties @@ -14,7 +14,7 @@ ANDROIDX_TEST_VERSION=1.1.0 APPCOMPAT_VERSION=1.4.1 FRESCO_VERSION=2.5.0 OKHTTP_VERSION=4.9.2 -SO_LOADER_VERSION=0.10.3 +SO_LOADER_VERSION=0.10.4 BOOST_VERSION=1_76_0 DOUBLE_CONVERSION_VERSION=1.1.6 diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java index b47c4d15a093aa..2a4001aa4d993a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java @@ -106,7 +106,7 @@ public FrescoModule( public void initialize() { super.initialize(); getReactApplicationContext().addLifecycleEventListener(this); - if (!hasBeenInitialized()) { + if (!hasBeenInitialized() && !Fresco.hasBeenInitialized()) { if (mConfig == null) { mConfig = getDefaultConfig(getReactApplicationContext()); } @@ -188,6 +188,12 @@ public void onHostDestroy() { } } + //enable fresco module override for autolinking + @Override + public boolean canOverrideExistingModule() { + return true; + } + private ImagePipeline getImagePipeline() { if (mImagePipeline == null) { mImagePipeline = Fresco.getImagePipeline(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java index 2840de71e0b8db..7b23c2b89bfc65 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java @@ -162,12 +162,12 @@ public void onDropInstance() { private void dismiss() { UiThreadUtil.assertOnUiThread(); - - if (mDialog != null) { + Activity currentActivity = ((ReactContext) getContext()).getCurrentActivity(); + if (currentActivity!=null && !currentActivity.isFinishing() && mDialog != null) { if (mDialog.isShowing()) { Activity dialogContext = ContextUtils.findContextOfType(mDialog.getContext(), Activity.class); - if (dialogContext == null || !dialogContext.isFinishing()) { + if (dialogContext != null && !dialogContext.isFinishing()) { mDialog.dismiss(); } } @@ -248,6 +248,10 @@ protected void showOrUpdate() { // If the existing Dialog is currently up, we may need to redraw it or we may be able to update // the property without having to recreate the dialog + Activity currentReactActivity = ((ReactContext) getContext()).getCurrentActivity(); + if (currentReactActivity == null || currentReactActivity.isFinishing()) { + return; + } if (mDialog != null) { Context dialogContext = ContextUtils.findContextOfType(mDialog.getContext(), Activity.class); // TODO(T85755791): remove after investigation @@ -369,22 +373,43 @@ private void updateProperties() { // Dialog. return; } - int activityWindowFlags = currentActivity.getWindow().getAttributes().flags; - if ((activityWindowFlags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) { - window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - } else { - window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + if (currentActivity != null) { + try{ + int activityWindowFlags = currentActivity.getWindow().getAttributes().flags; + if ((activityWindowFlags + & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0) { + mDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } else { + mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + } + }catch(IllegalArgumentException e){ + handleDialogException(); + } } - if (mTransparent) { - window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); - } else { - window.setDimAmount(0.5f); - window.setFlags( - WindowManager.LayoutParams.FLAG_DIM_BEHIND, WindowManager.LayoutParams.FLAG_DIM_BEHIND); + try{ + if (mTransparent) { + mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); + } else { + mDialog.getWindow().setDimAmount(0.5f); + mDialog.getWindow().setFlags( + WindowManager.LayoutParams.FLAG_DIM_BEHIND, + WindowManager.LayoutParams.FLAG_DIM_BEHIND); + } + }catch(IllegalArgumentException e){ + handleDialogException(); } } + private void handleDialogException(){ + mDialog = null; + ViewGroup parent = (ViewGroup) mHostView.getParent(); + if(parent!= null){ + parent.removeViewAt(0); + } + showOrUpdate(); + } + @Override public FabricViewStateManager getFabricViewStateManager() { return mHostView.getFabricViewStateManager(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/toolbar/DrawableWithIntrinsicSize.java b/ReactAndroid/src/main/java/com/facebook/react/views/toolbar/DrawableWithIntrinsicSize.java new file mode 100644 index 00000000000000..b673abd96049ba --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/views/toolbar/DrawableWithIntrinsicSize.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +package com.facebook.react.views.toolbar; + +import android.graphics.drawable.Drawable; + +import com.facebook.drawee.drawable.ForwardingDrawable; +import com.facebook.imagepipeline.image.ImageInfo; +import com.facebook.react.uimanager.PixelUtil; + +/** + * Fresco currently sets drawables' intrinsic size to (-1, -1). This is to guarantee that scaling is + * performed correctly. In the case of the Toolbar, we don't have access to the widget's internal + * ImageView, which has width/height set to WRAP_CONTENT, which relies on intrinsic size. + * + * To work around this we have this class which just wraps another Drawable, but returns the correct + * dimensions in getIntrinsicWidth/Height. This makes WRAP_CONTENT work in Toolbar's internals. + * + * This drawable uses the size of a loaded image to determine the intrinsic size. It therefore can't + * be used safely until *after* an image has loaded, and must be replaced when the image is + * replaced. + */ +public class DrawableWithIntrinsicSize extends ForwardingDrawable implements Drawable.Callback { + + private final ImageInfo mImageInfo; + + public DrawableWithIntrinsicSize(Drawable drawable, ImageInfo imageInfo) { + super(drawable); + mImageInfo = imageInfo; + } + + @Override + public int getIntrinsicWidth() { + return mImageInfo.getWidth(); + } + + @Override + public int getIntrinsicHeight() { + return mImageInfo.getHeight(); + } + +} diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar new file mode 100644 index 00000000000000..675a08f588d471 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.md5 new file mode 100644 index 00000000000000..21dd11835669b4 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.md5 @@ -0,0 +1 @@ +6fed2860240377c13c2dfe47e865147f \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha1 new file mode 100644 index 00000000000000..3fbc7c6268fa59 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha1 @@ -0,0 +1 @@ +5b4a335ff1cd4204ccaf4d148c10e6df2e793a9d \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha256 new file mode 100644 index 00000000000000..ac8c6e8c7a4fcf --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha256 @@ -0,0 +1 @@ +f7328c4e85a68f5224842eb311aaa7e58a71270350d67c2353f68433a1512aab \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha512 new file mode 100644 index 00000000000000..008e28f3cdff2e --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-javadoc.jar.sha512 @@ -0,0 +1 @@ +d709ce3c0c2d6ebba82d79faaea82dc43d970613d09f190fcfd38e244374ca42d21c66bef8b70f77eea759c06e3f8764bf58f0a7972c473f8511c5278f56a8f1 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar new file mode 100644 index 00000000000000..203e9dc65112a0 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.md5 new file mode 100644 index 00000000000000..607b81ac31c002 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.md5 @@ -0,0 +1 @@ +c084c3de5c91e57de27f0feab14a9e52 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha1 new file mode 100644 index 00000000000000..0f314131b903c6 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha1 @@ -0,0 +1 @@ +79546e91c544650464a586b0402c34f61f5e1fc9 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha256 new file mode 100644 index 00000000000000..2f65551828f1b2 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha256 @@ -0,0 +1 @@ +659200d3ea42484db2edceefa4b87fccf52a91903f322371c946714d1976e8c8 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha512 new file mode 100644 index 00000000000000..698211c360af2c --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug-sources.jar.sha512 @@ -0,0 +1 @@ +3bd21182c585c469e85de970323a1876fa56f0e08a89543ef4b66c7e27b6a74d3da1d162f3d001b50c088552be65b1a7c624e3ed2c7dea349bb48998e572b1cf \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar new file mode 100644 index 00000000000000..1a187f343cbcf1 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.md5 new file mode 100644 index 00000000000000..bd236954e0e396 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.md5 @@ -0,0 +1 @@ +27af6a9cdf4fd7987617a96e474d6392 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha1 new file mode 100644 index 00000000000000..e8a63ea5388950 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha1 @@ -0,0 +1 @@ +86c9c0317347d86c7a26ad5e8771a0d2021cfbbc \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha256 new file mode 100644 index 00000000000000..1fa51171d51ab1 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha256 @@ -0,0 +1 @@ +138a719e4b61cf4307270365076e52a108f44f6093f32cf264e19fbdd9cb959c \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha512 new file mode 100644 index 00000000000000..642ab6f85f1468 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-debug.aar.sha512 @@ -0,0 +1 @@ +9d89271c30c6e4fbc9cc74550bbad394efe4ee2ae312e721cb1ecdcfc2b18db170903f2cbc231ff64458123542e6af72a0e41855a7308d092855f3478cc3bf7b \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar new file mode 100644 index 00000000000000..d6526edd160934 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.md5 new file mode 100644 index 00000000000000..d17cdb93081eec --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.md5 @@ -0,0 +1 @@ +1a3495269b35e220b91ee22cd2c7b65e \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha1 new file mode 100644 index 00000000000000..b60833a03fdd73 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha1 @@ -0,0 +1 @@ +1fb40750df26a4e28e5280475d2213231cd67c99 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha256 new file mode 100644 index 00000000000000..d8040832d61e90 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha256 @@ -0,0 +1 @@ +a21f6882a6677a82c7c9b27890282be8f2719fd9abd044a7f7276481d31be79e \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha512 new file mode 100644 index 00000000000000..9ae883105e39fe --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-javadoc.jar.sha512 @@ -0,0 +1 @@ +90c4f85ee1d5b878ff7b8c3af26b36c51bb173a862cb4ce23781012f569d5b8f1b06c7a5984fbcd1630f89b70703f4ea977c875834a6d891af754122c9a539d7 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar new file mode 100644 index 00000000000000..0358e24e5e61f7 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.md5 new file mode 100644 index 00000000000000..6e7e37c0254635 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.md5 @@ -0,0 +1 @@ +2716ba189042a56f6d93c53f725cc52f \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha1 new file mode 100644 index 00000000000000..221b0edcaf4c55 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha1 @@ -0,0 +1 @@ +ea716be4cfdf35f55f2540aa236c8e549665a138 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha256 new file mode 100644 index 00000000000000..a11291acf8ec29 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha256 @@ -0,0 +1 @@ +38e581cac917bb829fb4478f301e9b450003692285cc239369fa427034a1ba78 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha512 new file mode 100644 index 00000000000000..fea97e5b041e29 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox-sources.jar.sha512 @@ -0,0 +1 @@ +1f737daeb527dd09761c9523c35b51eea61f9c0ee6f26aee1094ed9753a9f852b224e1fe702ea87e9f17f39f7f56c77cb69bd9468e6ae9648eff9a2497df6838 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar new file mode 100644 index 00000000000000..c87766f5c18ee1 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.md5 new file mode 100644 index 00000000000000..e6ee37db4e894b --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.md5 @@ -0,0 +1 @@ +b9f01e3c08dd9d6bdb78f202753720f5 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha1 new file mode 100644 index 00000000000000..bc6fc438ddae08 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha1 @@ -0,0 +1 @@ +c94f5d6ca7830cf0093bc42604a27cda372029a9 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha256 new file mode 100644 index 00000000000000..b341f7dbee2cbc --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha256 @@ -0,0 +1 @@ +81f2432d0fc1dd3af5433d8d50976126b48775dcd196aca814d8663df38685d3 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha512 new file mode 100644 index 00000000000000..1fb07e0ce7faa8 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-fox.aar.sha512 @@ -0,0 +1 @@ +a3f891a9ef23c05c6f808324891018cd28ea4ddd1c1d98f49e5b7da29e303ee36bcf5db3452e59989dd900df1aa97b0cccf4014d6cb6ef5d2ad8b3b9f270c9d5 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar new file mode 100644 index 00000000000000..aebeba0c95f542 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.md5 new file mode 100644 index 00000000000000..a743a556449619 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.md5 @@ -0,0 +1 @@ +f8bdbe63006deaf85cf5e4f79be3fe6a \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha1 new file mode 100644 index 00000000000000..ec6ec0b76f0ac0 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha1 @@ -0,0 +1 @@ +038be867c1cfceedc588a65463455f6180193d6e \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha256 new file mode 100644 index 00000000000000..21fadde1048930 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha256 @@ -0,0 +1 @@ +07ca9a7c03900f59ee4452cc86668be283e8601b2fedece565898d7ca9f2ee28 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha512 new file mode 100644 index 00000000000000..fcfae75137288b --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-javadoc.jar.sha512 @@ -0,0 +1 @@ +97354efac2d7cc0a8b87cf7175e87e931154bf182304e31696feed20587c4e73ca38d339e4dd1f985e5e925ae2557010cea0da3345846480eeb3f47b8d2263d9 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar new file mode 100644 index 00000000000000..92cb6f1adb0e2e Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.md5 new file mode 100644 index 00000000000000..9717fcd44d1dc4 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.md5 @@ -0,0 +1 @@ +dbfedf36dc4472f222b28abfcea14f25 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha1 new file mode 100644 index 00000000000000..7ba0142e4dedcf --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha1 @@ -0,0 +1 @@ +f3841850fce5b79e6e8d67ca15951da319bb94fc \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha256 new file mode 100644 index 00000000000000..ec55e4962b8b94 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha256 @@ -0,0 +1 @@ +9229718f34058940093c756c0f09b9ada520030c2eb4ffeb6bd93f279119f580 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha512 new file mode 100644 index 00000000000000..33d4c238d1f989 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa-sources.jar.sha512 @@ -0,0 +1 @@ +0f39dfcc808a24f54e4a21a1a71a87dc6c12ae205b13a742cfa01a375766e9ca7792b9b62fa41a804dc53145c98dd6fc949213a57b76cbc7966ea7099df33e62 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar new file mode 100644 index 00000000000000..9e7a56351b6c01 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.md5 new file mode 100644 index 00000000000000..0468a06a33c5ae --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.md5 @@ -0,0 +1 @@ +beba8331ca807b5656e140e426bb0d8b \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha1 new file mode 100644 index 00000000000000..4693a8ba92bf51 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha1 @@ -0,0 +1 @@ +2fadc151dea9bb8956f718a9b91a82555a7d45f2 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha256 new file mode 100644 index 00000000000000..99d0871e9987de --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha256 @@ -0,0 +1 @@ +2feb9dcb05b56efe736bea4d3c4e7f7884ae85f6d060fd0d5b1acf9e5870a703 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha512 new file mode 100644 index 00000000000000..b5d26429d7c778 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-qa.aar.sha512 @@ -0,0 +1 @@ +70865ec0551a1647857851950512d44c053869055a0ad2cf855b5ef862e8f58792fba74f797333781bb8c74f6cfaf9a37fb3e22248c7c2289946ef4103d79058 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar new file mode 100644 index 00000000000000..8b23eda5e95d86 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.md5 new file mode 100644 index 00000000000000..f3bdc11e9f4a43 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.md5 @@ -0,0 +1 @@ +f8539f3de2407544c38b473b0ddcfd9a \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha1 new file mode 100644 index 00000000000000..0eae210af99004 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha1 @@ -0,0 +1 @@ +043e8435b7a1ac051311964df8326713f5549e13 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha256 new file mode 100644 index 00000000000000..ab491071d12b1d --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha256 @@ -0,0 +1 @@ +d83f7f5cfc72f8cff223104416e889cbbbb403b4202be2036b803538090439ba \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha512 new file mode 100644 index 00000000000000..c40299e6c8ac88 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-javadoc.jar.sha512 @@ -0,0 +1 @@ +628bae131d1d9a08211e69a99402520e9d22324b647e59282be4026c486df0a0d480032f14867d73321c773f595c67acc48c892d75be0264b3eb060d62f45291 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar new file mode 100644 index 00000000000000..dc7f5b5d392561 Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.md5 new file mode 100644 index 00000000000000..db38ccf95490c1 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.md5 @@ -0,0 +1 @@ +373616d80c61d09f461b638d0dc350e8 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha1 new file mode 100644 index 00000000000000..cb7a03851a16a0 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha1 @@ -0,0 +1 @@ +c226018553dc29d1a9235e3c0f135af18e6326a2 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha256 new file mode 100644 index 00000000000000..311319e41ec963 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha256 @@ -0,0 +1 @@ +c9118f50148af7abe3463c9e9fe4503c092dc7ea637772c2f0daad9b1c84ca6f \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha512 new file mode 100644 index 00000000000000..619569a45b925d --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release-sources.jar.sha512 @@ -0,0 +1 @@ +4ba567d4a1a9758f38c129039b43d59f0483a9ba18982275c494cbb26e3a4c9dcaaa8b8b13009e680aa1828f9083c9b3419c578fdec916a89141feeae74d5cf9 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar new file mode 100644 index 00000000000000..03fbf4df20839e Binary files /dev/null and b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar differ diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.md5 new file mode 100644 index 00000000000000..14f69f2b52a274 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.md5 @@ -0,0 +1 @@ +9ca49e82a9a87481e096e564642195d6 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha1 new file mode 100644 index 00000000000000..9764310508b290 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha1 @@ -0,0 +1 @@ +d795062a0b5ddaf3feafcd86e506998bb96922d8 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha256 new file mode 100644 index 00000000000000..662cbee9b600d1 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha256 @@ -0,0 +1 @@ +53f880e0492954e12281638e29ccda6de7ebe457f190daec865d62d388be1d8a \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha512 new file mode 100644 index 00000000000000..34fb191ee2b791 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7-release.aar.sha512 @@ -0,0 +1 @@ +e59ca2dfecfb781331f75b15d81ecfe79bdc885467d18b914369559895b1533f581c9534017eaf204f4b5a80e8b2ffa38752886274720e05112b6ef4e7d7df37 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module new file mode 100644 index 00000000000000..fa4dffd388b945 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module @@ -0,0 +1,1322 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "com.facebook.react", + "module": "react-native", + "version": "0.69.7", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "7.3.3" + } + }, + "variants": [ + { + "name": "debugVariantDefaultApiPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "debug", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-debug.aar", + "url": "react-native-0.69.7-debug.aar", + "size": 32330534, + "sha512": "9d89271c30c6e4fbc9cc74550bbad394efe4ee2ae312e721cb1ecdcfc2b18db170903f2cbc231ff64458123542e6af72a0e41855a7308d092855f3478cc3bf7b", + "sha256": "138a719e4b61cf4307270365076e52a108f44f6093f32cf264e19fbdd9cb959c", + "sha1": "86c9c0317347d86c7a26ad5e8771a0d2021cfbbc", + "md5": "27af6a9cdf4fd7987617a96e474d6392" + } + ] + }, + { + "name": "debugVariantDefaultRuntimePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "debug", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-debug.aar", + "url": "react-native-0.69.7-debug.aar", + "size": 32330534, + "sha512": "9d89271c30c6e4fbc9cc74550bbad394efe4ee2ae312e721cb1ecdcfc2b18db170903f2cbc231ff64458123542e6af72a0e41855a7308d092855f3478cc3bf7b", + "sha256": "138a719e4b61cf4307270365076e52a108f44f6093f32cf264e19fbdd9cb959c", + "sha1": "86c9c0317347d86c7a26ad5e8771a0d2021cfbbc", + "md5": "27af6a9cdf4fd7987617a96e474d6392" + } + ] + }, + { + "name": "debugVariantDefaultSourcePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "debug", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "sources", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-debug-sources.jar", + "url": "react-native-0.69.7-debug-sources.jar", + "size": 1029029, + "sha512": "3bd21182c585c469e85de970323a1876fa56f0e08a89543ef4b66c7e27b6a74d3da1d162f3d001b50c088552be65b1a7c624e3ed2c7dea349bb48998e572b1cf", + "sha256": "659200d3ea42484db2edceefa4b87fccf52a91903f322371c946714d1976e8c8", + "sha1": "79546e91c544650464a586b0402c34f61f5e1fc9", + "md5": "c084c3de5c91e57de27f0feab14a9e52" + } + ] + }, + { + "name": "debugVariantDefaultJavaDocPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "debug", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "javadoc", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-debug-javadoc.jar", + "url": "react-native-0.69.7-debug-javadoc.jar", + "size": 3760326, + "sha512": "d709ce3c0c2d6ebba82d79faaea82dc43d970613d09f190fcfd38e244374ca42d21c66bef8b70f77eea759c06e3f8764bf58f0a7972c473f8511c5278f56a8f1", + "sha256": "f7328c4e85a68f5224842eb311aaa7e58a71270350d67c2353f68433a1512aab", + "sha1": "5b4a335ff1cd4204ccaf4d148c10e6df2e793a9d", + "md5": "6fed2860240377c13c2dfe47e865147f" + } + ] + }, + { + "name": "releaseVariantDefaultApiPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "release", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-release.aar", + "url": "react-native-0.69.7-release.aar", + "size": 12446130, + "sha512": "e59ca2dfecfb781331f75b15d81ecfe79bdc885467d18b914369559895b1533f581c9534017eaf204f4b5a80e8b2ffa38752886274720e05112b6ef4e7d7df37", + "sha256": "53f880e0492954e12281638e29ccda6de7ebe457f190daec865d62d388be1d8a", + "sha1": "d795062a0b5ddaf3feafcd86e506998bb96922d8", + "md5": "9ca49e82a9a87481e096e564642195d6" + } + ] + }, + { + "name": "releaseVariantDefaultRuntimePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "release", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-release.aar", + "url": "react-native-0.69.7-release.aar", + "size": 12446130, + "sha512": "e59ca2dfecfb781331f75b15d81ecfe79bdc885467d18b914369559895b1533f581c9534017eaf204f4b5a80e8b2ffa38752886274720e05112b6ef4e7d7df37", + "sha256": "53f880e0492954e12281638e29ccda6de7ebe457f190daec865d62d388be1d8a", + "sha1": "d795062a0b5ddaf3feafcd86e506998bb96922d8", + "md5": "9ca49e82a9a87481e096e564642195d6" + } + ] + }, + { + "name": "releaseVariantDefaultSourcePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "release", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "sources", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-release-sources.jar", + "url": "react-native-0.69.7-release-sources.jar", + "size": 1029011, + "sha512": "4ba567d4a1a9758f38c129039b43d59f0483a9ba18982275c494cbb26e3a4c9dcaaa8b8b13009e680aa1828f9083c9b3419c578fdec916a89141feeae74d5cf9", + "sha256": "c9118f50148af7abe3463c9e9fe4503c092dc7ea637772c2f0daad9b1c84ca6f", + "sha1": "c226018553dc29d1a9235e3c0f135af18e6326a2", + "md5": "373616d80c61d09f461b638d0dc350e8" + } + ] + }, + { + "name": "releaseVariantDefaultJavaDocPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "release", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "javadoc", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-release-javadoc.jar", + "url": "react-native-0.69.7-release-javadoc.jar", + "size": 3753720, + "sha512": "628bae131d1d9a08211e69a99402520e9d22324b647e59282be4026c486df0a0d480032f14867d73321c773f595c67acc48c892d75be0264b3eb060d62f45291", + "sha256": "d83f7f5cfc72f8cff223104416e889cbbbb403b4202be2036b803538090439ba", + "sha1": "043e8435b7a1ac051311964df8326713f5549e13", + "md5": "f8539f3de2407544c38b473b0ddcfd9a" + } + ] + }, + { + "name": "qaVariantDefaultApiPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "qa", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-qa.aar", + "url": "react-native-0.69.7-qa.aar", + "size": 12446035, + "sha512": "70865ec0551a1647857851950512d44c053869055a0ad2cf855b5ef862e8f58792fba74f797333781bb8c74f6cfaf9a37fb3e22248c7c2289946ef4103d79058", + "sha256": "2feb9dcb05b56efe736bea4d3c4e7f7884ae85f6d060fd0d5b1acf9e5870a703", + "sha1": "2fadc151dea9bb8956f718a9b91a82555a7d45f2", + "md5": "beba8331ca807b5656e140e426bb0d8b" + } + ] + }, + { + "name": "qaVariantDefaultRuntimePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "qa", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-qa.aar", + "url": "react-native-0.69.7-qa.aar", + "size": 12446035, + "sha512": "70865ec0551a1647857851950512d44c053869055a0ad2cf855b5ef862e8f58792fba74f797333781bb8c74f6cfaf9a37fb3e22248c7c2289946ef4103d79058", + "sha256": "2feb9dcb05b56efe736bea4d3c4e7f7884ae85f6d060fd0d5b1acf9e5870a703", + "sha1": "2fadc151dea9bb8956f718a9b91a82555a7d45f2", + "md5": "beba8331ca807b5656e140e426bb0d8b" + } + ] + }, + { + "name": "qaVariantDefaultSourcePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "qa", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "sources", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-qa-sources.jar", + "url": "react-native-0.69.7-qa-sources.jar", + "size": 1029009, + "sha512": "0f39dfcc808a24f54e4a21a1a71a87dc6c12ae205b13a742cfa01a375766e9ca7792b9b62fa41a804dc53145c98dd6fc949213a57b76cbc7966ea7099df33e62", + "sha256": "9229718f34058940093c756c0f09b9ada520030c2eb4ffeb6bd93f279119f580", + "sha1": "f3841850fce5b79e6e8d67ca15951da319bb94fc", + "md5": "dbfedf36dc4472f222b28abfcea14f25" + } + ] + }, + { + "name": "qaVariantDefaultJavaDocPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "qa", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "javadoc", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-qa-javadoc.jar", + "url": "react-native-0.69.7-qa-javadoc.jar", + "size": 3761439, + "sha512": "97354efac2d7cc0a8b87cf7175e87e931154bf182304e31696feed20587c4e73ca38d339e4dd1f985e5e925ae2557010cea0da3345846480eeb3f47b8d2263d9", + "sha256": "07ca9a7c03900f59ee4452cc86668be283e8601b2fedece565898d7ca9f2ee28", + "sha1": "038be867c1cfceedc588a65463455f6180193d6e", + "md5": "f8bdbe63006deaf85cf5e4f79be3fe6a" + } + ] + }, + { + "name": "foxVariantDefaultApiPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "fox", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-api" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-fox.aar", + "url": "react-native-0.69.7-fox.aar", + "size": 12446077, + "sha512": "a3f891a9ef23c05c6f808324891018cd28ea4ddd1c1d98f49e5b7da29e303ee36bcf5db3452e59989dd900df1aa97b0cccf4014d6cb6ef5d2ad8b3b9f270c9d5", + "sha256": "81f2432d0fc1dd3af5433d8d50976126b48775dcd196aca814d8663df38685d3", + "sha1": "c94f5d6ca7830cf0093bc42604a27cda372029a9", + "md5": "b9f01e3c08dd9d6bdb78f202753720f5" + } + ] + }, + { + "name": "foxVariantDefaultRuntimePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "fox", + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.libraryelements": "aar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.facebook.infer.annotation", + "module": "infer-annotation", + "version": { + "requires": "0.18.0" + } + }, + { + "group": "com.facebook.yoga", + "module": "proguard-annotations", + "version": { + "requires": "1.19.0" + } + }, + { + "group": "javax.inject", + "module": "javax.inject", + "version": { + "requires": "1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.appcompat", + "module": "appcompat-resources", + "version": { + "requires": "1.4.1" + } + }, + { + "group": "androidx.autofill", + "module": "autofill", + "version": { + "requires": "1.1.0" + } + }, + { + "group": "androidx.swiperefreshlayout", + "module": "swiperefreshlayout", + "version": { + "requires": "1.0.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "fresco", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "imagepipeline-okhttp3", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.fresco", + "module": "ui-common", + "version": { + "requires": "2.5.0" + } + }, + { + "group": "com.facebook.soloader", + "module": "soloader", + "version": { + "requires": "0.10.4" + } + }, + { + "group": "com.google.code.findbugs", + "module": "jsr305", + "version": { + "requires": "3.0.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp-urlconnection", + "version": { + "requires": "4.9.2" + } + }, + { + "group": "com.squareup.okio", + "module": "okio", + "version": { + "requires": "2.9.0" + } + }, + { + "group": "com.facebook.fbjni", + "module": "fbjni-java-only", + "version": { + "requires": "0.2.2" + } + }, + { + "group": "org.jetbrains.kotlin", + "module": "kotlin-stdlib-jdk8", + "version": { + "requires": "1.6.10" + } + } + ], + "files": [ + { + "name": "react-native-0.69.7-fox.aar", + "url": "react-native-0.69.7-fox.aar", + "size": 12446077, + "sha512": "a3f891a9ef23c05c6f808324891018cd28ea4ddd1c1d98f49e5b7da29e303ee36bcf5db3452e59989dd900df1aa97b0cccf4014d6cb6ef5d2ad8b3b9f270c9d5", + "sha256": "81f2432d0fc1dd3af5433d8d50976126b48775dcd196aca814d8663df38685d3", + "sha1": "c94f5d6ca7830cf0093bc42604a27cda372029a9", + "md5": "b9f01e3c08dd9d6bdb78f202753720f5" + } + ] + }, + { + "name": "foxVariantDefaultSourcePublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "fox", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "sources", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-fox-sources.jar", + "url": "react-native-0.69.7-fox-sources.jar", + "size": 1029010, + "sha512": "1f737daeb527dd09761c9523c35b51eea61f9c0ee6f26aee1094ed9753a9f852b224e1fe702ea87e9f17f39f7f56c77cb69bd9468e6ae9648eff9a2497df6838", + "sha256": "38e581cac917bb829fb4478f301e9b450003692285cc239369fa427034a1ba78", + "sha1": "ea716be4cfdf35f55f2540aa236c8e549665a138", + "md5": "2716ba189042a56f6d93c53f725cc52f" + } + ] + }, + { + "name": "foxVariantDefaultJavaDocPublication", + "attributes": { + "com.android.build.api.attributes.BuildTypeAttr": "fox", + "org.gradle.category": "documentation", + "org.gradle.dependency.bundling": "external", + "org.gradle.docstype": "javadoc", + "org.gradle.usage": "java-runtime" + }, + "files": [ + { + "name": "react-native-0.69.7-fox-javadoc.jar", + "url": "react-native-0.69.7-fox-javadoc.jar", + "size": 3760211, + "sha512": "90c4f85ee1d5b878ff7b8c3af26b36c51bb173a862cb4ce23781012f569d5b8f1b06c7a5984fbcd1630f89b70703f4ea977c875834a6d891af754122c9a539d7", + "sha256": "a21f6882a6677a82c7c9b27890282be8f2719fd9abd044a7f7276481d31be79e", + "sha1": "1fb40750df26a4e28e5280475d2213231cd67c99", + "md5": "1a3495269b35e220b91ee22cd2c7b65e" + } + ] + } + ] +} diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.md5 new file mode 100644 index 00000000000000..c9fbed40d9725b --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.md5 @@ -0,0 +1 @@ +dff580dd7061a2a7fb1ac45160babc36 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha1 new file mode 100644 index 00000000000000..b3b391e74fddbf --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha1 @@ -0,0 +1 @@ +e4ffd61812804a5c3a9279ce55f4e7140641a66e \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha256 new file mode 100644 index 00000000000000..a4b0e271006d67 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha256 @@ -0,0 +1 @@ +189513ade608c95d0ef6c3e9cea28e0474f641e4fec5af6e348857e0dd0a1e16 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha512 new file mode 100644 index 00000000000000..1a27eda8a0337c --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.module.sha512 @@ -0,0 +1 @@ +48f65a7ddb8f685e96d20e8943fc1f291dce7517ae48151713ddc868902819140092c91f3775554886abae5e712b0a45baabd00b2b9b3929fb67b3775ad6c8c4 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom new file mode 100644 index 00000000000000..52db322f817f84 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom @@ -0,0 +1,156 @@ + + + + + + + + 4.0.0 + com.facebook.react + react-native + 0.69.7 + pom + ReactNative + A framework for building native apps with React + https://github.com/facebook/react-native + + + MIT License + https://github.com/facebook/react-native/blob/HEAD/LICENSE + repo + + + + + facebook + Facebook + + + + scm:git:https://github.com/facebook/react-native.git + scm:git:git@github.com:facebook/react-native.git + https://github.com/facebook/react-native.git + + + + com.facebook.infer.annotation + infer-annotation + 0.18.0 + compile + true + + + com.facebook.yoga + proguard-annotations + 1.19.0 + compile + true + + + javax.inject + javax.inject + 1 + compile + true + + + androidx.appcompat + appcompat + 1.4.1 + compile + true + + + androidx.appcompat + appcompat-resources + 1.4.1 + compile + true + + + androidx.autofill + autofill + 1.1.0 + compile + true + + + androidx.swiperefreshlayout + swiperefreshlayout + 1.0.0 + compile + true + + + com.facebook.fresco + fresco + 2.5.0 + compile + true + + + com.facebook.fresco + imagepipeline-okhttp3 + 2.5.0 + compile + true + + + com.facebook.fresco + ui-common + 2.5.0 + compile + true + + + com.facebook.soloader + soloader + 0.10.4 + compile + true + + + com.google.code.findbugs + jsr305 + 3.0.2 + compile + true + + + com.squareup.okhttp3 + okhttp + 4.9.2 + compile + true + + + com.squareup.okhttp3 + okhttp-urlconnection + 4.9.2 + compile + true + + + com.squareup.okio + okio + 2.9.0 + compile + true + + + com.facebook.fbjni + fbjni-java-only + 0.2.2 + compile + true + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + 1.6.10 + compile + true + + + diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.md5 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.md5 new file mode 100644 index 00000000000000..ad0d724327891c --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.md5 @@ -0,0 +1 @@ +6abc0edc29eff985f7fe5c76007687a4 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha1 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha1 new file mode 100644 index 00000000000000..9a86790298e505 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha1 @@ -0,0 +1 @@ +a6cf91b1f6492a741a00971d30d515d4262ec8c5 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha256 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha256 new file mode 100644 index 00000000000000..2abaf618a393f9 --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha256 @@ -0,0 +1 @@ +17b7012ab79ddb0bce529be27b1d65cc7b8a2b745ff9829e5d088079c6cc53c1 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha512 b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha512 new file mode 100644 index 00000000000000..0a76bbfcc0007d --- /dev/null +++ b/android/com/facebook/react/react-native/0.69.7/react-native-0.69.7.pom.sha512 @@ -0,0 +1 @@ +719f2437c0136548f48f12bca6bed27216dcbf20df70c72d7632041600af08c82675881fa9119ca996863db57f2bc54258523357970f93993b977b3d9ab7782a \ No newline at end of file diff --git a/android/com/facebook/react/react-native/maven-metadata.xml b/android/com/facebook/react/react-native/maven-metadata.xml new file mode 100644 index 00000000000000..cc73d60da09424 --- /dev/null +++ b/android/com/facebook/react/react-native/maven-metadata.xml @@ -0,0 +1,13 @@ + + + com.facebook.react + react-native + + 0.69.7 + 0.69.7 + + 0.69.7 + + 20221121110040 + + diff --git a/android/com/facebook/react/react-native/maven-metadata.xml.md5 b/android/com/facebook/react/react-native/maven-metadata.xml.md5 new file mode 100644 index 00000000000000..38db2c0bc4cbd7 --- /dev/null +++ b/android/com/facebook/react/react-native/maven-metadata.xml.md5 @@ -0,0 +1 @@ +490fbd88b02365ec1f38a5d6a0db8d8d \ No newline at end of file diff --git a/android/com/facebook/react/react-native/maven-metadata.xml.sha1 b/android/com/facebook/react/react-native/maven-metadata.xml.sha1 new file mode 100644 index 00000000000000..783d60ea46b346 --- /dev/null +++ b/android/com/facebook/react/react-native/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +ef244d9ff3d2ad83c16c50467ad3afbfeae0a835 \ No newline at end of file diff --git a/android/com/facebook/react/react-native/maven-metadata.xml.sha256 b/android/com/facebook/react/react-native/maven-metadata.xml.sha256 new file mode 100644 index 00000000000000..16b387a3e64fdb --- /dev/null +++ b/android/com/facebook/react/react-native/maven-metadata.xml.sha256 @@ -0,0 +1 @@ +da89a3113d2bf44b6b365b7d27420c835243a35b550bc09b0d18c08e76ecb28f \ No newline at end of file diff --git a/android/com/facebook/react/react-native/maven-metadata.xml.sha512 b/android/com/facebook/react/react-native/maven-metadata.xml.sha512 new file mode 100644 index 00000000000000..5c7f64f0cb8c36 --- /dev/null +++ b/android/com/facebook/react/react-native/maven-metadata.xml.sha512 @@ -0,0 +1 @@ +0c72fdbf5174fb3a8e95995eafdaff42b478803d3b27a330d65f025040a2062bfae9667c0a4f10770799d53a414af813704feab22280e1870768c919acbf1b59 \ No newline at end of file diff --git a/package.json b/package.json index c6e1ee1ffae9ee..004a7653b93a2a 100644 --- a/package.json +++ b/package.json @@ -189,4 +189,4 @@ } ] } -} \ No newline at end of file +} diff --git a/react.gradle b/react.gradle index 6644639a5dcfb3..9753e88c48f307 100644 --- a/react.gradle +++ b/react.gradle @@ -139,7 +139,11 @@ def enableHermesForVariant = config.enableHermesForVariant ?: { def hermesFlagsForVariant = config.hermesFlagsForVariant ?: { def variant -> def hermesFlags; - if (variant.name.toLowerCase().contains("release")) { + def targetName = variant.name.capitalize() + def generateSourceMap = config."generateSourceMapIn${targetName}" != null + ? config."generateSourceMapIn${targetName}" + : false + if (variant.name.toLowerCase().contains("release") || generateSourceMap) { // Can't use ?: since that will also substitute valid empty lists hermesFlags = config.hermesFlagsRelease if (hermesFlags == null) hermesFlags = ["-O", "-output-source-map"] @@ -155,7 +159,7 @@ def hermesFlagsForVariant = config.hermesFlagsForVariant ?: { def disableDevForVariant = config.disableDevForVariant ?: { def variant -> config."devDisabledIn${variant.name.capitalize()}" || - variant.name.toLowerCase().contains("release") + variant.name.toLowerCase().contains("release") || targetName.toLowerCase().contains("qa") || targetName.toLowerCase().contains("fox") } // Set bundleForVariant to a function to configure per variant, @@ -164,13 +168,13 @@ def bundleForVariant = config.bundleForVariant ?: { def variant -> config."bundleIn${variant.name.capitalize()}" || config."bundleIn${variant.buildType.name.capitalize()}" || - variant.name.toLowerCase().contains("release") + variant.name.toLowerCase().contains("release") || variant.name.toLowerCase().contains("qa") || variant.name.toLowerCase().contains("fox") } // Set deleteDebugFilesForVariant to a function to configure per variant, // defaults to True for Release variants and False for debug variants def deleteDebugFilesForVariant = config.deleteDebugFilesForVariant ?: { - def variant -> variant.name.toLowerCase().contains("release") + def variant -> variant.name.toLowerCase().contains("release") || variant.name.toLowerCase().contains("qa") || variant.name.toLowerCase().contains("fox") } android { @@ -477,4 +481,4 @@ project.rootProject.allprojects { force "com.facebook.react:hermes-engine:0.69.+" } } -} \ No newline at end of file +}