Skip to content
This repository was archived by the owner on Apr 10, 2019. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 8 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ React Native date and time pickers for Android
#### Step 1 - NPM Install

```shell
npm install --save react-native-date
npm install --save react-native-date@https://github.com/juggleru/react-native-date.git --save
```
#### Step 2 - Update Gradle Settings

Expand Down Expand Up @@ -36,31 +36,17 @@ dependencies {
// file: android/app/source/main/java/com/{projectName}.MainActivity.java
...
import me.nucleartux.date.ReactDatePackage; // import
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity implements DefaultHardwareBackBtnHandler { // ! extends from FragmentActivity

private ReactInstanceManager mReactInstanceManager;
private ReactRootView mReactRootView;

...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.addPackage(new ReactDatePackage(this)) // register react date package here
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "AwesomeProject", null);
setContentView(mReactRootView);
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ReactDatePackage() // register react date package here
);
}
...

}
```

#### Step 5 - Require and use in Javascript
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@ repositories {
}

dependencies {
compile 'com.facebook.react:react-native:0.11.+'
}
compile 'com.facebook.react:react-native:0.19.+'
}
18 changes: 18 additions & 0 deletions src/main/java/me/nucleartux/date/DateFormatHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,22 @@ public static Calendar parseDate(String date) {

return initialDate;
}

public static Calendar parseDateInMilliseconds(long ms) {
Calendar initialDate = Calendar.getInstance();

if (ms > 0)
{
try
{
initialDate.setTimeInMillis(ms);
}
catch (Exception e)
{
return Calendar.getInstance();
}
}

return initialDate;
}
}
34 changes: 26 additions & 8 deletions src/main/java/me/nucleartux/date/DateModule.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
package me.nucleartux.date;

import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.app.Activity;
import android.app.DialogFragment;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;

public class DateModule extends ReactContextBaseJavaModule {
private FragmentActivity mActivity = null;

public DateModule(ReactApplicationContext reactContext, FragmentActivity activity) {
public DateModule(ReactApplicationContext reactContext) {
super(reactContext);
mActivity = activity;
}

@Override
Expand All @@ -31,7 +29,21 @@ public void showDatepickerWithInitialDate(String initialDateString, Callback err
Callback successCallback) {
DialogFragment dateDialog = new DatePicker(DateFormatHelper.parseDate(initialDateString),
errorCallback, successCallback);
dateDialog.show(mActivity.getSupportFragmentManager(), "datePicker");
Activity activity = getCurrentActivity();
if (activity != null) {
dateDialog.show(activity.getFragmentManager(), "datePicker");
}
}

@ReactMethod
public void showDatepickerWithInitialDateInMilliseconds(String initialDateString, Callback errorCallback,
Callback successCallback) {
DialogFragment dateDialog = new DatePicker(DateFormatHelper.parseDateInMilliseconds(Long.parseLong(initialDateString)),
errorCallback, successCallback);
Activity activity = getCurrentActivity();
if (activity != null) {
dateDialog.show(activity.getFragmentManager(), "datePicker");
}
}

@ReactMethod
Expand All @@ -42,7 +54,10 @@ public void showDatepickerWithInitialMinMaxDate(String initialDateString,
DateFormatHelper.parseDate(minDateString),
DateFormatHelper.parseDate(maxDateString),
errorCallback, successCallback);
dateDialog.show(mActivity.getSupportFragmentManager(), "datePicker");
Activity activity = getCurrentActivity();
if (activity != null) {
dateDialog.show(activity.getFragmentManager(), "datePicker");
}
}

@ReactMethod
Expand All @@ -55,6 +70,9 @@ public void showTimepickerWithInitialTime(String initialDateString, Callback err
Callback successCallback) {
DialogFragment dateDialog = new TimePicker(DateFormatHelper.parseDate(initialDateString),
errorCallback, successCallback);
dateDialog.show(mActivity.getSupportFragmentManager(), "timePicker");
Activity activity = getCurrentActivity();
if (activity != null) {
dateDialog.show(activity.getFragmentManager(), "timePicker");
}
}
}
2 changes: 1 addition & 1 deletion src/main/java/me/nucleartux/date/DatePicker.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.app.DialogFragment;

import com.facebook.react.bridge.Callback;

Expand Down
11 changes: 3 additions & 8 deletions src/main/java/me/nucleartux/date/ReactDatePackage.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package me.nucleartux.date;

import android.support.v4.app.FragmentActivity;
import android.app.Activity;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
Expand All @@ -13,17 +13,12 @@
import java.util.List;

public class ReactDatePackage implements ReactPackage {
private FragmentActivity mActivity = null;

public ReactDatePackage(FragmentActivity activity){
mActivity = activity;
}

@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new DateModule(reactContext, mActivity));
modules.add(new DateModule(reactContext));
return modules;
}

Expand All @@ -36,4 +31,4 @@ public List<Class<? extends JavaScriptModule>> createJSModules() {
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
}
2 changes: 1 addition & 1 deletion src/main/java/me/nucleartux/date/TimePicker.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.app.DialogFragment;
import android.text.format.DateFormat;

import com.facebook.react.bridge.Callback;
Expand Down