mirror of
https://github.com/penpot/penpot.git
synced 2025-07-13 23:08:20 +02:00
🐛 Add workaround for webkit issue on fileReader (#6697)
On reading blob as data uri
This commit is contained in:
parent
acf0d02c5d
commit
c5b0206bf0
1 changed files with 21 additions and 6 deletions
|
@ -18,17 +18,32 @@
|
|||
|
||||
(log/set-level! :warn)
|
||||
|
||||
;; NOTE: this operation is necessary because some versions of safari/webkit,
|
||||
;; returns something like "data:image/png, image/png;base64,iVBOR" (repeated
|
||||
;; mimetype). The regex replacement strips the repeated mimetype.
|
||||
(def webkit-datauri-fix-re
|
||||
#"^(data:image/\w+)(,\s*image/\w+)?(;base64.*)$")
|
||||
|
||||
(defn- fix-webkit-data-uri
|
||||
[duri]
|
||||
(str/replace duri webkit-datauri-fix-re "$1$3"))
|
||||
|
||||
(defn- file-reader
|
||||
[f]
|
||||
(rx/create
|
||||
(fn [subs]
|
||||
(let [reader (js/FileReader.)]
|
||||
(obj/set! reader "onload" #(do (rx/push! subs (.-result ^js reader))
|
||||
(rx/end! subs)))
|
||||
(obj/set! reader "onerror" #(rx/error! subs %))
|
||||
(obj/set! reader "onabort" #(rx/error! subs (ex/error :type :internal
|
||||
:code :abort
|
||||
:hint "operation aborted")))
|
||||
(obj/set! reader "onload"
|
||||
#(let [result (.-result ^js reader)
|
||||
result (fix-webkit-data-uri result)]
|
||||
(rx/push! subs result)
|
||||
(rx/end! subs)))
|
||||
(obj/set! reader "onerror"
|
||||
#(rx/error! subs %))
|
||||
(obj/set! reader "onabort"
|
||||
#(rx/error! subs (ex/error :type :internal
|
||||
:code :abort
|
||||
:hint "operation aborted")))
|
||||
(f reader)
|
||||
(fn []
|
||||
(.abort ^js reader))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue