diff options
Diffstat (limited to 'Timeline/ClientApp/src')
-rw-r--r-- | Timeline/ClientApp/src/app/data/timeline.ts | 7 | ||||
-rw-r--r-- | Timeline/ClientApp/src/app/http/common.ts | 29 | ||||
-rw-r--r-- | Timeline/ClientApp/src/app/http/timeline.ts | 6 | ||||
-rw-r--r-- | Timeline/ClientApp/src/app/http/user.ts | 6 |
4 files changed, 25 insertions, 23 deletions
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<TimelinePostsWithSyncState> {
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<T>(
- res: AxiosResponse<T>
-): T | NotModified {
- if (res.status === 304) {
+export function convertToNotModified(
+ error: AxiosError<CommonErrorResponse>
+): 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<Blob>): BlobWithEtag { etag: (res.headers as Record<'etag', string>)['etag'],
};
}
-
-export function convertToBlobWithEtagOrNotModified(
- res: AxiosResponse<Blob>
-): 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);
}
|