From 6d0b53f0349c4c5d43e992e09bdfd666f7bdb907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= <crazyserver@gmail.com> Date: Fri, 22 Apr 2022 10:04:01 +0200 Subject: [PATCH] MOBILE-3881 timeline: Fix minimim time to get events from --- .../block/timeline/components/events/events.ts | 6 +++--- src/addons/block/timeline/services/timeline.ts | 16 +++++++++++++--- src/core/singletons/time.ts | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/addons/block/timeline/components/events/events.ts b/src/addons/block/timeline/components/events/events.ts index 4e0155873..fe986201f 100644 --- a/src/addons/block/timeline/components/events/events.ts +++ b/src/addons/block/timeline/components/events/events.ts @@ -18,10 +18,10 @@ import { CoreDomUtils } from '@services/utils/dom'; import { CoreTextUtils } from '@services/utils/text'; import { CoreTimeUtils } from '@services/utils/time'; import { CoreCourse } from '@features/course/services/course'; -import moment from 'moment'; import { CoreContentLinksHelper } from '@features/contentlinks/services/contentlinks-helper'; import { AddonCalendarEvent } from '@addons/calendar/services/calendar'; import { CoreEnrolledCourseDataWithOptions } from '@features/courses/services/courses-helper'; +import { AddonBlockTimeline } from '../../services/timeline'; /** * Directive to render a list of events in course overview. @@ -94,8 +94,8 @@ export class AddonBlockTimelineEventsComponent implements OnChanges { * @return Filtered events. */ protected async filterEventsByTime(start: number, end?: number): Promise<AddonBlockTimelineEvent[]> { - start = moment().add(start, 'days').startOf('day').unix(); - end = end !== undefined ? moment().add(end, 'days').startOf('day').unix() : end; + start = AddonBlockTimeline.getDayStart(start); + end = end !== undefined ? AddonBlockTimeline.getDayStart(end) : end; return await Promise.all(this.events.filter((event) => { if (end) { diff --git a/src/addons/block/timeline/services/timeline.ts b/src/addons/block/timeline/services/timeline.ts index 831c5c5c5..c37f36591 100644 --- a/src/addons/block/timeline/services/timeline.ts +++ b/src/addons/block/timeline/services/timeline.ts @@ -55,7 +55,7 @@ export class AddonBlockTimelineProvider { ): Promise<{ events: AddonCalendarEvent[]; canLoadMore?: number }> { const site = await CoreSites.getSite(siteId); - const time = moment().subtract(14, 'days').unix(); // Check two weeks ago. + const time = this.getDayStart(-14); // Check two weeks ago. const data: AddonCalendarGetActionEventsByCourseWSParams = { timesortfrom: time, @@ -109,7 +109,7 @@ export class AddonBlockTimelineProvider { ): Promise<{[courseId: string]: { events: AddonCalendarEvent[]; canLoadMore?: number } }> { const site = await CoreSites.getSite(siteId); - const time = moment().subtract(14, 'days').unix(); // Check two weeks ago. + const time = this.getDayStart(-14); // Check two weeks ago. const data: AddonCalendarGetActionEventsByCoursesWSParams = { timesortfrom: time, @@ -164,7 +164,7 @@ export class AddonBlockTimelineProvider { ): Promise<{ events: AddonCalendarEvent[]; canLoadMore?: number }> { const site = await CoreSites.getSite(siteId); - const timesortfrom = moment().subtract(14, 'days').unix(); // Check two weeks ago. + const timesortfrom = this.getDayStart(-14); // Check two weeks ago. const limitnum = AddonBlockTimelineProvider.EVENTS_LIMIT; const data: AddonCalendarGetActionEventsByTimesortWSParams = { @@ -275,6 +275,16 @@ export class AddonBlockTimelineProvider { }; } + /** + * Returns the timestamp at the start of the day with an optional offset. + * + * @param daysOffset Offset days to add or substract. + * @return timestamp. + */ + getDayStart(daysOffset = 0): number { + return moment().startOf('day').add(daysOffset, 'days').unix(); + } + } export const AddonBlockTimeline = makeSingleton(AddonBlockTimelineProvider); diff --git a/src/core/singletons/time.ts b/src/core/singletons/time.ts index 6b222937b..5c95ed837 100644 --- a/src/core/singletons/time.ts +++ b/src/core/singletons/time.ts @@ -81,7 +81,7 @@ export class CoreTime { /** * Converts a number of seconds into a short human readable format: minutes and seconds, in fromat: 3' 27''. * - * @param seconds Seconds + * @param duration Duration in seconds. * @return Short human readable text. */ static formatTimeShort(duration: number): string {