mirror of
https://github.com/penpot/penpot.git
synced 2025-07-13 17:27:16 +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,15 +18,30 @@
|
||||||
|
|
||||||
(log/set-level! :warn)
|
(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
|
(defn- file-reader
|
||||||
[f]
|
[f]
|
||||||
(rx/create
|
(rx/create
|
||||||
(fn [subs]
|
(fn [subs]
|
||||||
(let [reader (js/FileReader.)]
|
(let [reader (js/FileReader.)]
|
||||||
(obj/set! reader "onload" #(do (rx/push! subs (.-result ^js reader))
|
(obj/set! reader "onload"
|
||||||
|
#(let [result (.-result ^js reader)
|
||||||
|
result (fix-webkit-data-uri result)]
|
||||||
|
(rx/push! subs result)
|
||||||
(rx/end! subs)))
|
(rx/end! subs)))
|
||||||
(obj/set! reader "onerror" #(rx/error! subs %))
|
(obj/set! reader "onerror"
|
||||||
(obj/set! reader "onabort" #(rx/error! subs (ex/error :type :internal
|
#(rx/error! subs %))
|
||||||
|
(obj/set! reader "onabort"
|
||||||
|
#(rx/error! subs (ex/error :type :internal
|
||||||
:code :abort
|
:code :abort
|
||||||
:hint "operation aborted")))
|
:hint "operation aborted")))
|
||||||
(f reader)
|
(f reader)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue