Skip to content

Commit b067df9

Browse files
authored
Release v3.0.1 (#113)
* [13091] [13092] Move schedule from attendee to member (#111) * [CoreSummit] [13091] Moves schedule from attendee to member model. * [CoreSummit] [13091] Fixes core data relationships types. * [CoreSummit] [13091] Fixes member json parsing. * [CoreSummit] [13091] Updates unit tests. * [CoreSummit] [13091] Changes member schedule endpoints. * [iOS] [13091] Moves schedule from attendee to schedule. * [iOS] [13092] Fixes member schedule UI logics. * [iOS] [13092] Fixes attendee order confirmation message. * [CoreSummit] [13204] Fixes VenueRoom data update. (#112) * [CoreSummit] [13204] Adds failing VenueRoom dataupdate unit test. * [CoreSummit] [13204] Makes VenueRoom floor optional. * [CoreSummit] [13224] Fixes empty schedule on Member managed object save. * [iOS] [13232] Always checks for latest summit on load. * [13258] Fixes schedule dates calculations using summit time zone. * [13269] Updates aerogear-ios-http dependency. OpenStack-mobile/aerogear-ios-http@60ed79d * Version bump. * [13258] Fixes tokens expiration date truncation on keychain save. OpenStack-mobile/aerogear-ios-oauth2@4bea335
1 parent 47dd0d9 commit b067df9

38 files changed

+549
-429
lines changed

Cartfile.resolved

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ github "OpenStack-Mobile/SlackTextViewController" "v1.9.5"
1313
github "OpenStack-Mobile/XCDYouTubeKit" "2.5.3"
1414
github "xmartlabs/XLPagerTabStrip" "7.0.0"
1515
github "OpenStack-Mobile/AFHorizontalDayPicker" "74c3521f935039b2b6e945380ecd06752076ec8a"
16-
github "OpenStack-Mobile/aerogear-ios-http" "baeeaf6947d1afb58e3235a732b50c5a58923cad"
17-
github "OpenStack-Mobile/aerogear-ios-oauth2" "6a134a2e68ea612960ba10e18524280aa69ca356"
16+
github "OpenStack-Mobile/aerogear-ios-http" "60ed79d74e53127efef9ba49fe5d777f40bf2719"
17+
github "OpenStack-Mobile/aerogear-ios-oauth2" "4bea335d4a9720d0f051eb59ff455a32bb87bb74"

OpenStack Summit/CoreSummit/Attendee.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ public struct Attendee: Unique {
1212

1313
public var member: Identifier
1414

15-
public var schedule: Set<Identifier>
16-
1715
public var tickets: Set<Identifier>
1816
}
1917

@@ -23,6 +21,5 @@ public func == (lhs: Attendee, rhs: Attendee) -> Bool {
2321

2422
return lhs.identifier == rhs.identifier
2523
&& lhs.member == rhs.member
26-
&& lhs.schedule == rhs.schedule
2724
&& lhs.tickets == rhs.tickets
2825
}

OpenStack Summit/CoreSummit/AttendeeJSON.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,12 @@ extension Attendee: JSONDecodable {
2323
guard let JSONObject = JSONValue.objectValue,
2424
let identifier = JSONObject[JSONKey.id.rawValue]?.integerValue,
2525
let member = JSONObject[JSONKey.member_id.rawValue]?.integerValue,
26-
let scheduledEventsJSONArray = JSONObject[JSONKey.schedule.rawValue]?.arrayValue,
27-
let scheduledEvents = Identifier.from(json: scheduledEventsJSONArray),
2826
let ticketsJSONArray = JSONObject[JSONKey.tickets.rawValue]?.arrayValue,
2927
let tickets = Identifier.from(json: ticketsJSONArray)
3028
else { return nil }
3129

3230
self.identifier = identifier
3331
self.member = member
34-
self.schedule = Set(scheduledEvents)
3532
self.tickets = Set(tickets)
3633
}
3734
}

OpenStack Summit/CoreSummit/AttendeeManagedObject.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ public final class AttendeeManagedObject: Entity {
1313

1414
@NSManaged public var member: MemberManagedObject
1515

16-
@NSManaged public var schedule: Set<EventManagedObject>
17-
1816
@NSManaged public var tickets: Set<TicketTypeManagedObject>
1917
}
2018

@@ -25,7 +23,6 @@ extension Attendee: CoreDataDecodable {
2523
self.identifier = managedObject.id
2624
self.member = managedObject.member.id
2725
self.tickets = managedObject.tickets.identifiers
28-
self.schedule = managedObject.schedule.identifiers
2926
}
3027
}
3128

