From 5b07ee5cccefaa1a24d5360d6a24922f8d1f4aed Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Dall'Agnol Date: Mon, 19 Jun 2023 12:28:24 -0300 Subject: [PATCH] [android][ios] Upgrade @react-native-community/datetimepicker to 7.1.0 (#22894) # Why Upgrades `@react-native-community/datetimepicker` to `7.1.0` # How ```sh et uvm -m @react-native-community/datetimepicker -c "v7.1.0" yarn et pods -f ``` # Test Plan - [x] test using `bare-expo` Android + NCL DateTimePicker Example - [x] test using `bare-expo` iOS + NCL DateTimePickerExample - [x] test unversioned expo go ios + NCL DateTimePicker Example - [x] test unversioned expo go android + NCL DateTimePicker Example # Checklist - [x] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [x] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [x] This diff will work correctly for `expo prebuild` & EAS Build (eg: updated a module plugin). --- .../api/components/datetimepicker/Common.java | 2 +- ...ialogModule.java => DatePickerModule.java} | 20 ++--- .../NativeModuleDatePickerSpec.java | 36 ++++++++ .../NativeModuleTimePickerSpec.java | 36 ++++++++ .../RNDatePickerDialogFragment.java | 5 +- .../RNDateTimePickerPackage.java | 82 +++++++++++++++---- .../RNTimePickerDialogFragment.java | 4 +- ...ialogModule.java => TimePickerModule.java} | 20 ++--- apps/bare-expo/ios/Podfile.lock | 4 +- apps/bare-expo/package.json | 2 +- apps/native-component-list/package.json | 2 +- packages/expo/bundledNativeModules.json | 2 +- tools/src/vendoring/legacy.ts | 7 ++ yarn.lock | 8 +- 14 files changed, 179 insertions(+), 51 deletions(-) rename android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/{RNDatePickerDialogModule.java => DatePickerModule.java} (92%) create mode 100644 android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleDatePickerSpec.java create mode 100644 android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleTimePickerSpec.java rename android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/{RNTimePickerDialogModule.java => TimePickerModule.java} (90%) diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/Common.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/Common.java index 17b67ddd61d308..f9b7c7c6f863ba 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/Common.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/Common.java @@ -62,7 +62,7 @@ public static int getDefaultDialogButtonTextColor(@NonNull Context activity) { } @NonNull - public static DialogInterface.OnShowListener setButtonTextColor(@NonNull Context activityContext, final AlertDialog dialog, final Bundle args, final boolean needsColorOverride) { + public static DialogInterface.OnShowListener setButtonTextColor(@NonNull final Context activityContext, final AlertDialog dialog, final Bundle args, final boolean needsColorOverride) { return new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialogInterface) { diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogModule.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/DatePickerModule.java similarity index 92% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogModule.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/DatePickerModule.java index 55bb2174b28aa4..d71ec9924c19af 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogModule.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/DatePickerModule.java @@ -31,19 +31,19 @@ * {@link NativeModule} that allows JS to show a native date picker dialog and get called back when * the user selects a date. */ -@ReactModule(name = RNDatePickerDialogModule.FRAGMENT_TAG) -public class RNDatePickerDialogModule extends ReactContextBaseJavaModule { +@ReactModule(name = DatePickerModule.NAME) +public class DatePickerModule extends NativeModuleDatePickerSpec { @VisibleForTesting - public static final String FRAGMENT_TAG = "RNDatePickerAndroid"; + public static final String NAME = "RNDatePicker"; - public RNDatePickerDialogModule(ReactApplicationContext reactContext) { + public DatePickerModule(ReactApplicationContext reactContext) { super(reactContext); } @Override public @NonNull String getName() { - return RNDatePickerDialogModule.FRAGMENT_TAG; + return NAME; } private class DatePickerDialogListener implements OnDateSetListener, OnDismissListener, OnClickListener { @@ -115,7 +115,7 @@ public void onClick(DialogInterface dialog, int which) { @ReactMethod public void dismiss(Promise promise) { FragmentActivity activity = (FragmentActivity) getCurrentActivity(); - dismissDialog(activity, FRAGMENT_TAG, promise); + dismissDialog(activity, NAME, promise); } /** * Show a date picker dialog. @@ -147,8 +147,8 @@ public void open(final ReadableMap options, final Promise promise) { FragmentActivity activity = (FragmentActivity) getCurrentActivity(); if (activity == null) { promise.reject( - RNConstants.ERROR_NO_ACTIVITY, - "Tried to open a DatePicker dialog while not attached to an Activity"); + RNConstants.ERROR_NO_ACTIVITY, + "Tried to open a DatePicker dialog while not attached to an Activity"); return; } @@ -158,7 +158,7 @@ public void open(final ReadableMap options, final Promise promise) { @Override public void run() { RNDatePickerDialogFragment oldFragment = - (RNDatePickerDialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); + (RNDatePickerDialogFragment) fragmentManager.findFragmentByTag(NAME); if (oldFragment != null) { oldFragment.update(createFragmentArguments(options)); @@ -173,7 +173,7 @@ public void run() { fragment.setOnDismissListener(listener); fragment.setOnDateSetListener(listener); fragment.setOnNeutralButtonActionListener(listener); - fragment.show(fragmentManager, FRAGMENT_TAG); + fragment.show(fragmentManager, NAME); } }); } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleDatePickerSpec.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleDatePickerSpec.java new file mode 100644 index 00000000000000..d19402be8804a0 --- /dev/null +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleDatePickerSpec.java @@ -0,0 +1,36 @@ + +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Then it was commited. It is here to support the old architecture. + * If you use the new architecture, this file won't be included and instead will be generated by the codegen. + * + * @generated by codegen project: GenerateModuleJavaSpec.js + * + * @nolint + */ + +package versioned.host.exp.exponent.modules.api.components.datetimepicker; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.Promise; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReactModuleWithSpec; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.turbomodule.core.interfaces.TurboModule; + +public abstract class NativeModuleDatePickerSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { + public NativeModuleDatePickerSpec(ReactApplicationContext reactContext) { + super(reactContext); + } + + @ReactMethod + @DoNotStrip + public abstract void dismiss(Promise promise); + + @ReactMethod + @DoNotStrip + public abstract void open(ReadableMap params, Promise promise); +} diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleTimePickerSpec.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleTimePickerSpec.java new file mode 100644 index 00000000000000..4e1a54cb8aa0e9 --- /dev/null +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/NativeModuleTimePickerSpec.java @@ -0,0 +1,36 @@ + +/** + * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). + * + * Then it was commited. It is here to support the old architecture. + * If you use the new architecture, this file won't be included and instead will be generated by the codegen. + * + * @generated by codegen project: GenerateModuleJavaSpec.js + * + * @nolint + */ + +package versioned.host.exp.exponent.modules.api.components.datetimepicker; + +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.bridge.Promise; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReactModuleWithSpec; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.turbomodule.core.interfaces.TurboModule; + +public abstract class NativeModuleTimePickerSpec extends ReactContextBaseJavaModule implements ReactModuleWithSpec, TurboModule { + public NativeModuleTimePickerSpec(ReactApplicationContext reactContext) { + super(reactContext); + } + + @ReactMethod + @DoNotStrip + public abstract void dismiss(Promise promise); + + @ReactMethod + @DoNotStrip + public abstract void open(ReadableMap params, Promise promise); +} diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogFragment.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogFragment.java index ce6b1985add8e5..3e30bd0157826c 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogFragment.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDatePickerDialogFragment.java @@ -7,8 +7,6 @@ package versioned.host.exp.exponent.modules.api.components.datetimepicker; -import host.exp.expoview.R; - import static versioned.host.exp.exponent.modules.api.components.datetimepicker.Common.getDisplayDate; import static versioned.host.exp.exponent.modules.api.components.datetimepicker.Common.setButtonTextColor; import static versioned.host.exp.exponent.modules.api.components.datetimepicker.Common.setButtonTitles; @@ -27,12 +25,15 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; + import android.widget.DatePicker; import java.util.Calendar; import java.util.Locale; import java.util.TimeZone; +import host.exp.expoview.R; + @SuppressLint("ValidFragment") public class RNDatePickerDialogFragment extends DialogFragment { private DatePickerDialog instance; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDateTimePickerPackage.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDateTimePickerPackage.java index 483dd4d82d053e..76d71847e9f0df 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDateTimePickerPackage.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNDateTimePickerPackage.java @@ -1,25 +1,73 @@ package versioned.host.exp.exponent.modules.api.components.datetimepicker; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import com.facebook.react.ReactPackage; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.facebook.react.TurboReactPackage; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.uimanager.ViewManager; - -public class RNDateTimePickerPackage implements ReactPackage { - @Override - public List createNativeModules(ReactApplicationContext reactContext) { - return Arrays.asList( - new RNDatePickerDialogModule(reactContext), - new RNTimePickerDialogModule(reactContext) - ); - } +import com.facebook.react.module.model.ReactModuleInfo; +import com.facebook.react.module.model.ReactModuleInfoProvider; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; - @Override - public List createViewManagers(ReactApplicationContext reactContext) { - return Collections.emptyList(); +import host.exp.expoview.BuildConfig; + +public class RNDateTimePickerPackage extends TurboReactPackage { + @Nullable + @Override + public NativeModule getModule(String name, ReactApplicationContext reactContext) { + if (name.equals(DatePickerModule.NAME)) { + return new DatePickerModule(reactContext); + } else if (name.equals(TimePickerModule.NAME)) { + return new TimePickerModule(reactContext); + } else { + return null; } + } + + @Override + public ReactModuleInfoProvider getReactModuleInfoProvider() { + return () -> { + boolean isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + final Map moduleInfos = new HashMap<>(); + moduleInfos.put( + DatePickerModule.NAME, + new ReactModuleInfo( + DatePickerModule.NAME, + DatePickerModule.NAME, + false, // canOverrideExistingModule + false, // needsEagerInit + false, // hasConstants + false, // isCxxModule + isTurboModule // isTurboModule + )); + moduleInfos.put( + TimePickerModule.NAME, + new ReactModuleInfo( + TimePickerModule.NAME, + TimePickerModule.NAME, + false, // canOverrideExistingModule + false, // needsEagerInit + false, // hasConstants + false, // isCxxModule + isTurboModule // isTurboModule + )); + return moduleInfos; + }; + } + + @NonNull + @Override + public List createNativeModules(ReactApplicationContext reactContext) { + List modules = new ArrayList<>(); + modules.add(new DatePickerModule(reactContext)); + modules.add(new TimePickerModule(reactContext)); + + return modules; + } } diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogFragment.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogFragment.java index 1ce8522433ff92..049e36e5208b8e 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogFragment.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogFragment.java @@ -8,8 +8,6 @@ package versioned.host.exp.exponent.modules.api.components.datetimepicker; -import host.exp.expoview.R; - import static versioned.host.exp.exponent.modules.api.components.datetimepicker.Common.getDisplayTime; import static versioned.host.exp.exponent.modules.api.components.datetimepicker.Common.setButtonTextColor; import static versioned.host.exp.exponent.modules.api.components.datetimepicker.Common.setButtonTitles; @@ -28,6 +26,8 @@ import androidx.annotation.Nullable; import androidx.fragment.app.DialogFragment; +import host.exp.expoview.R; + @SuppressWarnings("ValidFragment") public class RNTimePickerDialogFragment extends DialogFragment { private TimePickerDialog instance; diff --git a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogModule.java b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/TimePickerModule.java similarity index 90% rename from android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogModule.java rename to android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/TimePickerModule.java index 044fd01d5493fd..0422d9ab8d9d62 100644 --- a/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/RNTimePickerDialogModule.java +++ b/android/expoview/src/main/java/versioned/host/exp/exponent/modules/api/components/datetimepicker/TimePickerModule.java @@ -29,20 +29,20 @@ * {@link NativeModule} that allows JS to show a native time picker dialog and get called back when * the user selects a time. */ -@ReactModule(name = RNTimePickerDialogModule.FRAGMENT_TAG) -public class RNTimePickerDialogModule extends ReactContextBaseJavaModule { +@ReactModule(name = TimePickerModule.NAME) +public class TimePickerModule extends NativeModuleTimePickerSpec { @VisibleForTesting - public static final String FRAGMENT_TAG = "RNTimePickerAndroid"; + public static final String NAME = "RNTimePicker"; - public RNTimePickerDialogModule(ReactApplicationContext reactContext) { + public TimePickerModule(ReactApplicationContext reactContext) { super(reactContext); } @NonNull @Override public String getName() { - return FRAGMENT_TAG; + return NAME; } private class TimePickerDialogListener implements OnTimeSetListener, OnDismissListener, OnClickListener { @@ -89,7 +89,7 @@ public void onClick(DialogInterface dialog, int which) { @ReactMethod public void dismiss(Promise promise) { FragmentActivity activity = (FragmentActivity) getCurrentActivity(); - dismissDialog(activity, FRAGMENT_TAG, promise); + dismissDialog(activity, NAME, promise); } @ReactMethod @@ -97,8 +97,8 @@ public void open(final ReadableMap options, final Promise promise) { FragmentActivity activity = (FragmentActivity) getCurrentActivity(); if (activity == null) { promise.reject( - RNConstants.ERROR_NO_ACTIVITY, - "Tried to open a TimePicker dialog while not attached to an Activity"); + RNConstants.ERROR_NO_ACTIVITY, + "Tried to open a TimePicker dialog while not attached to an Activity"); return; } // We want to support both android.app.Activity and the pre-Honeycomb FragmentActivity @@ -109,7 +109,7 @@ public void open(final ReadableMap options, final Promise promise) { @Override public void run() { RNTimePickerDialogFragment oldFragment = - (RNTimePickerDialogFragment) fragmentManager.findFragmentByTag(FRAGMENT_TAG); + (RNTimePickerDialogFragment) fragmentManager.findFragmentByTag(NAME); if (oldFragment != null) { oldFragment.update(createFragmentArguments(options)); @@ -124,7 +124,7 @@ public void run() { fragment.setOnDismissListener(listener); fragment.setOnTimeSetListener(listener); fragment.setOnNeutralButtonActionListener(listener); - fragment.show(fragmentManager, FRAGMENT_TAG); + fragment.show(fragmentManager, NAME); } }); } diff --git a/apps/bare-expo/ios/Podfile.lock b/apps/bare-expo/ios/Podfile.lock index ddab4992f88090..dec248b5166b11 100644 --- a/apps/bare-expo/ios/Podfile.lock +++ b/apps/bare-expo/ios/Podfile.lock @@ -802,7 +802,7 @@ PODS: - React-Core - RNCPicker (2.4.8): - React-Core - - RNDateTimePicker (6.7.3): + - RNDateTimePicker (7.1.0): - React-Core - RNFlashList (1.4.3): - React-Core @@ -1497,7 +1497,7 @@ SPEC CHECKSUMS: RNCAsyncStorage: ddc4ee162bfd41b0d2c68bf2d95acd81dd7f1f93 RNCMaskedView: 949696f25ec596bfc697fc88e6f95cf0c79669b6 RNCPicker: 0bf8ef8f7800524f32d2bb2a8bcadd53eda0ecd1 - RNDateTimePicker: 00247f26c34683c80be94207f488f6f13448586e + RNDateTimePicker: 7ecd54a97fc3749f38c3c89a171f6cbd52f3c142 RNFlashList: ade81b4e928ebd585dd492014d40fb8d0e848aab RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5 RNReanimated: b4f101902606e60b4b045e813e47204c2d7b38a7 diff --git a/apps/bare-expo/package.json b/apps/bare-expo/package.json index e1a60d73fcd4ae..5a55dfe94d270b 100644 --- a/apps/bare-expo/package.json +++ b/apps/bare-expo/package.json @@ -61,7 +61,7 @@ "dependencies": { "@babel/runtime": "^7.20.0", "@react-native-async-storage/async-storage": "1.18.2", - "@react-native-community/datetimepicker": "6.7.3", + "@react-native-community/datetimepicker": "7.1.0", "@react-native-community/netinfo": "9.3.10", "@react-native-community/slider": "4.4.2", "@react-native-masked-view/masked-view": "0.2.9", diff --git a/apps/native-component-list/package.json b/apps/native-component-list/package.json index d735058f47c783..3c839684c51679 100644 --- a/apps/native-component-list/package.json +++ b/apps/native-component-list/package.json @@ -43,7 +43,7 @@ "dependencies": { "@expo/react-native-action-sheet": "^3.8.0", "@react-native-async-storage/async-storage": "1.18.2", - "@react-native-community/datetimepicker": "6.7.3", + "@react-native-community/datetimepicker": "7.1.0", "@react-native-community/netinfo": "9.3.10", "@react-native-community/slider": "4.4.2", "@react-native-masked-view/masked-view": "0.2.9", diff --git a/packages/expo/bundledNativeModules.json b/packages/expo/bundledNativeModules.json index a31476be44d79b..f69cd5e9077a17 100644 --- a/packages/expo/bundledNativeModules.json +++ b/packages/expo/bundledNativeModules.json @@ -1,7 +1,7 @@ { "@expo/vector-icons": "^13.0.0", "@react-native-async-storage/async-storage": "1.18.2", - "@react-native-community/datetimepicker": "6.7.3", + "@react-native-community/datetimepicker": "7.1.0", "@react-native-masked-view/masked-view": "0.2.9", "@react-native-community/netinfo": "9.3.10", "@react-native-community/slider": "4.4.2", diff --git a/tools/src/vendoring/legacy.ts b/tools/src/vendoring/legacy.ts index 8b7789a166f94b..fce89b3dcb48c5 100644 --- a/tools/src/vendoring/legacy.ts +++ b/tools/src/vendoring/legacy.ts @@ -665,6 +665,13 @@ const vendoredModulesConfig: { [key: string]: VendoredModuleConfig } = { sourceAndroidPackage: 'com.reactcommunity.rndatetimepicker', targetAndroidPackage: 'versioned.host.exp.exponent.modules.api.components.datetimepicker', }, + { + sourceAndroidPath: 'android/src/paper/java/com/reactcommunity/rndatetimepicker', + targetAndroidPath: 'modules/api/components/datetimepicker', + sourceAndroidPackage: 'com.reactcommunity.rndatetimepicker', + targetAndroidPackage: 'versioned.host.exp.exponent.modules.api.components.datetimepicker', + cleanupTargetPath: false, + }, ], warnings: [ `NOTE: In Expo, native Android styles are prefixed with ${chalk.magenta( diff --git a/yarn.lock b/yarn.lock index 2b19481f60fbdf..ed1a962d86e137 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3296,10 +3296,10 @@ prompts "^2.4.0" semver "^6.3.0" -"@react-native-community/datetimepicker@6.7.3": - version "6.7.3" - resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-6.7.3.tgz#e6d75a42729265d8404d1d668c86926564abca2f" - integrity sha512-fXWbEdHMLW/e8cts3snEsbOTbnFXfUHeO2pkiDFX3fWpFoDtUrRWvn50xbY13IJUUKHDhoJ+mj24nMRVIXfX1A== +"@react-native-community/datetimepicker@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-7.1.0.tgz#627c2be65256c87b25bef0ca373e0d2aae69ece5" + integrity sha512-bXK1/UnutKgJMbHKcbh6TQN3GmzOWROo6Hc9z6tfVG6KIwq5MrdvxZTFJA97PB6xwW8p3v9ddkaSfkFa1pelPA== dependencies: invariant "^2.2.4"