aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src
diff options
context:
space:
mode:
Diffstat (limited to 'FrontEnd/src')
-rw-r--r--FrontEnd/src/app/http/timeline.ts27
-rw-r--r--FrontEnd/src/app/utilities/url.ts50
2 files changed, 14 insertions, 63 deletions
diff --git a/FrontEnd/src/app/http/timeline.ts b/FrontEnd/src/app/http/timeline.ts
index ed02a65b..228b6105 100644
--- a/FrontEnd/src/app/http/timeline.ts
+++ b/FrontEnd/src/app/http/timeline.ts
@@ -1,6 +1,6 @@
import { AxiosError } from "axios";
-import { updateQueryString, applyQueryParameters } from "../utilities/url";
+import { applyQueryParameters } from "../utilities/url";
import {
axios,
@@ -383,26 +383,13 @@ export class HttpTimelineClient implements IHttpTimelineClient {
includeDeleted?: boolean;
}
): Promise<HttpTimelineGenericPostInfo[]> {
- let url = `${apiBaseUrl}/timelines/${timelineName}/posts`;
- if (query != null) {
- if (query.modifiedSince != null) {
- url = updateQueryString(
- "modifiedSince",
- query.modifiedSince.toISOString(),
- url
- );
- }
- if (query.includeDeleted != null) {
- url = updateQueryString(
- "includeDeleted",
- query.includeDeleted ? "true" : "false",
- url
- );
- }
- }
-
return axios
- .get<RawTimelineGenericPostInfo[]>(url)
+ .get<RawTimelineGenericPostInfo[]>(
+ applyQueryParameters(
+ `${apiBaseUrl}/timelines/${timelineName}/posts`,
+ query
+ )
+ )
.then(extractResponseData)
.catch(convertToIfStatusCodeIs(404, HttpTimelineNotExistError))
.catch(convertToForbiddenError)
diff --git a/FrontEnd/src/app/utilities/url.ts b/FrontEnd/src/app/utilities/url.ts
index 17ead5b2..21ad6304 100644
--- a/FrontEnd/src/app/utilities/url.ts
+++ b/FrontEnd/src/app/utilities/url.ts
@@ -1,52 +1,16 @@
-//copied from https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter
-export function updateQueryString(
- key: string,
- value: undefined | string | null,
- url: string
-): string {
- const re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi");
- let hash;
-
- if (re.test(url)) {
- if (typeof value !== "undefined" && value !== null) {
- return url.replace(re, "$1" + key + "=" + value + "$2$3");
- } else {
- hash = url.split("#");
- url = hash[0].replace(re, "$1$3").replace(/(&|\?)$/, "");
- if (typeof hash[1] !== "undefined" && hash[1] !== null) {
- url += "#" + hash[1];
- }
- return url;
- }
- } else {
- if (typeof value !== "undefined" && value !== null) {
- const separator = url.includes("?") ? "&" : "?";
- hash = url.split("#");
- url = hash[0] + separator + key + "=" + value;
- if (typeof hash[1] !== "undefined" && hash[1] !== null) {
- url += "#" + hash[1];
- }
- return url;
- } else {
- return url;
- }
- }
-}
-
export function applyQueryParameters<T>(url: string, query: T): string {
if (query == null) return url;
+ const params = new URLSearchParams();
+
for (const [key, value] of Object.entries(query)) {
- if (typeof value === "string") url = updateQueryString(key, value, url);
- else if (typeof value === "number")
- url = updateQueryString(key, String(value), url);
- else if (typeof value === "boolean")
- url = updateQueryString(key, value ? "true" : "false", url);
- else if (value instanceof Date)
- url = updateQueryString(key, value.toISOString(), url);
+ if (typeof value === "string") params.set(key, value);
+ else if (typeof value === "number") params.set(key, String(value));
+ else if (typeof value === "boolean") params.set(key, String(value));
+ else if (value instanceof Date) params.set(key, value.toISOString());
else {
console.error("Unknown query parameter type. Param: ", value);
}
}
- return url;
+ return url + "?" + params.toString();
}