From f02a4b7359513bea20da8c25c46ef90ec1054a1c Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Fri, 16 Dec 2022 09:38:52 -1000 Subject: [PATCH] fix: web: add form's typeahead now shows non-ascii text correctly (#1961) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (Fix contributed by Arsen Arsenović) --- hledger-web/Hledger/Web/Widget/AddForm.hs | 3 ++- hledger-web/templates/add-form.hamlet | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/hledger-web/Hledger/Web/Widget/AddForm.hs b/hledger-web/Hledger/Web/Widget/AddForm.hs index 903d4aa62..c0bb770ae 100644 --- a/hledger-web/Hledger/Web/Widget/AddForm.hs +++ b/hledger-web/Hledger/Web/Widget/AddForm.hs @@ -190,7 +190,8 @@ toBloodhoundJson ts = "]" ] where - b64wrap = ("atob(\""<>) . (<>"\")") . encodeBase64 + -- decodeBase64EncodedText is defined in add-form.hamlet + b64wrap = ("decodeBase64EncodedText(\""<>) . (<>"\")") . encodeBase64 zipDefault :: a -> [a] -> [a] -> [(a, a)] zipDefault def (b:bs) (c:cs) = (b, c):(zipDefault def bs cs) diff --git a/hledger-web/templates/add-form.hamlet b/hledger-web/templates/add-form.hamlet index b3172cc22..3830f9c01 100644 --- a/hledger-web/templates/add-form.hamlet +++ b/hledger-web/templates/add-form.hamlet @@ -19,6 +19,17 @@ jQuery('input[name=description]').typeahead({ highlight: true }, { source: descriptionsSuggester.ttAdapter() }); jQuery('input[name=account]').typeahead({ highlight: true }, { source: accountsSuggester.ttAdapter() }); }); + + const utf8textdecoder = new TextDecoder(); + function decodeBase64EncodedText(b64) { + const unb64 = window.atob(b64); + const arr = new Uint8Array(unb64.length); + for (let i = 0; i < arr.length; i++) { + arr[i] = unb64.charCodeAt(i); + } + return utf8textdecoder.decode(arr); + } + ^{extra}