diff --git a/project.clj b/project.clj index ad32fb0b67..fb66598b3e 100644 --- a/project.clj +++ b/project.clj @@ -24,7 +24,6 @@ [cljsjs/moment "2.10.6-4"] [funcool/struct "1.0.0"] [funcool/lentes "1.2.0"] - [funcool/promesa "1.5.0"] [funcool/beicon "2.3.0"] [funcool/cuerdas "1.0.2"] [funcool/bide "1.0.5"]] diff --git a/src/uxbox/main/data/auth.cljs b/src/uxbox/main/data/auth.cljs index b110f1a4ef..6f2a7e64e4 100644 --- a/src/uxbox/main/data/auth.cljs +++ b/src/uxbox/main/data/auth.cljs @@ -7,7 +7,6 @@ (ns uxbox.main.data.auth (:require [beicon.core :as rx] - [promesa.core :as p] [uxbox.main.repo :as rp] [uxbox.util.rstore :as rs] [uxbox.util.router :as rt] diff --git a/src/uxbox/main/data/forms.cljs b/src/uxbox/main/data/forms.cljs index a18f46126b..dd0b8616b3 100644 --- a/src/uxbox/main/data/forms.cljs +++ b/src/uxbox/main/data/forms.cljs @@ -6,7 +6,6 @@ (ns uxbox.main.data.forms (:require [beicon.core :as rx] - [promesa.core :as p] [lentes.core :as l] [uxbox.main.repo :as rp] [uxbox.util.rstore :as rs] diff --git a/src/uxbox/main/data/history.cljs b/src/uxbox/main/data/history.cljs index f85f736370..311e3fa073 100644 --- a/src/uxbox/main/data/history.cljs +++ b/src/uxbox/main/data/history.cljs @@ -6,7 +6,6 @@ (ns uxbox.main.data.history (:require [cuerdas.core :as str] - [promesa.core :as p] [beicon.core :as rx] [lentes.core :as l] [uxbox.util.rstore :as rs] diff --git a/src/uxbox/main/data/images.cljs b/src/uxbox/main/data/images.cljs index c606706ce1..3da19eefa3 100644 --- a/src/uxbox/main/data/images.cljs +++ b/src/uxbox/main/data/images.cljs @@ -7,7 +7,6 @@ (ns uxbox.main.data.images (:require [cuerdas.core :as str] [beicon.core :as rx] - [promesa.core :as p] [uxbox.util.data :refer (jscoll->vec)] [uxbox.util.uuid :as uuid] [uxbox.util.rstore :as rs] diff --git a/src/uxbox/main/data/lightbox.cljs b/src/uxbox/main/data/lightbox.cljs index 733fc7ed19..c17b2439c1 100644 --- a/src/uxbox/main/data/lightbox.cljs +++ b/src/uxbox/main/data/lightbox.cljs @@ -5,8 +5,7 @@ ;; Copyright (c) 2016 Andrey Antukh (ns uxbox.main.data.lightbox - (:require [promesa.core :as p] - [beicon.core :as rx] + (:require [beicon.core :as rx] [lentes.core :as l] [uxbox.util.rstore :as rs])) diff --git a/src/uxbox/main/data/messages.cljs b/src/uxbox/main/data/messages.cljs index 8aac4398f7..fdf7bc6fcf 100644 --- a/src/uxbox/main/data/messages.cljs +++ b/src/uxbox/main/data/messages.cljs @@ -6,9 +6,9 @@ (ns uxbox.main.data.messages (:require [cuerdas.core :as str] - [promesa.core :as p] [beicon.core :as rx] [lentes.core :as l] + [uxbox.util.timers :as ts] [uxbox.util.rstore :as rs])) ;; --- Constants @@ -88,15 +88,15 @@ (defn error! [& args] - (p/schedule 0 #(rs/emit! (apply show-error args)))) + (ts/schedule 0 #(rs/emit! (apply show-error args)))) (defn info! [& args] - (p/schedule 0 #(rs/emit! (apply show-info args)))) + (ts/schedule 0 #(rs/emit! (apply show-info args)))) (defn dialog! [& args] - (p/schedule 0 #(rs/emit! (apply show-dialog args)))) + (ts/schedule 0 #(rs/emit! (apply show-dialog args)))) (defn close! [] diff --git a/src/uxbox/main/data/pages.cljs b/src/uxbox/main/data/pages.cljs index 1cb39ec62e..efdb095fa0 100644 --- a/src/uxbox/main/data/pages.cljs +++ b/src/uxbox/main/data/pages.cljs @@ -7,7 +7,6 @@ (ns uxbox.main.data.pages (:require [cuerdas.core :as str] - [promesa.core :as p] [beicon.core :as rx] [lentes.core :as l] [uxbox.util.rstore :as rs] diff --git a/src/uxbox/main/data/users.cljs b/src/uxbox/main/data/users.cljs index f25ff101d9..d12bb3558b 100644 --- a/src/uxbox/main/data/users.cljs +++ b/src/uxbox/main/data/users.cljs @@ -6,7 +6,6 @@ (ns uxbox.main.data.users (:require [beicon.core :as rx] - [promesa.core :as p] [uxbox.main.repo :as rp] [uxbox.util.rstore :as rs] [uxbox.main.state :as st] diff --git a/src/uxbox/main/repo/impl.cljs b/src/uxbox/main/repo/impl.cljs index 959d208a35..101290787a 100644 --- a/src/uxbox/main/repo/impl.cljs +++ b/src/uxbox/main/repo/impl.cljs @@ -6,7 +6,6 @@ (ns uxbox.main.repo.impl (:require [clojure.walk :as walk] - [promesa.core :as p :include-macros true] [beicon.core :as rx] [uxbox.config :refer (url)] [uxbox.util.http :as http] diff --git a/src/uxbox/main/ui.cljs b/src/uxbox/main/ui.cljs index cd3888f031..e61985d381 100644 --- a/src/uxbox/main/ui.cljs +++ b/src/uxbox/main/ui.cljs @@ -6,8 +6,7 @@ ;; Copyright (c) 2015-2016 Juan de la Cruz (ns uxbox.main.ui - (:require [promesa.core :as p] - [beicon.core :as rx] + (:require [beicon.core :as rx] [lentes.core :as l] [cuerdas.core :as str] [bide.core :as bc] @@ -23,6 +22,7 @@ [uxbox.main.ui.dashboard :as dashboard] [uxbox.main.ui.settings :as settings] [uxbox.main.ui.workspace :refer (workspace)] + [uxbox.util.timers :as ts] [uxbox.util.router :as rt] [uxbox.util.rstore :as rs] [uxbox.util.i18n :refer (tr)] @@ -94,7 +94,7 @@ location (:id route) params (:params route)] (if (and (restricted? location) (not auth)) - (do (p/schedule 0 #(rt/go :auth/login)) nil) + (do (ts/schedule 0 #(rt/go :auth/login)) nil) (case location :auth/login (auth/login-page) :auth/register (auth/register-page) diff --git a/src/uxbox/main/ui/messages.cljs b/src/uxbox/main/ui/messages.cljs index 771b52db8e..968de8ea64 100644 --- a/src/uxbox/main/ui/messages.cljs +++ b/src/uxbox/main/ui/messages.cljs @@ -1,11 +1,11 @@ (ns uxbox.main.ui.messages (:require [sablono.core :as html :refer-macros [html]] [rum.core :as rum] - [promesa.core :as p] [lentes.core :as l] [uxbox.main.state :as st] [uxbox.main.data.messages :as udm] [uxbox.main.ui.icons :as i] + [uxbox.util.timers :as ts] [uxbox.util.mixins :as mx :include-macros true] [uxbox.util.data :refer (classnames)] [uxbox.util.dom :as dom])) @@ -47,13 +47,13 @@ (letfn [(accept [event] (dom/prevent-default event) (on-accept) - (p/schedule 0 udm/close!)) + (ts/schedule 0 udm/close!)) (cancel [event] (dom/prevent-default event) (when on-cancel (on-cancel)) - (p/schedule 0 udm/close!))] + (ts/schedule 0 udm/close!))] (html [:div.message {:class classes} [:div.message-body diff --git a/src/uxbox/main/ui/workspace/download.cljs b/src/uxbox/main/ui/workspace/download.cljs index e166ca320a..d4e19f6a67 100644 --- a/src/uxbox/main/ui/workspace/download.cljs +++ b/src/uxbox/main/ui/workspace/download.cljs @@ -7,7 +7,7 @@ (ns uxbox.main.ui.workspace.download (:require [cuerdas.core :as str] - [promesa.core :as p] + [beicon.core :as rx] [uxbox.main.data.lightbox :as udl] [uxbox.main.exports :as exports] [uxbox.main.state :as st] @@ -72,21 +72,22 @@ (defn- download-project-zip [{:keys [name] :as project} pages] - (p/alet [files (generate-files pages) - blob (p/await (zip/build files)) - uri (blob/create-uri blob) - link (.createElement js/document "a") - event (js/MouseEvent. "click") - now (dt/now)] - (.setAttribute link "href" uri) - (.setAttribute link "download" (str (str/uslug name) "_" - (dt/format now :unix) - ".zip")) - - (.appendChild (.-body js/document) link) - (.dispatchEvent link event) - (blob/revoke-uri uri) - (.removeChild (.-body js/document) link))) + (let [event (js/MouseEvent. "click") + link (.createElement js/document "a") + now (dt/now) + stream (->> (rx/from-coll (generate-files pages)) + (rx/reduce conj []) + (rx/mapcat zip/build) + (rx/map blob/create-uri) + (rx/take 1)) + download (str (str/uslug name) "_" (dt/format now :unix) ".zip")] + (rx/subscribe stream (fn [uri] + (.setAttribute link "download" download) + (.setAttribute link "href" uri) + (.appendChild (.-body js/document) link) + (.dispatchEvent link event) + (blob/revoke-uri uri) + (.removeChild (.-body js/document) link))))) (mx/defcs download-dialog {:mixins [mx/static mx/reactive]} diff --git a/src/uxbox/util/timers.cljs b/src/uxbox/util/timers.cljs new file mode 100644 index 0000000000..6d04ae12ef --- /dev/null +++ b/src/uxbox/util/timers.cljs @@ -0,0 +1,11 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) 2016 Andrey Antukh + +(ns uxbox.util.timers) + +(defn schedule + [ms func] + (js/setTimeout func ms)) diff --git a/src/uxbox/util/zip.cljs b/src/uxbox/util/zip.cljs index 2c2a6791ad..3373553c76 100644 --- a/src/uxbox/util/zip.cljs +++ b/src/uxbox/util/zip.cljs @@ -7,18 +7,13 @@ (ns uxbox.util.zip "Helpers for make zip file (using jszip)." (:require [vendor.jszip] - [promesa.core :as p])) - -(defn build* - [files resolve reject] - (let [zipobj (js/JSZip.)] - (run! (fn [[name content]] - (.file zipobj name content)) - files) - (-> (.generateAsync zipobj #js {:type "blob"}) - (.then resolve reject)))) + [beicon.core :as rx])) (defn build [files] - (p/promise (fn [resolve reject] - (build* files resolve reject)))) + (letfn [(attach-file [zobj [name content]] + (.file zobj name content))] + (let [zobj (js/JSZip.)] + (run! (partial attach-file zobj) files) + (->> (.generateAsync zobj #js {:type "blob"}) + (rx/from-promise))))) diff --git a/src/uxbox/view/ui/viewer.cljs b/src/uxbox/view/ui/viewer.cljs index daf3dcfa76..5ce6fa5c0b 100644 --- a/src/uxbox/view/ui/viewer.cljs +++ b/src/uxbox/view/ui/viewer.cljs @@ -7,7 +7,6 @@ (ns uxbox.view.ui.viewer (:require [lentes.core :as l] - [promesa.core :as p] [uxbox.util.i18n :refer (tr)] [uxbox.util.rstore :as rs] [uxbox.util.router :as rt] diff --git a/src/uxbox/view/ui/viewer/interactions.cljs b/src/uxbox/view/ui/viewer/interactions.cljs index 86e4cf2711..428c6c44e7 100644 --- a/src/uxbox/view/ui/viewer/interactions.cljs +++ b/src/uxbox/view/ui/viewer/interactions.cljs @@ -5,12 +5,12 @@ ;; Copyright (c) 2016 Andrey Antukh (ns uxbox.view.ui.viewer.interactions - (:require [promesa.core :as p] - [uxbox.util.dom :as dom] + (:require [uxbox.util.dom :as dom] [uxbox.util.rstore :as rs] - [uxbox.main.geom :as geom] [uxbox.util.geom.matrix :as gmt] [uxbox.util.geom.point :as gpt] + [uxbox.util.timers :as ts] + [uxbox.main.geom :as geom] [uxbox.main.state :as st] [uxbox.view.data.viewer :as dv] [vendor.snapsvg]) @@ -52,7 +52,7 @@ [dom {:keys [delay duration easing] :as opts}] (let [props (dissoc opts :delay :duration :easing) snap (js/Snap. dom)] - (p/schedule delay #(.animate snap (clj->js props) duration easing)))) + (ts/schedule delay #(.animate snap (clj->js props) duration easing)))) ;; --- Interactions to Animation Compilation