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
4b41d8fb
Commit
4b41d8fb
authored
May 11, 2017
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
working create and remove operations for Reminders API
parent
9849b7e7
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
124 additions
and
102 deletions
+124
-102
Sources/iOS/Capture/Capture.swift
+1
-1
Sources/iOS/Events/Reminders.swift
+123
-101
No files found.
Sources/iOS/Capture/Capture.swift
View file @
4b41d8fb
...
...
@@ -419,7 +419,7 @@ open class Capture: View {
return
activeCamera
!.
flashMode
}
set
(
value
)
{
var
error
:
Error
?
var
error
:
NS
Error
?
if
isFlashModeSupported
(
flashMode
:
flashMode
)
{
do
{
let
device
=
activeCamera
!
...
...
Sources/iOS/Events/Reminders.swift
View file @
4b41d8fb
...
...
@@ -36,63 +36,73 @@ public enum RemindersAuthorizationStatus: Int {
case
denied
}
@objc(RemindersPriority)
public
enum
RemindersPriority
:
Int
{
case
none
case
high
=
1
case
medium
=
5
case
low
=
9
}
@objc(RemindersDelegate)
public
protocol
RemindersDelegate
{
/**
A delegation method that is executed when the Reminder status is updated.
- Parameter reminders: A reference to the Reminder.
A delegation method that is executed when the Reminder
s
status is updated.
- Parameter reminders: A reference to the Reminder
s
.
- Parameter status: A reference to the ReminderAuthorizationStatus.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
status
:
RemindersAuthorizationStatus
)
/**
A delegation method that is executed when
Reminders
is authorized.
A delegation method that is executed when
reminders authorization
is authorized.
- Parameter reminders: A reference to the Reminders.
*/
@objc
optional
func
reminders
(
authorized
reminders
:
Reminders
)
/**
A delegation method that is executed when
Reminders
is denied.
A delegation method that is executed when
reminders authorization
is denied.
- Parameter reminders: A reference to the Reminders.
*/
@objc
optional
func
reminders
(
denied
reminders
:
Reminders
)
/**
A delegation method that is executed when a new
Reminders list
is created
A delegation method that is executed when a new
calendar
is created
- Parameter reminders: A reference to the Reminders.
- Parameter calendar: An optional reference to the calendar created.
- Parameter error: An optional error if the calendar failed to be created.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
calendar
:
EKCalendar
?,
error
:
Error
?)
optional
func
reminders
(
reminders
:
Reminders
,
c
reatedCalendar
c
alendar
:
EKCalendar
?,
error
:
Error
?)
/**
A delegation method that is executed when a new
Reminders list is created
A delegation method that is executed when a new
calendar is created.
- Parameter reminders: A reference to the Reminder.
- Parameter calendar: A reference to the calendar created.
- Parameter
deleted: A boolean describing if the operation succeeded or not
.
- Parameter
removed
calendar: A reference to the calendar created.
- Parameter
error: An optional error if the calendar failed to be removed
.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
calendar
:
EKCalendar
,
deleted
:
Bool
)
optional
func
reminders
(
reminders
:
Reminders
,
removedCalendar
calendar
:
EKCalendar
,
error
:
Error
?
)
/**
A delegation method that is executed when a new Reminders list is created
- Parameter reminders: A reference to the Reminder.
- Parameter created: A boolean describing if the operation succeeded or not.
A delegation method that is executed when a new reminder is created.
- Parameter reminders: A reference to the Reminders.
- Parameter calendar: An optional reference to the reminder created.
- Parameter error: An optional error if the reminder failed to be created.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
created
:
Bool
)
optional
func
reminders
(
reminders
:
Reminders
,
created
Reminder
reminder
:
EKReminder
?,
error
:
Error
?
)
/**
A delegation method that is executed when a new Reminders list is created
- Parameter reminders: A reference to the Reminder.
- Parameter deleted: A boolean describing if the operation succeeded or not.
- Parameter error: An optional error if the reminder failed to be removed.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
deleted
:
Bool
)
optional
func
reminders
(
reminders
:
Reminders
,
removedReminder
reminder
:
EKReminder
,
error
:
Error
?
)
}
@objc(Reminders)
...
...
@@ -279,32 +289,38 @@ extension Reminders {
}
completion
?(
success
?
calendar
:
nil
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
c
alendar
:
calendar
,
error
:
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
c
reatedCalendar
:
success
?
calendar
:
nil
,
error
:
error
)
}
}
}
/**
A method for
deleting existing Reminder lists
,
- Parameter calendar identifier:
the name of the list
.
A method for
removing existing calendar
,
- Parameter calendar identifier:
The EKCalendar identifier String
.
- Parameter completion: An optional completion call back.
*/
open
func
delet
e
(
calendar
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
open
func
remov
e
(
calendar
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
var
success
=
false
var
error
:
Error
?
guard
let
calendar
=
s
.
eventStore
.
calendar
(
withIdentifier
:
identifier
)
else
{
var
userInfo
=
[
String
:
Any
]()
userInfo
[
NSLocalizedDescriptionKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedFailureReasonErrorKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
error
=
NSError
(
domain
:
"com.cosmicmind.material.reminders"
,
code
:
0001
,
userInfo
:
userInfo
)
completion
?(
success
,
error
)
return
}
var
deleted
=
false
var
error
:
Error
?
do
{
try
s
.
eventStore
.
removeCalendar
(
calendar
,
commit
:
true
)
deleted
=
true
success
=
true
}
catch
let
e
{
error
=
e
}
...
...
@@ -314,88 +330,94 @@ extension Reminders {
return
}
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
calendar
:
calendar
,
deleted
:
deleted
)
completion
?(
deleted
,
error
)
completion
?(
success
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
removedCalendar
:
calendar
,
error
:
error
)
}
}
}
}
extension
Reminders
{
// // 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.
// if the list does not exist it will be added to the default reminders list.
// - Parameter completion: optional A completion call back
// */
// open func create(title: String, dateComponents: DateComponents, in calendar: EKCalendar? = nil, completion: ((Error?) -> Void)? = nil) {
// var reminderCal = [EKCalendar]()
//
// if calendar != nil {
// calendars(completion: { (calendars) in
// for v in calendars {
// if v.title == calendar!.title {
// reminderCal.append(calendar)
// }
// }
// })
// }
//
// let reminder = EKReminder(eventStore: eventStore)
// reminder.title = title
// reminder.dueDateComponents = dateComponents
// reminder.calendar = reminderCal.last!
//
// var created: Bool = false
// var error: Error?
//
// do {
// try eventStore.save(reminder, commit: true)
// created = true
// } catch let e {
// error = e
// }
//
// DispatchQueue.main.async { [weak self] in
// guard let s = self else {
// return
// }
//
// s.delegate?.reminders?(reminders: s, created: created)
//
// if let c = completion {
// c(error)
// }
// }
// }
//
// // 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.
// if the list does not exist it will be added to the default reminders list.
// - Parameter completion: An optional completion call back.
// */
// open func delete(reminder: EKReminder, completion: ((Error?) -> Void)? = nil) {
// var deleted: Bool = false
// var error: Error?
//
// do {
// try eventStore.remove(reminder, commit: true)
// deleted = true
// } catch let e {
// error = e
// }
//
// DispatchQueue.main.async { [weak self] in
// guard let s = self else {
// return
// }
//
// s.delegate?.reminders?(reminders: s, deleted: deleted)
//
// if let c = completion {
// c(error)
// }
// }
// }
// 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.
if the list does not exist it will be added to the default reminders list.
- Parameter completion: optional A completion call back
*/
open
func
create
(
reminder
title
:
String
,
calendar
:
EKCalendar
,
startDateComponents
:
DateComponents
?
=
nil
,
dueDateComponents
:
DateComponents
?
=
nil
,
priority
:
RemindersPriority
?
=
.
none
,
notes
:
String
?,
completion
:
((
EKReminder
?,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
calendar
=
calendar
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
let
reminder
=
EKReminder
(
eventStore
:
s
.
eventStore
)
reminder
.
title
=
title
reminder
.
calendar
=
calendar
reminder
.
startDateComponents
=
startDateComponents
reminder
.
dueDateComponents
=
dueDateComponents
reminder
.
priority
=
priority
?
.
rawValue
??
RemindersPriority
.
none
.
rawValue
reminder
.
notes
=
notes
var
success
=
false
var
error
:
Error
?
do
{
try
s
.
eventStore
.
save
(
reminder
,
commit
:
true
)
success
=
true
}
catch
let
e
{
error
=
e
}
DispatchQueue
.
main
.
async
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
completion
?(
success
?
reminder
:
nil
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
createdReminder
:
success
?
reminder
:
nil
,
error
:
error
)
}
}
}
/**
A method for removing existing reminder,
- Parameter reminder identifier: The EKReminder identifier String.
- Parameter completion: An optional completion call back.
*/
open
func
remove
(
reminder
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
var
success
=
false
var
error
:
Error
?
guard
let
reminder
=
s
.
eventStore
.
calendarItem
(
withIdentifier
:
identifier
)
as?
EKReminder
else
{
var
userInfo
=
[
String
:
Any
]()
userInfo
[
NSLocalizedDescriptionKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedFailureReasonErrorKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
error
=
NSError
(
domain
:
"com.cosmicmind.material.reminders"
,
code
:
0001
,
userInfo
:
userInfo
)
completion
?(
success
,
error
)
return
}
do
{
try
s
.
eventStore
.
remove
(
reminder
,
commit
:
true
)
success
=
true
}
catch
let
e
{
error
=
e
}
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
completion
?(
success
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
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