22
22
import com .facebook .react .module .annotations .ReactModule ;
23
23
24
24
import static com .reactcommunity .rndatetimepicker .Common .dismissDialog ;
25
- import static com .reactcommunity .rndatetimepicker .KeepDateInRangeListener .isDateAfterMaxDate ;
26
- import static com .reactcommunity .rndatetimepicker .KeepDateInRangeListener .isDateBeforeMinDate ;
27
25
28
26
import java .util .Calendar ;
29
27
@@ -41,8 +39,9 @@ public DatePickerModule(ReactApplicationContext reactContext) {
41
39
super (reactContext );
42
40
}
43
41
42
+ @ NonNull
44
43
@ Override
45
- public @ NonNull String getName () {
44
+ public String getName () {
46
45
return NAME ;
47
46
}
48
47
@@ -60,38 +59,21 @@ public DatePickerDialogListener(final Promise promise, Bundle arguments) {
60
59
@ Override
61
60
public void onDateSet (DatePicker view , int year , int month , int day ) {
62
61
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
+
63
67
WritableMap result = new WritableNativeMap ();
64
68
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 ());
88
70
89
71
mPromise .resolve (result );
90
72
mPromiseResolved = true ;
91
73
}
92
74
}
93
75
94
- @ Override
76
+ @ Override
95
77
public void onDismiss (DialogInterface dialog ) {
96
78
if (!mPromiseResolved && getReactApplicationContext ().hasActiveReactInstance ()) {
97
79
WritableMap result = new WritableNativeMap ();
@@ -154,35 +136,32 @@ public void open(final ReadableMap options, final Promise promise) {
154
136
155
137
final FragmentManager fragmentManager = activity .getSupportFragmentManager ();
156
138
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 );
162
142
163
- if (oldFragment != null ) {
164
- oldFragment .update (createFragmentArguments (options ));
165
- return ;
166
- }
143
+ Bundle arguments = createFragmentArguments (options );
167
144
168
- RNDatePickerDialogFragment fragment = new RNDatePickerDialogFragment ();
145
+ if (oldFragment != null ) {
146
+ oldFragment .update (arguments );
147
+ return ;
148
+ }
169
149
170
- fragment . setArguments ( createFragmentArguments ( options ) );
150
+ RNDatePickerDialogFragment fragment = new RNDatePickerDialogFragment ( );
171
151
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 );
178
159
});
179
160
}
180
161
181
162
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
+
186
165
if (options .hasKey (RNConstants .ARG_MINDATE ) && !options .isNull (RNConstants .ARG_MINDATE )) {
187
166
args .putLong (RNConstants .ARG_MINDATE , (long ) options .getDouble (RNConstants .ARG_MINDATE ));
188
167
}
@@ -195,9 +174,7 @@ private Bundle createFragmentArguments(ReadableMap options) {
195
174
if (options .hasKey (RNConstants .ARG_DIALOG_BUTTONS ) && !options .isNull (RNConstants .ARG_DIALOG_BUTTONS )) {
196
175
args .putBundle (RNConstants .ARG_DIALOG_BUTTONS , Arguments .toBundle (options .getMap (RNConstants .ARG_DIALOG_BUTTONS )));
197
176
}
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
+
201
178
return args ;
202
179
}
203
180
}
0 commit comments