From 282c28754a7225fb7f53aa7dfb7598fd54d2db88 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 8 Aug 2020 22:51:01 +0800 Subject: Fix bugs. --- Timeline/ClientApp/src/app/data/timeline.ts | 7 +++++++ Timeline/ClientApp/src/app/http/common.ts | 29 ++++++++++------------------- Timeline/ClientApp/src/app/http/timeline.ts | 6 ++++-- Timeline/ClientApp/src/app/http/user.ts | 6 ++++-- 4 files changed, 25 insertions(+), 23 deletions(-) (limited to 'Timeline/ClientApp/src') diff --git a/Timeline/ClientApp/src/app/data/timeline.ts b/Timeline/ClientApp/src/app/data/timeline.ts index 52022562..842d4bee 100644 --- a/Timeline/ClientApp/src/app/data/timeline.ts +++ b/Timeline/ClientApp/src/app/data/timeline.ts @@ -371,6 +371,13 @@ export class TimelineService { getPosts$(timelineName: string): Observable { return this._postsHub.getObservable(timelineName).pipe( switchMap((state) => { + if (state.posts.length === 0) { + return of({ + type: state.type, + posts: [], + }); + } + return combineLatest([ combineLatest( state.posts.map((post) => userInfoService.getUser$(post.author)) diff --git a/Timeline/ClientApp/src/app/http/common.ts b/Timeline/ClientApp/src/app/http/common.ts index 8b082d1f..1f904106 100644 --- a/Timeline/ClientApp/src/app/http/common.ts +++ b/Timeline/ClientApp/src/app/http/common.ts @@ -131,7 +131,7 @@ export function convertToForbiddenError( if ( error.isAxiosError && error.response != null && - (error.response.status == 403 || error.response.status == 403) + (error.response.status == 401 || error.response.status == 403) ) { throw new HttpForbiddenError(error); } else { @@ -139,13 +139,17 @@ export function convertToForbiddenError( } } -export function extractDataOrConvert304ToNotModified( - res: AxiosResponse -): T | NotModified { - if (res.status === 304) { +export function convertToNotModified( + error: AxiosError +): NotModified { + if ( + error.isAxiosError && + error.response != null && + error.response.status == 304 + ) { return new NotModified(); } else { - return res.data; + throw error; } } @@ -155,16 +159,3 @@ export function convertToBlobWithEtag(res: AxiosResponse): BlobWithEtag { etag: (res.headers as Record<'etag', string>)['etag'], }; } - -export function convertToBlobWithEtagOrNotModified( - res: AxiosResponse -): BlobWithEtag | NotModified { - if (res.status === 304) { - return new NotModified(); - } else { - return { - data: res.data, - etag: (res.headers as Record<'etag', string>)['etag'], - }; - } -} diff --git a/Timeline/ClientApp/src/app/http/timeline.ts b/Timeline/ClientApp/src/app/http/timeline.ts index 0b219787..d8f0b49c 100644 --- a/Timeline/ClientApp/src/app/http/timeline.ts +++ b/Timeline/ClientApp/src/app/http/timeline.ts @@ -10,8 +10,9 @@ import { convertToIfErrorCodeIs, BlobWithEtag, NotModified, - convertToBlobWithEtagOrNotModified, + convertToNotModified, convertToForbiddenError, + convertToBlobWithEtag, } from './common'; import { HttpUser } from './user'; @@ -476,7 +477,8 @@ export class HttpTimelineClient implements IHttpTimelineClient { responseType: 'blob', headers, }) - .then(convertToBlobWithEtagOrNotModified) + .then(convertToBlobWithEtag) + .catch(convertToNotModified) .catch(convertToIfStatusCodeIs(404, HttpTimelinePostNotExistError)) .catch(convertToNetworkError); } diff --git a/Timeline/ClientApp/src/app/http/user.ts b/Timeline/ClientApp/src/app/http/user.ts index 8d5e8a0b..baa831aa 100644 --- a/Timeline/ClientApp/src/app/http/user.ts +++ b/Timeline/ClientApp/src/app/http/user.ts @@ -8,7 +8,8 @@ import { convertToIfErrorCodeIs, NotModified, BlobWithEtag, - convertToBlobWithEtagOrNotModified, + convertToBlobWithEtag, + convertToNotModified, } from './common'; export interface HttpUser { @@ -92,7 +93,8 @@ export class HttpUserClient implements IHttpUserClient { responseType: 'blob', headers, }) - .then(convertToBlobWithEtagOrNotModified) + .then(convertToBlobWithEtag) + .catch(convertToNotModified) .catch(convertToIfStatusCodeIs(404, HttpUserNotExistError)) .catch(convertToNetworkError); } -- cgit v1.2.3