From d447950255e39a00a16466d7fe6e6d42a7c91eea Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 11 Aug 2020 17:59:44 +0800 Subject: Post list modified since now consider username change. And make all datetime utc. --- Timeline/Services/Clock.cs | 2 +- Timeline/Services/TimelineService.cs | 12 ++++++++++-- Timeline/Services/UserTokenManager.cs | 3 +++ 3 files changed, 14 insertions(+), 3 deletions(-) (limited to 'Timeline/Services') diff --git a/Timeline/Services/Clock.cs b/Timeline/Services/Clock.cs index 040f9304..4395edcd 100644 --- a/Timeline/Services/Clock.cs +++ b/Timeline/Services/Clock.cs @@ -23,7 +23,7 @@ namespace Timeline.Services public DateTime GetCurrentTime() { - return DateTime.Now; + return DateTime.UtcNow; } } } diff --git a/Timeline/Services/TimelineService.cs b/Timeline/Services/TimelineService.cs index 283938fb..0070fe3e 100644 --- a/Timeline/Services/TimelineService.cs +++ b/Timeline/Services/TimelineService.cs @@ -565,11 +565,13 @@ namespace Timeline.Services public async Task> GetPosts(string timelineName, DateTime? modifiedSince = null, bool includeDeleted = false) { + modifiedSince = modifiedSince?.MyToUtc(); + if (timelineName == null) throw new ArgumentNullException(nameof(timelineName)); var timelineId = await FindTimelineId(timelineName); - var query = _database.TimelinePosts.OrderBy(p => p.Time).Where(p => p.TimelineId == timelineId); + IQueryable query = _database.TimelinePosts.Where(p => p.TimelineId == timelineId); if (!includeDeleted) { @@ -578,9 +580,11 @@ namespace Timeline.Services if (modifiedSince.HasValue) { - query = query.Where(p => p.LastUpdated >= modifiedSince); + query = query.Include(p => p.Author).Where(p => p.LastUpdated >= modifiedSince || (p.Author != null && p.Author.UsernameChangeTime >= modifiedSince)); } + query = query.OrderBy(p => p.Time); + var postEntities = await query.ToListAsync(); var posts = new List(); @@ -663,6 +667,8 @@ namespace Timeline.Services public async Task CreateTextPost(string timelineName, long authorId, string text, DateTime? time) { + time = time?.MyToUtc(); + if (timelineName == null) throw new ArgumentNullException(nameof(timelineName)); if (text == null) @@ -704,6 +710,8 @@ namespace Timeline.Services public async Task CreateImagePost(string timelineName, long authorId, byte[] data, DateTime? time) { + time = time?.MyToUtc(); + if (timelineName == null) throw new ArgumentNullException(nameof(timelineName)); if (data == null) diff --git a/Timeline/Services/UserTokenManager.cs b/Timeline/Services/UserTokenManager.cs index a016ff96..813dae67 100644 --- a/Timeline/Services/UserTokenManager.cs +++ b/Timeline/Services/UserTokenManager.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; +using Timeline.Helpers; using Timeline.Models; using Timeline.Services.Exceptions; @@ -57,6 +58,8 @@ namespace Timeline.Services public async Task CreateToken(string username, string password, DateTime? expireAt = null) { + expireAt = expireAt?.MyToUtc(); + if (username == null) throw new ArgumentNullException(nameof(username)); if (password == null) -- cgit v1.2.3