Skip to content

Commit dcaf04a

Browse files
committed
revert file-save move
1 parent 25f8a97 commit dcaf04a

File tree

3 files changed

+29
-34
lines changed

3 files changed

+29
-34
lines changed

src/renderer/document/effects.cljs

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/renderer/document/events.cljs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
[renderer.dialog.handlers :as dialog.handlers]
1111
[renderer.dialog.views :as dialog.views]
1212
[renderer.document.db :as document.db]
13-
[renderer.document.effects :as document.effects]
1413
[renderer.document.handlers :as document.handlers]
1514
[renderer.effects :as-alias effects]
1615
[renderer.element.handlers :as element.handlers]
@@ -233,7 +232,7 @@
233232
(fn [{:keys [db]} [_]]
234233
(let [document (document.handlers/persisted-format db)]
235234
(if (= (:platform db) "web")
236-
{::document.effects/file-save
235+
{::effects/file-save
237236
{:data (document.handlers/save-format document)
238237
:options file-picker-options
239238
:formatter (fn [file] {:id (:id document)
@@ -259,7 +258,7 @@
259258
(fn [{:keys [db]} [_ id]]
260259
(let [document (document.handlers/persisted-format db id)]
261260
(if (= (:platform db) "web")
262-
{::document.effects/file-save
261+
{::effects/file-save
263262
{:data (document.handlers/save-format document)
264263
:options file-picker-options
265264
:formatter (fn [file] {:id id
@@ -278,7 +277,7 @@
278277
(fn [{:keys [db]} [_]]
279278
(let [document (document.handlers/persisted-format db)]
280279
(if (= (:platform db) "web")
281-
{::document.effects/file-save
280+
{::effects/file-save
282281
{:data (document.handlers/save-format document)
283282
:options file-picker-options
284283
:formatter (fn [file] {:id (:id document)
@@ -336,7 +335,7 @@
336335
{:channel "export"
337336
:data svg
338337
:on-error [::notification.events/show-exception]}}
339-
{::document.effects/file-save
338+
{::effects/file-save
340339
[:data svg
341340
:on-error [::notification.events/show-exception]
342341
:options {:startIn "pictures"

src/renderer/effects.cljs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
(ns renderer.effects
22
(:require
33
[re-frame.core :as rf]
4+
[renderer.notification.events :as-alias notification.events]
45
[renderer.utils.dom :as utils.dom]
56
[renderer.utils.error :as utils.error]))
67

@@ -48,6 +49,30 @@
4849
(cb (first (.. e -target -files)))))
4950
(.click el)))
5051

52+
(rf/reg-fx
53+
::file-save
54+
(fn [{:keys [options data on-success on-error formatter]}]
55+
(if (.-showSaveFilePicker js/window)
56+
(-> (.showSaveFilePicker js/window (clj->js options))
57+
(.then (fn [^js/FileSystemFileHandle file-handle]
58+
(.then (.createWritable file-handle)
59+
(fn [^js/FileSystemWritableFileStream writable-stream]
60+
(.then (.write writable-stream data)
61+
(fn []
62+
(.close writable-stream)
63+
(when on-success
64+
(rf/dispatch (conj on-success
65+
(cond-> file-handle
66+
formatter
67+
formatter))))))))))
68+
(.catch (fn [^js/Error error]
69+
(when (and on-error (not (utils.error/abort-error? error)))
70+
(rf/dispatch (conj on-error error))))))
71+
(rf/dispatch
72+
[::notification.events/show-unavailable-feature
73+
"Save File Picker"
74+
"https://developer.mozilla.org/en-US/docs/Web/API/Window/showSaveFilePicker#browser_compatibility"]))))
75+
5176
(rf/reg-fx
5277
::file-open
5378
(fn [{:keys [options on-error on-success]}]

0 commit comments

Comments
 (0)