From 175223fc3be512db4a939584c989d7e5d7b6832e Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 12 Apr 2022 15:18:47 +0800 Subject: ... --- .../Services/Token/SecureRandomUserTokenService.cs | 2 +- FrontEnd/src/http/timeline.ts | 24 +++++++++++++++++++--- FrontEnd/src/views/timeline/Timeline.tsx | 6 +++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/BackEnd/Timeline/Services/Token/SecureRandomUserTokenService.cs b/BackEnd/Timeline/Services/Token/SecureRandomUserTokenService.cs index 404862d4..2ab263de 100644 --- a/BackEnd/Timeline/Services/Token/SecureRandomUserTokenService.cs +++ b/BackEnd/Timeline/Services/Token/SecureRandomUserTokenService.cs @@ -81,7 +81,7 @@ namespace Timeline.Services.Token var currentTime = _clock.GetCurrentTime(); - if (entity.ExpireAt.HasValue && entity.ExpireAt > currentTime) + if (entity.ExpireAt.HasValue && entity.ExpireAt.Value <= currentTime) { throw new UserTokenExpiredException(token, entity.ExpireAt.Value, currentTime); } diff --git a/FrontEnd/src/http/timeline.ts b/FrontEnd/src/http/timeline.ts index 65717a83..0e1ceb81 100644 --- a/FrontEnd/src/http/timeline.ts +++ b/FrontEnd/src/http/timeline.ts @@ -50,6 +50,7 @@ export interface HttpTimelinePostDataDigest { export interface HttpTimelinePostInfo { id: number; + deleted: false; time: string; author: HttpUser; dataList: HttpTimelinePostDataDigest[]; @@ -60,6 +61,23 @@ export interface HttpTimelinePostInfo { editable: boolean; } +export interface HttpTimelineDeletedPostInfo { + id: number; + deleted: true; + time: string; + author?: HttpUser; + dataList: HttpTimelinePostDataDigest[]; + color?: string; + lastUpdated: string; + timelineOwnerV2: string; + timelineNameV2: string; + editable: boolean; +} + +export type HttpTimelineGenericPostInfo = + | HttpTimelinePostInfo + | HttpTimelineDeletedPostInfo; + export interface HttpTimelinePostPostRequestData { contentType: string; data: string; @@ -116,7 +134,7 @@ export interface IHttpTimelineClient { listPost( ownerUsername: string, timelineName: string - ): Promise>; + ): Promise>; generatePostDataUrl( ownerUsername: string, timelineName: string, @@ -218,9 +236,9 @@ export class HttpTimelineClient implements IHttpTimelineClient { listPost( ownerUsername: string, timelineName: string - ): Promise> { + ): Promise> { return axios - .get>( + .get>( `${apiBaseUrl}/v2/timelines/${ownerUsername}/${timelineName}/posts` ) .then(extractResponseData); diff --git a/FrontEnd/src/views/timeline/Timeline.tsx b/FrontEnd/src/views/timeline/Timeline.tsx index a2047651..7fb58e0c 100644 --- a/FrontEnd/src/views/timeline/Timeline.tsx +++ b/FrontEnd/src/views/timeline/Timeline.tsx @@ -89,7 +89,11 @@ const Timeline: React.FC = (props) => { ([t, p]) => { if (subscribe) { setTimeline(t); - setPosts(p.items); + setPosts( + p.items.filter( + (p): p is HttpTimelinePostInfo => p.deleted === false + ) + ); setState("loaded"); onTimelineLoaded.current?.(t); } -- cgit v1.2.3