Merge lp:~renatofilho/ubuntu-calendar-app/handle-events-with-invalid-date into lp:ubuntu-calendar-app

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Arthur Mello
Approved revision: 830
Merged at revision: 830
Proposed branch: lp:~renatofilho/ubuntu-calendar-app/handle-events-with-invalid-date
Merge into: lp:ubuntu-calendar-app
Diff against target: 79 lines (+14/-31)
2 files modified
TimeLineBase.qml (+0/-29)
calendar_canvas.js (+14/-2)
To merge this branch: bzr merge lp:~renatofilho/ubuntu-calendar-app/handle-events-with-invalid-date
Reviewer Review Type Date Requested Status
Arthur Mello (community) Approve
Jenkins Bot continuous-integration Approve
Review via email: mp+293169@code.launchpad.net

Commit message

Make sure the app does not crash or freeze if an event contains invalid start/end time.

To post a comment you must log in.
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Arthur Mello (artmello) :
830. By Renato Araujo Oliveira Filho

check if since arg is valid.

Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Arthur Mello (artmello) wrote :

lgtm

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'TimeLineBase.qml'
2--- TimeLineBase.qml 2016-03-21 21:28:31 +0000
3+++ TimeLineBase.qml 2016-04-28 14:01:20 +0000
4@@ -85,35 +85,6 @@
5 var events = messageObject.reply
6 var dirty = false
7 for (var i=0; i < events.length; i++) {
8- var e = intern.eventsById[events[i].eventId]
9- if (e.eventId != events[i].itemId) {
10- console.warn("Event does not match id:", i)
11- dirty = true
12- }
13- if (e.startDateTime.getTime() != events[i].eventStartTime) {
14- console.warn("Event does not match start time")
15- dirty = true
16- }
17- if (isNaN(e.endDateTime.getTime())) {
18- if (events[i].eventEndTime != events[i].eventStartTime) {
19- // Events with same start and end time have empty end date
20- console.warn("Event does not match end time")
21- dirty = true
22- }
23- } else if (e.endDateTime.getTime() != events[i].eventEndTime) {
24- if ((e.endDateTime.getTime() - events[i].eventEndTime) > 3600000) {
25- // Events with same start and end time have lenght equal to 20 minutes
26- console.warn("Event does not match end time")
27- dirty = true
28- }
29- }
30-
31- if (dirty) {
32- console.warn("Mark as dirty")
33- intern.dirty = true
34- break
35- }
36-
37 createVisual(events[i])
38 }
39 }
40
41=== modified file 'calendar_canvas.js'
42--- calendar_canvas.js 2016-04-05 14:44:37 +0000
43+++ calendar_canvas.js 2016-04-28 14:01:20 +0000
44@@ -3,6 +3,16 @@
45
46 function minutesSince(since, until)
47 {
48+ if (isNaN(since.getTime())) {
49+ console.warn("Invalid since time:" + since)
50+ return 0
51+ }
52+
53+ if (isNaN(until.getTime())) {
54+ console.warn("Invalid until time:" + until)
55+ return 0
56+ }
57+
58 var sinceTime = new Date(since)
59 sinceTime.setSeconds(0)
60 var untilTime = new Date(until)
61@@ -39,14 +49,16 @@
62
63 var eventStartTimeInMinutes = minutesSince(date, event.startDateTime)
64 var eventEndTimeInMinutes = minutesSince(date, isNaN(event.endDateTime.getTime()) ? event.startDateTime : event.endDateTime)
65+ var startDateTime = isNaN(event.startDateTime.getTime()) ? date.getTime() : event.startDateTime.getTime()
66+ var endDateTime = isNaN(event.endDateTime.getTime()) ? startDateTime : event.endDateTime.getTime()
67
68 // avoid to draw events too small
69 if ((eventEndTimeInMinutes - eventStartTimeInMinutes) < 20)
70 eventEndTimeInMinutes = eventStartTimeInMinutes + 20
71
72 eventsInfo.push({'eventId': event.itemId,
73- 'eventStartTime': event.startDateTime.getTime(),
74- 'eventEndTime': isNaN(event.endDateTime.getTime()) ? event.startDateTime.getTime() : event.endDateTime.getTime(),
75+ 'eventStartTime': startDateTime,
76+ 'eventEndTime': endDateTime,
77 'startTime': eventStartTimeInMinutes,
78 'endTime': eventEndTimeInMinutes,
79 'endTimeInSecs': event.endDateTime.getTime(),

Subscribers

People subscribed via source and target branches

to status/vote changes: