Skip to content

Commit

Permalink
Merge pull request #755 from grahammendick/fabric-state
Browse files Browse the repository at this point in the history
  • Loading branch information
grahammendick authored Dec 12, 2023
2 parents 152a7d2 + 5b85217 commit d1b95fd
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.uimanager.FabricViewStateManager;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.StateWrapper;
import com.facebook.react.uimanager.UIManagerHelper;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.events.Event;
import com.facebook.react.uimanager.events.EventDispatcher;
import com.facebook.react.uimanager.events.RCTEventEmitter;

public class ActionBarView extends ViewGroup implements FabricViewStateManager.HasFabricViewStateManager {
public class ActionBarView extends ViewGroup {
private boolean layoutRequested = false;
private final FabricViewStateManager fabricViewStateManager = new FabricViewStateManager();
private StateWrapper stateWrapper = null;

public ActionBarView(Context context) {
super(context);
Expand All @@ -43,9 +43,13 @@ void collapsed() {
eventDispatcher.dispatchEvent(new ActionBarView.CollapsedEvent(getId()));
}

public void setStateWrapper(StateWrapper stateWrapper) {
this.stateWrapper = stateWrapper;
}

void changeBounds(final int width, final int height, int oldw, int oldh) {
super.onSizeChanged(width, height, oldw, oldh);
if (fabricViewStateManager.hasStateWrapper()) {
if (stateWrapper != null) {
updateState(width, height);
} else {
final int viewTag = getId();
Expand All @@ -67,7 +71,7 @@ public void runGuarded() {
public void updateState(final int width, final int height) {
final float realWidth = PixelUtil.toDIPFromPixel(width);
final float realHeight = PixelUtil.toDIPFromPixel(height);
ReadableMap currentState = getFabricViewStateManager().getStateData();
ReadableMap currentState = stateWrapper.getStateData();
if (currentState != null) {
float delta = (float) 0.9;
float stateScreenHeight =
Expand All @@ -82,16 +86,12 @@ public void updateState(final int width, final int height) {
return;
}
}
fabricViewStateManager.setState(
new FabricViewStateManager.StateUpdateCallback() {
@Override
public WritableMap getStateUpdate() {
WritableMap map = new WritableNativeMap();
map.putDouble("frameWidth", realWidth);
map.putDouble("frameHeight", realHeight);
return map;
}
});
if (stateWrapper != null) {
WritableMap map = new WritableNativeMap();
map.putDouble("frameWidth", realWidth);
map.putDouble("frameHeight", realHeight);
stateWrapper.updateState(map);
}
}

@Override
Expand All @@ -114,11 +114,6 @@ public void run() {
}
};

@Override
public FabricViewStateManager getFabricViewStateManager() {
return fabricViewStateManager;
}

static class ExpandedEvent extends Event<ActionBarView.ExpandedEvent> {
public ExpandedEvent(int viewId) {
super(viewId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
@Override
public Object updateState(
ActionBarView view, ReactStylesDiffMap props, StateWrapper stateWrapper) {
view.getFabricViewStateManager().setStateWrapper(stateWrapper);
view.setStateWrapper(stateWrapper);
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public StateWrapper getStateWrapper() {

public void setStateWrapper(StateWrapper stateWrapper) {
sheetView.setStateWrapper(stateWrapper);
};
}

public void updateState(final int width, final int height) {
sheetView.updateState(width, height);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.uimanager.FabricViewStateManager;
import com.facebook.react.uimanager.PixelUtil;
import com.facebook.react.uimanager.StateWrapper;
import com.facebook.react.uimanager.UIManagerModule;

public class TitleBarView extends ViewGroup implements FabricViewStateManager.HasFabricViewStateManager {
public class TitleBarView extends ViewGroup {
private boolean layoutRequested = false;
private final FabricViewStateManager fabricViewStateManager = new FabricViewStateManager();
private StateWrapper stateWrapper = null;

public TitleBarView(Context context) {
super(context);
Expand All @@ -26,10 +26,14 @@ public TitleBarView(Context context) {
protected void onLayout(boolean changed, int l, int t, int r, int b) {
}

public void setStateWrapper(StateWrapper stateWrapper) {
this.stateWrapper = stateWrapper;
}

@Override
protected void onSizeChanged(final int w, final int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (fabricViewStateManager.hasStateWrapper()) {
if (stateWrapper != null) {
updateState(w, h);
} else {
final int viewTag = getId();
Expand All @@ -50,7 +54,7 @@ public void runGuarded() {
public void updateState(final int width, final int height) {
final float realWidth = PixelUtil.toDIPFromPixel(width);
final float realHeight = PixelUtil.toDIPFromPixel(height);
ReadableMap currentState = getFabricViewStateManager().getStateData();
ReadableMap currentState = stateWrapper.getStateData();
if (currentState != null) {
float delta = (float) 0.9;
float stateScreenHeight =
Expand All @@ -65,16 +69,12 @@ public void updateState(final int width, final int height) {
return;
}
}
fabricViewStateManager.setState(
new FabricViewStateManager.StateUpdateCallback() {
@Override
public WritableMap getStateUpdate() {
WritableMap map = new WritableNativeMap();
map.putDouble("frameWidth", realWidth);
map.putDouble("frameHeight", realHeight);
return map;
}
});
if (stateWrapper != null) {
WritableMap map = new WritableNativeMap();
map.putDouble("frameWidth", realWidth);
map.putDouble("frameHeight", realHeight);
stateWrapper.updateState(map);
}
}

@Override
Expand All @@ -96,9 +96,4 @@ public void run() {
layout(getLeft(), getTop(), getRight(), getBottom());
}
};

@Override
public FabricViewStateManager getFabricViewStateManager() {
return fabricViewStateManager;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ protected TitleBarView createViewInstance(@Nonnull ThemedReactContext reactConte
@Override
public Object updateState(
TitleBarView view, ReactStylesDiffMap props, StateWrapper stateWrapper) {
view.getFabricViewStateManager().setStateWrapper(stateWrapper);
view.setStateWrapper(stateWrapper);
return null;
}
}

0 comments on commit d1b95fd

Please sign in to comment.