Skip to content

Commit 07e2855

Browse files
committed
feat: timezone support
1 parent fcb3558 commit 07e2855

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

CalendarManager/CalendarManager.m

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ - (EKEvent *)createEvent:(NSDictionary *)eventDetails {
3737
event.title = [RCTConvert NSString:eventDetails[@"name"]];
3838
event.location = [RCTConvert NSString:eventDetails[@"location"]];
3939

40+
NSString *timeZone = [RCTConvert NSString:eventDetails[@"timeZone"]];
41+
event.timeZone = timeZone ? [NSTimeZone timeZoneWithName:timeZone] : [NSTimeZone localTimeZone];
42+
4043
return event;
4144
}
4245

android/src/main/java/com/nearform/calendar/CalendarManagerModule.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.ActivityNotFoundException;
44
import android.content.Intent;
55
import android.provider.CalendarContract;
6+
import android.icu.util.TimeZone;
67

78
import com.facebook.react.bridge.Promise;
89
import com.facebook.react.bridge.ReactApplicationContext;
@@ -22,14 +23,22 @@ public String getName() {
2223
return "CalendarManager";
2324
}
2425

26+
private TimeZone getTimeZone(ReadableMap eventDetails) {
27+
return eventDetails.hasKey("timeZone") ? TimeZone.getTimeZone(eventDetails.getString("timeZone")) : TimeZone.getDefault();
28+
}
29+
2530
@ReactMethod
2631
public void addEvent(ReadableMap eventDetails, Promise promise) {
32+
final Double startTime = eventDetails.getDouble("startTime");
33+
final Double endTime = eventDetails.getDouble("endTime");
34+
2735
final Intent intent = new Intent(Intent.ACTION_INSERT)
2836
.setData(CalendarContract.Events.CONTENT_URI)
29-
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, eventDetails.getDouble("startTime").longValue())
30-
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, eventDetails.getDouble("endTime").longValue())
37+
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startTime.longValue())
38+
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.longValue())
3139
.putExtra(CalendarContract.Events.TITLE, eventDetails.getString("name"))
32-
.putExtra(CalendarContract.Events.EVENT_LOCATION, eventDetails.getString("location"));
40+
.putExtra(CalendarContract.Events.EVENT_LOCATION, eventDetails.getString("location"))
41+
.putExtra(CalendarContract.Events.EVENT_TIMEZONE, this.getTimeZone(eventDetails).getID());
3342

3443
try {
3544
getCurrentActivity().startActivity(intent);

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ type Event = {
33
location: string;
44
startTime: number;
55
endTime: number;
6+
timeZone?: string;
67
}
78

89
interface ReactNativeCalendarManager {

0 commit comments

Comments
 (0)