@@ -37,7 +34,6 @@ extension Attendee: CoreDataEncodable {
3734

3835
managedObject.member = try context.relationshipFault(member)
3936
managedObject.tickets = try context.relationshipFault(tickets)
40-
managedObject.schedule = try context.relationshipFault(schedule)
4137

4238
managedObject.didCache()
4339

OpenStack Summit/CoreSummit/DataUpdate.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public extension Store {
145145
guard dataUpdate.className != .MySchedule else {
146146

147147
// should only get for authenticated requests
148-
guard let attendeeRole = authenticatedMember?.attendeeRole
148+
guard let member = authenticatedMember
149149
else { return false }
150150

151151
switch dataUpdate.operation {
@@ -159,7 +159,7 @@ public extension Store {
159159

160160
let eventManagedObject = try event.write(context, summit: summit) as! EventManagedObject
161161

162-
attendeeRole.schedule.insert(eventManagedObject)
162+
member.schedule.insert(eventManagedObject)
163163

164164
return true
165165

@@ -171,7 +171,7 @@ public extension Store {
171171

172172
if let eventManagedObject = try EventManagedObject.find(identifier, context: context) {
173173

174-
attendeeRole.schedule.remove(eventManagedObject)
174+
member.schedule.remove(eventManagedObject)
175175
}
176176

177177
return true

OpenStack Summit/CoreSummit/EventManagedObject.swift

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public final class EventManagedObject: Entity {
5858

5959
// MARK: - Inverse Relationhips
6060

61-
@NSManaged public var attendees: Set<AttendeeManagedObject>
61+
@NSManaged public var members: Set<MemberManagedObject>
6262
}
6363

6464
// MARK: - Encoding
@@ -205,14 +205,6 @@ public extension EventManagedObject {
205205

206206
switch date {
207207

208-
case .now:
209-
210-
let now = Date()
211-
212-
//datePredicate = NSPredicate(format: "start <= %@ AND end >= %@", now, now)
213-
datePredicate = #keyPath(EventManagedObject.start) <= now
214-
&& #keyPath(EventManagedObject.end) >= now
215-
216208
case let .interval(start, end):
217209

218210
//datePredicate = NSPredicate(format: "end >= %@ AND end <= %@", start, end)
@@ -288,7 +280,6 @@ public extension EventManagedObject {
288280

289281
public enum DateFilter {
290282

291-
case now
292283
case interval(start: Date, end: Date)
293284
}
294285
}

OpenStack Summit/CoreSummit/EventScheduleRequest.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public extension Store {
2626
summitID = "current"
2727
}
2828

29-
let uri = "/api/v1/summits/\(summitID)/attendees/me/schedule/\(event)"
29+
let uri = "/api/v1/summits/\(summitID)/members/me/schedule/\(event)"
3030

3131
let url = environment.configuration.serverURL + uri
3232

@@ -43,10 +43,10 @@ public extension Store {
4343
// cache
4444
try! context.performErrorBlockAndWait {
4545

46-
if let attendee = try self.authenticatedMember(context)?.attendeeRole,
46+
if let member = try self.authenticatedMember(context),
4747
let eventManagedObject = try EventManagedObject.find(event, context: context) {
4848

49-
attendee.schedule.insert(eventManagedObject)
49+
member.schedule.insert(eventManagedObject)
5050

5151
try context.save()
5252
}
@@ -69,7 +69,7 @@ public extension Store {
6969
summitID = "current"
7070
}
7171

72-
let uri = "/api/v1/summits/\(summitID)/attendees/me/schedule/\(event)"
72+
let uri = "/api/v1/summits/\(summitID)/members/me/schedule/\(event)"
7373

7474
let url = environment.configuration.serverURL + uri
7575

@@ -86,10 +86,10 @@ public extension Store {
8686
// cache
8787
try! context.performErrorBlockAndWait {
8888

89-
if let attendee = try self.authenticatedMember(context)?.attendeeRole,
89+
if let member = try self.authenticatedMember(context),
9090
let eventManagedObject = try EventManagedObject.find(event, context: context) {
9191

92-
attendee.schedule.remove(eventManagedObject)
92+
member.schedule.remove(eventManagedObject)
9393

9494
try context.save()
9595
}
@@ -112,7 +112,7 @@ public extension Store {
112112
summitID = "current"
113113
}
114114

115-
let uri = "/api/v1/summits/\(summitID)/attendees/me/schedule/\(event)/rsvp"
115+
let uri = "/api/v1/summits/\(summitID)/members/me/schedule/\(event)/rsvp"
116116

117117
let url = environment.configuration.serverURL + uri
118118

@@ -129,10 +129,10 @@ public extension Store {
129129
// cache
130130
try! context.performErrorBlockAndWait {
131131

132-
if let attendee = try self.authenticatedMember(context)?.attendeeRole,
132+
if let member = try self.authenticatedMember(context),
133133
let eventManagedObject = try EventManagedObject.find(event, context: context) {
134134

135-
attendee.schedule.remove(eventManagedObject)
135+
member.schedule.remove(eventManagedObject)
136136

137137
try context.save()
138138
}

OpenStack Summit/CoreSummit/Member.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public struct Member: Named {
3232

3333
public let attendeeRole: Attendee?
3434

35+
public var schedule: Set<Identifier>
36+
3537
public let groupEvents: Set<Identifier>
3638

3739
public let favoriteEvents: Set<Identifier>
@@ -56,6 +58,7 @@ public func == (lhs: Member, rhs: Member) -> Bool {
5658
&& lhs.linkedIn == rhs.linkedIn
5759
&& lhs.speakerRole == rhs.speakerRole
5860
&& lhs.attendeeRole == rhs.attendeeRole
61+
&& lhs.schedule == rhs.schedule
5962
&& lhs.groups == rhs.groups
6063
&& lhs.groupEvents == rhs.groupEvents
6164
&& lhs.favoriteEvents == rhs.favoriteEvents

OpenStack Summit/CoreSummit/MemberJSON.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ private extension Member {
1313

1414
enum JSONKey: String {
1515

16-
case id, first_name, last_name, gender, title, bio, irc, twitter, linked_in, member_id, pic, speaker, schedule, groups_events, groups, attendee, feedback, favorite_summit_events, affiliations
16+
case id, first_name, last_name, gender, title, bio, irc, twitter, linked_in, member_id, pic, speaker, schedule_summit_events, groups_events, groups, attendee, feedback, favorite_summit_events, affiliations
1717
}
1818
}
1919

@@ -79,6 +79,7 @@ extension Member: JSONDecodable {
7979

8080
// not in this JSON response
8181
self.attendeeRole = nil
82+
self.schedule = []
8283
self.feedback = []
8384
self.groupEvents = []
8485
self.favoriteEvents = []
@@ -96,6 +97,8 @@ extension MemberResponse.Member: JSONDecodable {
9697
let firstName = JSONObject[JSONKey.first_name.rawValue]?.rawValue as? String,
9798
let lastName = JSONObject[JSONKey.last_name.rawValue]?.rawValue as? String,
9899
let picture = JSONObject[JSONKey.pic.rawValue]?.urlValue,
100+
let scheduledEventsJSONArray = JSONObject[JSONKey.schedule_summit_events.rawValue]?.arrayValue,
101+
let scheduledEvents = Identifier.from(json: scheduledEventsJSONArray),
99102
let groupsJSONArray = JSONObject[JSONKey.groups.rawValue]?.arrayValue,
100103
let groups = Group.from(json: groupsJSONArray),
101104
let groupEventsJSONArray = JSONObject[JSONKey.groups_events.rawValue]?.arrayValue,
@@ -110,6 +113,7 @@ extension MemberResponse.Member: JSONDecodable {
110113
self.firstName = firstName
111114
self.lastName = lastName
112115
self.picture = picture
116+
self.schedule = Set(scheduledEvents)
113117
self.groups = groups
114118
self.groupEvents = groupEvents
115119
self.feedback = feedback

OpenStack Summit/CoreSummit/MemberManagedObject.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public final class MemberManagedObject: Entity {
3232

3333
@NSManaged public var attendeeRole: AttendeeManagedObject?
3434

35+
@NSManaged public var schedule: Set<EventManagedObject>
36+
3537
@NSManaged public var groups: Set<GroupManagedObject>
3638

3739
@NSManaged public var groupEvents: Set<EventManagedObject>
@@ -58,6 +60,7 @@ extension Member: CoreDataDecodable {
5860
self.linkedIn = managedObject.linkedIn
5961
self.biography = managedObject.biography
6062
self.gender = managedObject.gender
63+
self.schedule = managedObject.schedule.identifiers
6164
self.groups = Group.from(managedObjects: managedObject.groups)
6265
self.feedback = managedObject.feedback.identifiers
6366
self.groupEvents = managedObject.groupEvents.identifiers
@@ -98,6 +101,7 @@ extension Member: CoreDataEncodable {
98101
managedObject.linkedIn = linkedIn
99102
managedObject.biography = biography
100103
managedObject.gender = gender
104+
managedObject.schedule = try context.relationshipFault(schedule)
101105
managedObject.groups = try context.relationshipFault(groups)
102106
managedObject.affiliations = try context.relationshipFault(affiliations)
103107

@@ -134,6 +138,7 @@ extension MemberResponse.Member: CoreDataEncodable {
134138
managedObject.biography = biography
135139
managedObject.gender = gender
136140

141+
managedObject.schedule = try context.relationshipFault(schedule)
137142
managedObject.speakerRole = try context.relationshipFault(speakerRole)
138143
managedObject.attendeeRole = try context.relationshipFault(attendeeRole)
139144
managedObject.groups = try context.relationshipFault(Set(groups))
@@ -155,7 +160,7 @@ public extension MemberManagedObject {
155160
@inline(__always)
156161
func isScheduled(event: Identifier) -> Bool {
157162

158-
return attendeeRole?.schedule.contains(where: { $0.id == event }) ?? false
163+
return schedule.contains(where: { $0.id == event })
159164
}
160165

161166
@inline(__always)
@@ -204,6 +209,6 @@ public extension Store {
204209
@inline(__always)
205210
func isEventScheduledByLoggedMember(event eventID: Identifier) -> Bool {
206211

207-
return self.authenticatedMember?.attendeeRole?.schedule.contains(where: { $0.id == eventID }) ?? false
212+
return self.authenticatedMember?.schedule.contains(where: { $0.id == eventID }) ?? false
208213
}
209214
}

0 commit comments

Comments
 (0)