Clearer periods in videos list

This commit is contained in:
Chocobozzz 2020-11-18 12:12:14 +01:00
parent 875f0610e4
commit 4166caabc6
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 49 additions and 45 deletions

View File

@ -8,27 +8,27 @@ export class FromNowPipe implements PipeTransform {
const argDate = new Date(arg)
const seconds = Math.floor((Date.now() - argDate.getTime()) / 1000)
let interval = Math.floor(seconds / 31536000)
let interval = Math.round(seconds / 31536000)
if (interval > 1) return $localize`${interval} years ago`
if (interval === 1) return $localize`${interval} year ago`
interval = Math.floor(seconds / 2592000)
interval = Math.round(seconds / 2592000)
if (interval > 1) return $localize`${interval} months ago`
if (interval === 1) return $localize`${interval} month ago`
interval = Math.floor(seconds / 604800)
interval = Math.round(seconds / 604800)
if (interval > 1) return $localize`${interval} weeks ago`
if (interval === 1) return $localize`${interval} week ago`
interval = Math.floor(seconds / 86400)
interval = Math.round(seconds / 86400)
if (interval > 1) return $localize`${interval} days ago`
if (interval === 1) return $localize`${interval} day ago`
interval = Math.floor(seconds / 3600)
interval = Math.round(seconds / 3600)
if (interval > 1) return $localize`${interval} hours ago`
if (interval === 1) return $localize`${interval} hour ago`
interval = Math.floor(seconds / 60)
interval = Math.round(seconds / 60)
if (interval >= 1) return $localize`${interval} min ago`
return $localize`just now`

View File

@ -14,7 +14,7 @@ import {
} from '@app/core'
import { DisableForReuseHook } from '@app/core/routing/disable-for-reuse-hook'
import { GlobalIconName } from '@app/shared/shared-icons'
import { isLastMonth, isLastWeek, isToday, isYesterday } from '@shared/core-utils/miscs/date'
import { isLastMonth, isLastWeek, isThisMonth, isToday, isYesterday } from '@shared/core-utils/miscs/date'
import { ServerConfig, VideoSortField } from '@shared/models'
import { NSFWPolicyType } from '@shared/models/videos/nsfw-policy.type'
import { Syndication, Video } from '../shared-main'
@ -24,9 +24,10 @@ enum GroupDate {
UNKNOWN = 0,
TODAY = 1,
YESTERDAY = 2,
LAST_WEEK = 3,
LAST_MONTH = 4,
OLDER = 5
THIS_WEEK = 3,
THIS_MONTH = 4,
LAST_MONTH = 5,
OLDER = 6
}
@Directive()
@ -111,7 +112,8 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy, DisableFor
[GroupDate.UNKNOWN]: null,
[GroupDate.TODAY]: $localize`Today`,
[GroupDate.YESTERDAY]: $localize`Yesterday`,
[GroupDate.LAST_WEEK]: $localize`Last week`,
[GroupDate.THIS_WEEK]: $localize`This week`,
[GroupDate.THIS_MONTH]: $localize`This month`,
[GroupDate.LAST_MONTH]: $localize`Last month`,
[GroupDate.OLDER]: $localize`Older`
}
@ -214,46 +216,48 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy, DisableFor
buildGroupedDateLabels () {
let currentGroupedDate: GroupDate = GroupDate.UNKNOWN
const periods = [
{
value: GroupDate.TODAY,
validator: (d: Date) => isToday(d)
},
{
value: GroupDate.YESTERDAY,
validator: (d: Date) => isYesterday(d)
},
{
value: GroupDate.THIS_WEEK,
validator: (d: Date) => isLastWeek(d)
},
{
value: GroupDate.THIS_MONTH,
validator: (d: Date) => isThisMonth(d)
},
{
value: GroupDate.LAST_MONTH,
validator: (d: Date) => isLastMonth(d)
},
{
value: GroupDate.OLDER,
validator: () => true
}
]
for (const video of this.videos) {
const publishedDate = video.publishedAt
if (currentGroupedDate <= GroupDate.TODAY && isToday(publishedDate)) {
if (currentGroupedDate === GroupDate.TODAY) continue
for (let i = 0; i < periods.length; i++) {
const period = periods[i]
currentGroupedDate = GroupDate.TODAY
this.groupedDates[ video.id ] = currentGroupedDate
continue
}
if (currentGroupedDate <= period.value && period.validator(publishedDate)) {
if (currentGroupedDate <= GroupDate.YESTERDAY && isYesterday(publishedDate)) {
if (currentGroupedDate === GroupDate.YESTERDAY) continue
if (currentGroupedDate !== period.value) {
currentGroupedDate = period.value
this.groupedDates[ video.id ] = currentGroupedDate
}
currentGroupedDate = GroupDate.YESTERDAY
this.groupedDates[ video.id ] = currentGroupedDate
continue
}
if (currentGroupedDate <= GroupDate.LAST_WEEK && isLastWeek(publishedDate)) {
if (currentGroupedDate === GroupDate.LAST_WEEK) continue
currentGroupedDate = GroupDate.LAST_WEEK
this.groupedDates[ video.id ] = currentGroupedDate
continue
}
if (currentGroupedDate <= GroupDate.LAST_MONTH && isLastMonth(publishedDate)) {
if (currentGroupedDate === GroupDate.LAST_MONTH) continue
currentGroupedDate = GroupDate.LAST_MONTH
this.groupedDates[ video.id ] = currentGroupedDate
continue
}
if (currentGroupedDate <= GroupDate.OLDER) {
if (currentGroupedDate === GroupDate.OLDER) continue
currentGroupedDate = GroupDate.OLDER
this.groupedDates[ video.id ] = currentGroupedDate
break
}
}
}
}