diff --git a/frontend/resources/locales.json b/frontend/resources/locales.json index 730249343..286e7eac1 100644 --- a/frontend/resources/locales.json +++ b/frontend/resources/locales.json @@ -546,13 +546,13 @@ } }, "errors.image-format-unsupported" : { - "used-in" : [ "src/uxbox/main/data/images.cljs:375", "src/uxbox/main/data/workspace/persistence.cljs:320" ], + "used-in" : [ "src/uxbox/main/data/images.cljs:375", "src/uxbox/main/data/workspace/persistence.cljs:318" ], "translations" : { "en" : "The image format is not supported (must be svg, jpg or png)." } }, "errors.image-too-large" : { - "used-in" : [ "src/uxbox/main/data/images.cljs:373", "src/uxbox/main/data/workspace/persistence.cljs:318" ], + "used-in" : [ "src/uxbox/main/data/images.cljs:373", "src/uxbox/main/data/workspace/persistence.cljs:316" ], "translations" : { "en" : "The image is too large to be inserted (must be under 5mb)." } @@ -585,7 +585,7 @@ } }, "errors.unexpected-error" : { - "used-in" : [ "src/uxbox/main/data/images.cljs:382", "src/uxbox/main/data/workspace/persistence.cljs:333", "src/uxbox/main/ui/auth/register.cljs:54", "src/uxbox/main/ui/settings/change_email.cljs:42" ], + "used-in" : [ "src/uxbox/main/data/images.cljs:384", "src/uxbox/main/data/workspace/persistence.cljs:327", "src/uxbox/main/ui/auth/register.cljs:54", "src/uxbox/main/ui/settings/change_email.cljs:42" ], "translations" : { "en" : "An unexpected error occurred.", "fr" : "Une erreur inattendue c'est produite" @@ -625,6 +625,12 @@ }, "unused" : true }, + "image.loading" : { + "used-in" : [ "src/uxbox/main/data/images.cljs:392", "src/uxbox/main/data/workspace/persistence.cljs:335" ], + "translations" : { + "en" : "Loading image..." + } + }, "image.new" : { "translations" : { "en" : "New image", diff --git a/frontend/src/uxbox/main/data/images.cljs b/frontend/src/uxbox/main/data/images.cljs index 6947e20fb..963bf330f 100644 --- a/frontend/src/uxbox/main/data/images.cljs +++ b/frontend/src/uxbox/main/data/images.cljs @@ -375,11 +375,13 @@ (throw (ex-info (tr "errors.image-format-unsupported") {}))) file) - on-success on-uploaded + on-success #(do (st/emit! dm/hide) + (on-uploaded %)) - on-error #(if (.-message %) - (rx/of (dm/error (.-message %))) - (rx/of (dm/error (tr "errors.unexpected-error")))) + on-error #(do (st/emit! dm/hide) + (if (.-message %) + (rx/of (dm/error (.-message %))) + (rx/of (dm/error (tr "errors.unexpected-error"))))) prepare (fn [file] @@ -387,6 +389,10 @@ :library-id library-id :content file})] + (st/emit! (dm/show {:content (tr "image.loading") + :type :info + :timeout nil})) + (->> (rx/from files) (rx/map check-file) (rx/map prepare) diff --git a/frontend/src/uxbox/main/data/workspace/persistence.cljs b/frontend/src/uxbox/main/data/workspace/persistence.cljs index bef9a7a03..e6ea65e51 100644 --- a/frontend/src/uxbox/main/data/workspace/persistence.cljs +++ b/frontend/src/uxbox/main/data/workspace/persistence.cljs @@ -305,13 +305,11 @@ ([file on-uploaded] (us/verify fn? on-uploaded) (ptk/reify ::upload-image - ptk/UpdateEvent - (update [_ state] - (assoc-in state [:workspace-local :uploading] true)) - ptk/WatchEvent (watch [_ state stream] - (let [check-file + (let [file-id (get-in state [:workspace-page :file-id]) + + check-file (fn [file] (when (> (.-size file) max-file-size) (throw (ex-info (tr "errors.image-too-large") {}))) @@ -319,14 +317,10 @@ (throw (ex-info (tr "errors.image-format-unsupported") {}))) file) - finalize-upload #(assoc-in % [:workspace-local :uploading] false) - - file-id (get-in state [:workspace-page :file-id]) - - on-success #(do (st/emit! finalize-upload) + on-success #(do (st/emit! dm/hide) (on-uploaded %)) - on-error #(do (st/emit! finalize-upload) + on-error #(do (st/emit! dm/hide) (if (.-message %) (rx/of (dm/error (.-message %))) (rx/of (dm/error (tr "errors.unexpected-error"))))) @@ -337,6 +331,9 @@ :file-id file-id :content file})] + (st/emit! (dm/show {:content (tr "image.loading") + :type :info + :timeout nil})) (->> (rx/of file) (rx/map check-file) (rx/map prepare)