aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/modules/fomantic/api.ts
diff options
context:
space:
mode:
Diffstat (limited to 'web_src/js/modules/fomantic/api.ts')
-rw-r--r--web_src/js/modules/fomantic/api.ts41
1 files changed, 0 insertions, 41 deletions
diff --git a/web_src/js/modules/fomantic/api.ts b/web_src/js/modules/fomantic/api.ts
deleted file mode 100644
index 97430450e2..0000000000
--- a/web_src/js/modules/fomantic/api.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import $ from 'jquery';
-import type {FomanticInitFunction} from '../../types.ts';
-
-export function initFomanticApiPatch() {
- //
- // Fomantic API module has some very buggy behaviors:
- //
- // If encodeParameters=true, it calls `urlEncodedValue` to encode the parameter.
- // However, `urlEncodedValue` just tries to "guess" whether the parameter is already encoded, by decoding the parameter and encoding it again.
- //
- // There are 2 problems:
- // 1. It may guess wrong, and skip encoding a parameter which looks like encoded.
- // 2. If the parameter can't be decoded, `decodeURIComponent` will throw an error, and the whole request will fail.
- //
- // This patch only fixes the second error behavior at the moment.
- //
- const patchKey = '_giteaFomanticApiPatch';
- const oldApi = $.api;
- $.api = $.fn.api = function(...args: Parameters<FomanticInitFunction>) {
- const apiCall = oldApi.bind(this);
- const ret = oldApi.apply(this, args);
-
- if (typeof args[0] !== 'string') {
- const internalGet = apiCall('internal', 'get');
- if (!internalGet.urlEncodedValue[patchKey]) {
- const oldUrlEncodedValue = internalGet.urlEncodedValue;
- internalGet.urlEncodedValue = function (value: any) {
- try {
- return oldUrlEncodedValue(value);
- } catch {
- // if Fomantic API module's `urlEncodedValue` throws an error, we encode it by ourselves.
- return encodeURIComponent(value);
- }
- };
- internalGet.urlEncodedValue[patchKey] = true;
- }
- }
- return ret;
- };
- $.api.settings = oldApi.settings;
-}