mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-06-08 12:52:24 +00:00
fix: handle timezone properly for all-day events
This commit is contained in:
@@ -5,6 +5,7 @@ gi.require_version('EDataServer', '1.2')
|
|||||||
gi.require_version('ECal', '2.0')
|
gi.require_version('ECal', '2.0')
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
from gi.repository import ECal, EDataServer
|
from gi.repository import ECal, EDataServer
|
||||||
@@ -30,8 +31,8 @@ def safe_get_time(ical_time):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
if ical_time.is_date():
|
if ical_time.is_date():
|
||||||
dt = datetime(year, month, day, 0, 0, 0, tzinfo=timezone.utc)
|
local_struct = time.struct_time((year, month, day, 0, 0, 0, 0, 0, -1))
|
||||||
return int(dt.timestamp())
|
return int(time.mktime(local_struct))
|
||||||
|
|
||||||
hour = ical_time.get_hour()
|
hour = ical_time.get_hour()
|
||||||
minute = ical_time.get_minute()
|
minute = ical_time.get_minute()
|
||||||
|
|||||||
@@ -410,12 +410,12 @@ NPanel {
|
|||||||
return false
|
return false
|
||||||
|
|
||||||
const targetDate = new Date(year, month, day)
|
const targetDate = new Date(year, month, day)
|
||||||
const targetStart = Math.floor(new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate()).getTime() / 1000)
|
const targetStart = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate()).getTime() / 1000
|
||||||
const targetEnd = targetStart + 86400 // +24 hours
|
const targetEnd = targetStart + 86400 // +24 hours
|
||||||
|
|
||||||
return CalendarService.events.some(event => {
|
return CalendarService.events.some(event => {
|
||||||
// Check if event starts or overlaps with this day
|
// Check if event starts or overlaps with this day
|
||||||
return (event.start >= targetStart && event.start < targetEnd) || (event.end > targetStart && event.end < targetEnd) || (event.start <= targetStart && event.end >= targetEnd)
|
return (event.start >= targetStart && event.start < targetEnd) || (event.end > targetStart && event.end <= targetEnd) || (event.start < targetStart && event.end > targetEnd)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,7 +429,7 @@ NPanel {
|
|||||||
const targetEnd = targetStart + 86400 // +24 hours
|
const targetEnd = targetStart + 86400 // +24 hours
|
||||||
|
|
||||||
return CalendarService.events.filter(event => {
|
return CalendarService.events.filter(event => {
|
||||||
return (event.start >= targetStart && event.start < targetEnd) || +(event.end > targetStart && event.end < targetEnd) || +(event.start <= targetStart && event.end >= targetEnd)
|
return (event.start >= targetStart && event.start < targetEnd) || (event.end > targetStart && event.end <= targetEnd) || (event.start < targetStart && event.end > targetEnd)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user