mirror of
https://github.com/zoriya/noctalia-shell.git
synced 2026-06-12 06:41:03 +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')
|
||||
import json
|
||||
import sys
|
||||
import time
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from gi.repository import ECal, EDataServer
|
||||
@@ -30,8 +31,8 @@ def safe_get_time(ical_time):
|
||||
return None
|
||||
|
||||
if ical_time.is_date():
|
||||
dt = datetime(year, month, day, 0, 0, 0, tzinfo=timezone.utc)
|
||||
return int(dt.timestamp())
|
||||
local_struct = time.struct_time((year, month, day, 0, 0, 0, 0, 0, -1))
|
||||
return int(time.mktime(local_struct))
|
||||
|
||||
hour = ical_time.get_hour()
|
||||
minute = ical_time.get_minute()
|
||||
|
||||
@@ -410,12 +410,12 @@ NPanel {
|
||||
return false
|
||||
|
||||
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
|
||||
|
||||
return CalendarService.events.some(event => {
|
||||
// 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
|
||||
|
||||
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