Skip to content

Commit

Permalink
UIManager: Delete removeSubviewsFromContainerWithID (#42066)
Browse files Browse the repository at this point in the history
Summary:

We should just delete this UIManagerModule api:
- There are no usages of this api at Meta
- The only usages found on GitHub are from old forks of React Native: [GitHub search](https://github.com/search?q=removeSubviewsFromContainerWithID+language%3AJavaScript&type=code&p=5)

Changelog: [Android][Removed] - Delete UIManager.removeSubviewsFromContainerWithID

Reviewed By: sammy-SC

Differential Revision: D52345629
  • Loading branch information
RSNara authored and facebook-github-bot committed Jan 10, 2024
1 parent 1dd4365 commit 05eaf01
Show file tree
Hide file tree
Showing 8 changed files with 0 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -232,9 +232,6 @@ const UIManagerJS: UIManagerJSInterface & {[string]: any} = {
): void => {
raiseSoftError('configureNextLayoutAnimation');
},
removeSubviewsFromContainerWithID: (containerID: number): void => {
raiseSoftError('removeSubviewsFromContainerWithID');
},
replaceExistingNonRootView: (
reactTag: ?number,
newReactTag: ?number,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,6 @@ export interface Spec extends TurboModule {
callback: () => void, // check what is returned here
errorCallback: (error: Object) => void,
) => void;
+removeSubviewsFromContainerWithID: (containerID: number) => void;
+replaceExistingNonRootView: (
reactTag: ?number,
newReactTag: ?number,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ module.exports = [
'measureLayout',
'measureLayoutRelativeToParent',
'removeRootView',
'removeSubviewsFromContainerWithID',
'replaceExistingNonRootView',
'sendAccessibilityEvent',
'setChildren',
Expand Down
25 changes: 0 additions & 25 deletions packages/react-native/React/Modules/RCTUIManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -700,31 +700,6 @@ - (RCTViewManagerUIBlock)uiBlockWithLayoutUpdateForRootView:(RCTRootShadowView *
};
}

/**
* A method to be called from JS, which takes a container ID and then releases
* all subviews for that container upon receipt.
*/
RCT_EXPORT_METHOD(removeSubviewsFromContainerWithID : (nonnull NSNumber *)containerID)
{
RCTLogWarn(
@"RCTUIManager.removeSubviewsFromContainerWithID method is deprecated and it will not be implemented in newer versions of RN (Fabric) - T47686450");
id<RCTComponent> container = _shadowViewRegistry[containerID];
RCTAssert(container != nil, @"container view (for ID %@) not found", containerID);

NSUInteger subviewsCount = [container reactSubviews].count;
NSMutableArray<NSNumber *> *indices = [[NSMutableArray alloc] initWithCapacity:subviewsCount];
for (NSUInteger childIndex = 0; childIndex < subviewsCount; childIndex++) {
[indices addObject:@(childIndex)];
}

[self manageChildren:containerID
moveFromIndices:nil
moveToIndices:nil
addChildReactTags:nil
addAtIndices:nil
removeAtIndices:indices];
}

/**
* Disassociates children from container. Doesn't remove from registries.
* TODO: use [NSArray getObjects:buffer] to reuse same fast buffer each time.
Expand Down
3 changes: 0 additions & 3 deletions packages/react-native/ReactAndroid/api/ReactAndroid.api
Original file line number Diff line number Diff line change
Expand Up @@ -4861,7 +4861,6 @@ public class com/facebook/react/uimanager/UIImplementation {
public fun removeRootShadowNode (I)V
public fun removeRootView (I)V
protected final fun removeShadowNode (Lcom/facebook/react/uimanager/ReactShadowNode;)V
public fun removeSubviewsFromContainerWithID (I)V
public fun replaceExistingNonRootView (II)V
public fun resolveRootTagFromReactTag (I)I
public final fun resolveShadowNode (I)Lcom/facebook/react/uimanager/ReactShadowNode;
Expand Down Expand Up @@ -4949,7 +4948,6 @@ public class com/facebook/react/uimanager/UIManagerModule : com/facebook/react/b
public fun receiveEvent (IILjava/lang/String;Lcom/facebook/react/bridge/WritableMap;)V
public fun receiveEvent (ILjava/lang/String;Lcom/facebook/react/bridge/WritableMap;)V
public fun removeRootView (I)V
public fun removeSubviewsFromContainerWithID (I)V
public fun removeUIManagerEventListener (Lcom/facebook/react/bridge/UIManagerListener;)V
public fun removeUIManagerListener (Lcom/facebook/react/uimanager/UIManagerModuleListener;)V
public fun replaceExistingNonRootView (II)V
Expand Down Expand Up @@ -7739,4 +7737,3 @@ public class com/facebook/react/views/view/ViewGroupClickEvent : com/facebook/re
protected fun getEventData ()Lcom/facebook/react/bridge/WritableMap;
public fun getEventName ()Ljava/lang/String;
}

Original file line number Diff line number Diff line change
Expand Up @@ -480,27 +480,6 @@ public void replaceExistingNonRootView(int oldTag, int newTag) {
manageChildren(parent.getReactTag(), null, null, tagsToAdd, addAtIndices, indicesToRemove);
}

/**
* Method which takes a container tag and then releases all subviews for that container upon
* receipt. TODO: The method name is incorrect and will be renamed, #6033872
*
* @param containerTag the tag of the container for which the subviews must be removed
*/
public void removeSubviewsFromContainerWithID(int containerTag) {
ReactShadowNode containerNode = mShadowNodeRegistry.getNode(containerTag);
if (containerNode == null) {
throw new IllegalViewOperationException(
"Trying to remove subviews of an unknown view tag: " + containerTag);
}

WritableArray indicesToRemove = Arguments.createArray();
for (int childIndex = 0; childIndex < containerNode.getChildCount(); childIndex++) {
indicesToRemove.pushInt(childIndex);
}

manageChildren(containerTag, null, null, null, null, indicesToRemove);
}

/**
* Find the touch target child native view in the supplied root view hierarchy, given a react
* target location.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -499,19 +499,6 @@ public void replaceExistingNonRootView(int oldTag, int newTag) {
mUIImplementation.replaceExistingNonRootView(oldTag, newTag);
}

/**
* Method which takes a container tag and then releases all subviews for that container upon
* receipt.
*
* @param containerTag the tag of the container for which the subviews must be removed
* @deprecated This method will not be available in Fabric UIManager class.
*/
@ReactMethod
@Deprecated
public void removeSubviewsFromContainerWithID(int containerTag) {
mUIImplementation.removeSubviewsFromContainerWithID(containerTag);
}

/**
* Determines the location on screen, width, and height of the given view and returns the values
* via an async callback.
Expand Down
1 change: 0 additions & 1 deletion packages/react-native/jest/setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ jest
}),
measure: jest.fn(),
manageChildren: jest.fn(),
removeSubviewsFromContainerWithID: jest.fn(),
replaceExistingNonRootView: jest.fn(),
setChildren: jest.fn(),
updateView: jest.fn(),
Expand Down

0 comments on commit 05eaf01

Please sign in to comment.