Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
Material
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitriy Stepanets
Material
Commits
dcbc1497
Unverified
Commit
dcbc1497
authored
May 15, 2017
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
development: added update methods for calendars and reminders in the Events API
parent
b884a306
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
138 additions
and
42 deletions
+138
-42
Sources/iOS/Events/Events.swift
+138
-42
No files found.
Sources/iOS/Events/Events.swift
View file @
dcbc1497
...
@@ -47,8 +47,9 @@ public enum EventsReminderPriority: Int {
...
@@ -47,8 +47,9 @@ public enum EventsReminderPriority: Int {
@objc(EventsDelegate)
@objc(EventsDelegate)
public
protocol
EventsDelegate
{
public
protocol
EventsDelegate
{
/**
/**
A delegation method that is executed when the Reminders status is updated.
A delegation method that is executed when the reminder authorization
- Parameter events: A reference to the Reminders.
status changes.
- Parameter events: A reference to the Events instance.
- Parameter status: A reference to the EventReminderAuthorizationStatus.
- Parameter status: A reference to the EventReminderAuthorizationStatus.
*/
*/
@objc
@objc
...
@@ -56,31 +57,40 @@ public protocol EventsDelegate {
...
@@ -56,31 +57,40 @@ public protocol EventsDelegate {
/**
/**
A delegation method that is executed when events authorization is authorized.
A delegation method that is executed when events authorization is authorized.
- Parameter events: A reference to the
Reminders
.
- Parameter events: A reference to the
Events instance
.
*/
*/
@objc
@objc
optional
func
eventsAuthorizedForReminders
(
events
:
Events
)
optional
func
eventsAuthorizedForReminders
(
events
:
Events
)
/**
/**
A delegation method that is executed when events authorization is denied.
A delegation method that is executed when events authorization is denied.
- Parameter events: A reference to the
Reminders
.
- Parameter events: A reference to the
Events instance
.
*/
*/
@objc
@objc
optional
func
eventsDeniedForReminders
(
events
:
Events
)
optional
func
eventsDeniedForReminders
(
events
:
Events
)
/**
/**
A delegation method that is executed when a new calendar is created
A delegation method that is executed when a new calendar is created
.
- Parameter events: A reference to the
Reminders
.
- Parameter events: A reference to the
Events instance
.
- Parameter calendar: An optional reference to the calendar created.
- Parameter c
reatedCalendar c
alendar: An optional reference to the calendar created.
- Parameter error: An optional error if the calendar failed to be created.
- Parameter error: An optional error if the calendar failed to be created.
*/
*/
@objc
@objc
optional
func
events
(
events
:
Events
,
createdCalendar
calendar
:
EKCalendar
?,
error
:
Error
?)
optional
func
events
(
events
:
Events
,
createdCalendar
calendar
:
EKCalendar
?,
error
:
Error
?)
/**
/**
A delegation method that is executed when a new calendar is created.
A delegation method that is executed when a calendar is updated.
- Parameter events: A reference to the Reminders.
- Parameter events: A reference to the Events instance.
- Parameter removed calendar: A reference to the calendar created.
- Parameter updatedCalendar calendar: A reference to the updated calendar.
- Parameter error: An optional error if the calendar failed to be updated.
*/
@objc
optional
func
events
(
events
:
Events
,
updatedCalendar
calendar
:
EKCalendar
,
error
:
Error
?)
/**
A delegation method that is executed when a calendar is removed.
- Parameter events: A reference to the Events instance.
- Parameter removedCalendar calendar: A reference to the calendar removed.
- Parameter error: An optional error if the calendar failed to be removed.
- Parameter error: An optional error if the calendar failed to be removed.
*/
*/
@objc
@objc
...
@@ -88,26 +98,35 @@ public protocol EventsDelegate {
...
@@ -88,26 +98,35 @@ public protocol EventsDelegate {
/**
/**
A delegation method that is executed when a new reminder is created.
A delegation method that is executed when a new reminder is created.
- Parameter events: A reference to the
Reminders
.
- Parameter events: A reference to the
Events instance
.
- Parameter c
alenda
r: An optional reference to the reminder created.
- Parameter c
reatedReminder reminde
r: An optional reference to the reminder created.
- Parameter error: An optional error if the reminder failed to be created.
- Parameter error: An optional error if the reminder failed to be created.
*/
*/
@objc
@objc
optional
func
events
(
events
:
Events
,
createdReminders
reminder
:
EKReminder
?,
error
:
Error
?)
optional
func
events
(
events
:
Events
,
createdReminder
reminder
:
EKReminder
?,
error
:
Error
?)
/**
A delegation method that is executed when a reminder is updated.
- Parameter events: A reference to the Events instance.
- Parameter updatedReminder reminder: A reference to the updated reminder.
- Parameter error: An optional error if the reminder failed to be updated.
*/
@objc
optional
func
events
(
events
:
Events
,
updatedReminder
reminder
:
EKReminder
,
error
:
Error
?)
/**
/**
A delegation method that is executed when a
new Reminders list is created
A delegation method that is executed when a
reminder is removed.
- Parameter events: A reference to the
Reminders
.
- Parameter events: A reference to the
Events instance
.
- Parameter
deleted: A boolean describing if the operation succeeded or not
.
- Parameter
removedReminder reminder: A reference to the removed reminder
.
- Parameter error: An optional error if the reminder failed to be removed.
- Parameter error: An optional error if the reminder failed to be removed.
*/
*/
@objc
@objc
optional
func
events
(
events
:
Events
,
removedReminder
s
reminder
:
EKReminder
,
error
:
Error
?)
optional
func
events
(
events
:
Events
,
removedReminder
reminder
:
EKReminder
,
error
:
Error
?)
}
}
@objc(Events)
@objc(Events)
open
class
Events
:
NSObject
{
open
class
Events
:
NSObject
{
/// A boolean indicating whether to commit or not.
/// A boolean indicating whether to commit
saves
or not.
fileprivate
var
isCommitted
=
true
fileprivate
var
isCommitted
=
true
/// A reference to the eventsStore.
/// A reference to the eventsStore.
...
@@ -118,10 +137,14 @@ open class Events: NSObject {
...
@@ -118,10 +137,14 @@ open class Events: NSObject {
return
.
authorized
==
EKEventStore
.
authorizationStatus
(
for
:
.
reminder
)
?
.
authorized
:
.
denied
return
.
authorized
==
EKEventStore
.
authorizationStatus
(
for
:
.
reminder
)
?
.
authorized
:
.
denied
}
}
/// A reference to a EventsDelegate.
/// A reference to a
n
EventsDelegate.
open
weak
var
delegate
:
EventsDelegate
?
open
weak
var
delegate
:
EventsDelegate
?
open
func
requestAuthorizationForReminders
(
_
completion
:
((
EventsReminderAuthorizationStatus
)
->
Void
)?
=
nil
)
{
/**
Requests authorization for reminders.
- Parameter completion: An optional completion callback.
*/
open
func
requestAuthorizationForReminders
(
completion
:
((
EventsReminderAuthorizationStatus
)
->
Void
)?
=
nil
)
{
eventStore
.
requestAccess
(
to
:
.
reminder
)
{
[
weak
self
,
completion
=
completion
]
(
isAuthorized
,
_
)
in
eventStore
.
requestAccess
(
to
:
.
reminder
)
{
[
weak
self
,
completion
=
completion
]
(
isAuthorized
,
_
)
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
guard
let
s
=
self
else
{
...
@@ -154,7 +177,10 @@ extension Events {
...
@@ -154,7 +177,10 @@ extension Events {
isCommitted
=
true
isCommitted
=
true
}
}
/// Commits the storage transaction.
/**
Commits the storage transaction.
- Parameter completion: A completion call back.
*/
open
func
commit
(
_
completion
:
((
Bool
,
Error
?)
->
Void
))
{
open
func
commit
(
_
completion
:
((
Bool
,
Error
?)
->
Void
))
{
reset
()
reset
()
...
@@ -182,8 +208,9 @@ extension Events {
...
@@ -182,8 +208,9 @@ extension Events {
}
}
/**
/**
Creates a predicate for the events Array of calendars that
Creates a predicate with a given start and end date for
are incomplete and have a given start and end date.
incomplete reminders. Providing a calendars Array narrows
the search.
- Parameter starting: A Date.
- Parameter starting: A Date.
- Parameter ending: A Date.
- Parameter ending: A Date.
- Parameter calendars: An optional Array of [EKCalendar].
- Parameter calendars: An optional Array of [EKCalendar].
...
@@ -193,8 +220,9 @@ extension Events {
...
@@ -193,8 +220,9 @@ extension Events {
}
}
/**
/**
Creates a predicate for the events Array of calendars that
Creates a predicate with a given start and end date for
are completed and have a given start and end date.
completed reminders. Providing a calendars Array narrows
the search.
- Parameter starting: A Date.
- Parameter starting: A Date.
- Parameter ending: A Date.
- Parameter ending: A Date.
- Parameter calendars: An optional Array of [EKCalendar].
- Parameter calendars: An optional Array of [EKCalendar].
...
@@ -206,7 +234,7 @@ extension Events {
...
@@ -206,7 +234,7 @@ extension Events {
extension
Events
{
extension
Events
{
/**
/**
A method for retrieving reminder calendars in alphabetical or
der.
Fetches all calendars for a given remin
der.
- Parameter completion: A completion call back
- Parameter completion: A completion call back
*/
*/
open
func
fetchCalendarsForReminders
(
_
completion
:
@escaping
([
EKCalendar
])
->
Void
)
{
open
func
fetchCalendarsForReminders
(
_
completion
:
@escaping
([
EKCalendar
])
->
Void
)
{
...
@@ -226,7 +254,7 @@ extension Events {
...
@@ -226,7 +254,7 @@ extension Events {
}
}
/**
/**
A method for retrieving events with a predicate in date sorted order
.
Fetches all reminders matching a given predicate
.
- Parameter predicate: A NSPredicate.
- Parameter predicate: A NSPredicate.
- Parameter completion: A completion call back.
- Parameter completion: A completion call back.
- Returns: A fetch events request identifier.
- Returns: A fetch events request identifier.
...
@@ -290,7 +318,7 @@ extension Events {
...
@@ -290,7 +318,7 @@ extension Events {
extension
Events
{
extension
Events
{
/**
/**
A method for creating new Reminders
calendar.
Creates a new reminder
calendar.
- Parameter calendar title: the name of the list.
- Parameter calendar title: the name of the list.
- Parameter completion: An optional completion call back.
- Parameter completion: An optional completion call back.
*/
*/
...
@@ -315,7 +343,7 @@ extension Events {
...
@@ -315,7 +343,7 @@ extension Events {
error
=
e
error
=
e
}
}
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
c
alendar
=
calendar
,
error
=
error
,
c
ompletion
=
completion
]
in
guard
let
s
=
self
else
{
guard
let
s
=
self
else
{
return
return
}
}
...
@@ -327,7 +355,39 @@ extension Events {
...
@@ -327,7 +355,39 @@ extension Events {
}
}
/**
/**
A method for removing existing calendar,
Updates a given calendar.
- Parameter calendar: An EKCalendar.
- Parameter completion: An optional completion call back.
*/
open
func
update
(
calendar
:
EKCalendar
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
calendar
=
calendar
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
var
success
=
false
var
error
:
Error
?
do
{
try
s
.
eventStore
.
saveCalendar
(
calendar
,
commit
:
s
.
isCommitted
)
success
=
true
}
catch
let
e
{
error
=
e
}
DispatchQueue
.
main
.
async
{
[
weak
self
,
calendar
=
calendar
,
error
=
error
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
completion
?(
success
,
error
)
s
.
delegate
?
.
events
?(
events
:
s
,
updatedCalendar
:
calendar
,
error
:
error
)
}
}
}
/**
Removes an existing calendar,
- Parameter calendar identifier: The EKCalendar identifier String.
- Parameter calendar identifier: The EKCalendar identifier String.
- Parameter completion: An optional completion call back.
- Parameter completion: An optional completion call back.
*/
*/
...
@@ -357,7 +417,7 @@ extension Events {
...
@@ -357,7 +417,7 @@ extension Events {
error
=
e
error
=
e
}
}
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
c
alendar
=
calendar
,
error
=
error
,
c
ompletion
=
completion
]
in
guard
let
s
=
self
else
{
guard
let
s
=
self
else
{
return
return
}
}
...
@@ -370,11 +430,15 @@ extension Events {
...
@@ -370,11 +430,15 @@ extension Events {
}
}
extension
Events
{
extension
Events
{
// FIX ME: Should we use the calendar identifier here instead of the title for finding the right cal?
/**
/**
A
method for adding
a new reminder to an optionally existing list.
A
dds
a new reminder to an optionally existing list.
if the list does not exist it will be added to the default events list.
if the list does not exist it will be added to the default events list.
- Parameter completion: optional A completion call back
- Parameter title: A String.
- Parameter calendar: An EKCalendar.
- Parameter startDateComponents: An optional DateComponents.
- Parameter dueDateComponents: An optional DateComponents.
- Parameter priority: An optional EventsReminderPriority.
- Parameter completion: An optional completion call back.
*/
*/
open
func
createReminder
(
title
:
String
,
calendar
:
EKCalendar
,
startDateComponents
:
DateComponents
?
=
nil
,
dueDateComponents
:
DateComponents
?
=
nil
,
priority
:
EventsReminderPriority
?
=
.
none
,
notes
:
String
?,
completion
:
((
EKReminder
?,
Error
?)
->
Void
)?
=
nil
)
{
open
func
createReminder
(
title
:
String
,
calendar
:
EKCalendar
,
startDateComponents
:
DateComponents
?
=
nil
,
dueDateComponents
:
DateComponents
?
=
nil
,
priority
:
EventsReminderPriority
?
=
.
none
,
notes
:
String
?,
completion
:
((
EKReminder
?,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
calendar
=
calendar
,
completion
=
completion
]
in
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
calendar
=
calendar
,
completion
=
completion
]
in
...
@@ -400,19 +464,51 @@ extension Events {
...
@@ -400,19 +464,51 @@ extension Events {
error
=
e
error
=
e
}
}
DispatchQueue
.
main
.
async
{
[
weak
self
]
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
reminder
=
reminder
,
error
=
error
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
guard
let
s
=
self
else
{
return
return
}
}
completion
?(
success
?
reminder
:
nil
,
error
)
completion
?(
success
?
reminder
:
nil
,
error
)
s
.
delegate
?
.
events
?(
events
:
s
,
createdReminder
s
:
success
?
reminder
:
nil
,
error
:
error
)
s
.
delegate
?
.
events
?(
events
:
s
,
createdReminder
:
success
?
reminder
:
nil
,
error
:
error
)
}
}
}
}
}
}
/**
/**
A method for removing existing reminder,
Updates a given reminder.
- Parameter reminder: An EKReminder.
- Parameter completion: An optional completion call back.
*/
open
func
update
(
reminder
:
EKReminder
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
reminder
=
reminder
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
var
success
=
false
var
error
:
Error
?
do
{
try
s
.
eventStore
.
save
(
reminder
,
commit
:
s
.
isCommitted
)
success
=
true
}
catch
let
e
{
error
=
e
}
DispatchQueue
.
main
.
async
{
[
weak
self
,
reminder
=
reminder
,
error
=
error
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
completion
?(
success
,
error
)
s
.
delegate
?
.
events
?(
events
:
s
,
updatedReminder
:
reminder
,
error
:
error
)
}
}
}
/**
Removes an existing reminder,
- Parameter reminder identifier: The EKReminders identifier String.
- Parameter reminder identifier: The EKReminders identifier String.
- Parameter completion: An optional completion call back.
- Parameter completion: An optional completion call back.
*/
*/
...
@@ -427,9 +523,9 @@ extension Events {
...
@@ -427,9 +523,9 @@ extension Events {
guard
let
reminder
=
s
.
eventStore
.
calendarItem
(
withIdentifier
:
identifier
)
as?
EKReminder
else
{
guard
let
reminder
=
s
.
eventStore
.
calendarItem
(
withIdentifier
:
identifier
)
as?
EKReminder
else
{
var
userInfo
=
[
String
:
Any
]()
var
userInfo
=
[
String
:
Any
]()
userInfo
[
NSLocalizedDescriptionKey
]
=
"[Material Error: Cannot remove
calenda
r with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedDescriptionKey
]
=
"[Material Error: Cannot remove
reminde
r with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedFailureReasonErrorKey
]
=
"[Material Error: Cannot remove
calenda
r with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedFailureReasonErrorKey
]
=
"[Material Error: Cannot remove
reminde
r with identifier
\(
identifier
)
.]"
error
=
NSError
(
domain
:
"com.cosmicmind.material.events"
,
code
:
000
1
,
userInfo
:
userInfo
)
error
=
NSError
(
domain
:
"com.cosmicmind.material.events"
,
code
:
000
2
,
userInfo
:
userInfo
)
completion
?(
success
,
error
)
completion
?(
success
,
error
)
return
return
...
@@ -442,13 +538,13 @@ extension Events {
...
@@ -442,13 +538,13 @@ extension Events {
error
=
e
error
=
e
}
}
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
reminder
=
reminder
,
error
=
error
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
guard
let
s
=
self
else
{
return
return
}
}
completion
?(
success
,
error
)
completion
?(
success
,
error
)
s
.
delegate
?
.
events
?(
events
:
s
,
removedReminder
s
:
reminder
,
error
:
error
)
s
.
delegate
?
.
events
?(
events
:
s
,
removedReminder
:
reminder
,
error
:
error
)
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment