2222import com .facebook .react .module .annotations .ReactModule ;
2323
2424import static com .reactcommunity .rndatetimepicker .Common .dismissDialog ;
25- import static com .reactcommunity .rndatetimepicker .KeepDateInRangeListener .isDateAfterMaxDate ;
26- import static com .reactcommunity .rndatetimepicker .KeepDateInRangeListener .isDateBeforeMinDate ;
2725
2826import java .util .Calendar ;
2927
@@ -41,8 +39,9 @@ public DatePickerModule(ReactApplicationContext reactContext) {
4139 super (reactContext );
4240 }
4341
42+ @ NonNull
4443 @ Override
45- public @ NonNull String getName () {
44+ public String getName () {
4645 return NAME ;
4746 }
4847
@@ -60,38 +59,21 @@ public DatePickerDialogListener(final Promise promise, Bundle arguments) {
6059 @ Override
6160 public void onDateSet (DatePicker view , int year , int month , int day ) {
6261 if (!mPromiseResolved && getReactApplicationContext ().hasActiveReactInstance ()) {
62+ final RNDate date = new RNDate (mArgs );
63+ Calendar calendar = Calendar .getInstance (Common .getTimeZone (mArgs ));
64+ calendar .set (year , month , day , date .hour (), date .minute (), 0 );
65+ calendar .set (Calendar .MILLISECOND , 0 );
66+
6367 WritableMap result = new WritableNativeMap ();
6468 result .putString ("action" , RNConstants .ACTION_DATE_SET );
65- result .putInt ("year" , year );
66- result .putInt ("month" , month );
67- result .putInt ("day" , day );
68-
69- // https://issuetracker.google.com/issues/169602180
70- // TODO revisit day, month, year with timezoneoffset fixes
71- if (isDateAfterMaxDate (mArgs , year , month , day )) {
72- Calendar maxDate = Calendar .getInstance ();
73- maxDate .setTimeInMillis (mArgs .getLong (RNConstants .ARG_MAXDATE ));
74-
75- result .putInt ("year" , maxDate .get (Calendar .YEAR ));
76- result .putInt ("month" , maxDate .get (Calendar .MONTH ) );
77- result .putInt ("day" , maxDate .get (Calendar .DAY_OF_MONTH ));
78- }
79-
80- if (isDateBeforeMinDate (mArgs , year , month , day )) {
81- Calendar minDate = Calendar .getInstance ();
82- minDate .setTimeInMillis (mArgs .getLong (RNConstants .ARG_MINDATE ));
83-
84- result .putInt ("year" , minDate .get (Calendar .YEAR ));
85- result .putInt ("month" , minDate .get (Calendar .MONTH ) );
86- result .putInt ("day" , minDate .get (Calendar .DAY_OF_MONTH ));
87- }
69+ result .putDouble ("timestamp" , calendar .getTimeInMillis ());
8870
8971 mPromise .resolve (result );
9072 mPromiseResolved = true ;
9173 }
9274 }
9375
94- @ Override
76+ @ Override
9577 public void onDismiss (DialogInterface dialog ) {
9678 if (!mPromiseResolved && getReactApplicationContext ().hasActiveReactInstance ()) {
9779 WritableMap result = new WritableNativeMap ();
@@ -154,35 +136,32 @@ public void open(final ReadableMap options, final Promise promise) {
154136
155137 final FragmentManager fragmentManager = activity .getSupportFragmentManager ();
156138
157- UiThreadUtil .runOnUiThread (new Runnable () {
158- @ Override
159- public void run () {
160- RNDatePickerDialogFragment oldFragment =
161- (RNDatePickerDialogFragment ) fragmentManager .findFragmentByTag (NAME );
139+ UiThreadUtil .runOnUiThread (() -> {
140+ RNDatePickerDialogFragment oldFragment =
141+ (RNDatePickerDialogFragment ) fragmentManager .findFragmentByTag (NAME );
162142
163- if (oldFragment != null ) {
164- oldFragment .update (createFragmentArguments (options ));
165- return ;
166- }
143+ Bundle arguments = createFragmentArguments (options );
167144
168- RNDatePickerDialogFragment fragment = new RNDatePickerDialogFragment ();
145+ if (oldFragment != null ) {
146+ oldFragment .update (arguments );
147+ return ;
148+ }
169149
170- fragment . setArguments ( createFragmentArguments ( options ) );
150+ RNDatePickerDialogFragment fragment = new RNDatePickerDialogFragment ( );
171151
172- final DatePickerDialogListener listener = new DatePickerDialogListener (promise , createFragmentArguments (options ));
173- fragment .setOnDismissListener (listener );
174- fragment .setOnDateSetListener (listener );
175- fragment .setOnNeutralButtonActionListener (listener );
176- fragment .show (fragmentManager , NAME );
177- }
152+ fragment .setArguments (arguments );
153+
154+ final DatePickerDialogListener listener = new DatePickerDialogListener (promise , arguments );
155+ fragment .setOnDismissListener (listener );
156+ fragment .setOnDateSetListener (listener );
157+ fragment .setOnNeutralButtonActionListener (listener );
158+ fragment .show (fragmentManager , NAME );
178159 });
179160 }
180161
181162 private Bundle createFragmentArguments (ReadableMap options ) {
182- final Bundle args = new Bundle ();
183- if (options .hasKey (RNConstants .ARG_VALUE ) && !options .isNull (RNConstants .ARG_VALUE )) {
184- args .putLong (RNConstants .ARG_VALUE , (long ) options .getDouble (RNConstants .ARG_VALUE ));
185- }
163+ final Bundle args = Common .createFragmentArguments (options );
164+
186165 if (options .hasKey (RNConstants .ARG_MINDATE ) && !options .isNull (RNConstants .ARG_MINDATE )) {
187166 args .putLong (RNConstants .ARG_MINDATE , (long ) options .getDouble (RNConstants .ARG_MINDATE ));
188167 }
@@ -195,9 +174,7 @@ private Bundle createFragmentArguments(ReadableMap options) {
195174 if (options .hasKey (RNConstants .ARG_DIALOG_BUTTONS ) && !options .isNull (RNConstants .ARG_DIALOG_BUTTONS )) {
196175 args .putBundle (RNConstants .ARG_DIALOG_BUTTONS , Arguments .toBundle (options .getMap (RNConstants .ARG_DIALOG_BUTTONS )));
197176 }
198- if (options .hasKey (RNConstants .ARG_TZOFFSET_MINS ) && !options .isNull (RNConstants .ARG_TZOFFSET_MINS )) {
199- args .putLong (RNConstants .ARG_TZOFFSET_MINS , (long ) options .getDouble (RNConstants .ARG_TZOFFSET_MINS ));
200- }
177+
201178 return args ;
202179 }
203180}
0 commit comments