user.cljs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. (ns frontend.handler.user
  2. (:require [frontend.util :as util :refer-macros [profile]]
  3. [frontend.state :as state]
  4. [frontend.db :as db]
  5. [frontend.idb :as idb]
  6. [frontend.config :as config]
  7. [frontend.storage :as storage]
  8. [promesa.core :as p]
  9. [goog.object :as gobj]
  10. [frontend.handler.notification :as notification])
  11. (:import [goog.format EmailAddress]))
  12. (defn email? [v]
  13. (and v
  14. (.isValid (EmailAddress. v))))
  15. (defn set-email!
  16. [email]
  17. (when (email? email)
  18. (util/post (str config/api "email")
  19. {:email email}
  20. (fn [result]
  21. (db/transact! [{:me/email email}])
  22. (swap! state/state assoc-in [:me :email] email))
  23. (fn [error]
  24. (notification/show! "Email already exists!"
  25. :error)))))
  26. (defn set-cors!
  27. [cors-proxy]
  28. (util/post (str config/api "cors_proxy")
  29. {:cors-proxy cors-proxy}
  30. (fn [result]
  31. (db/transact! [{:me/cors_proxy cors-proxy}])
  32. (swap! state/state assoc-in [:me :cors_proxy] cors-proxy))
  33. (fn [error]
  34. (notification/show! "Set cors proxy failed." :error)
  35. (js/console.dir error))))
  36. (defn set-preferred-format!
  37. [format]
  38. (when format
  39. (state/set-preferred-format! format)
  40. (when (:name (:me @state/state))
  41. (util/post (str config/api "set_preferred_format")
  42. {:preferred_format (name format)}
  43. (fn [_result]
  44. (notification/show! "Format set successfully!" :success))
  45. (fn [_e])))))
  46. (defn set-preferred-workflow!
  47. [workflow]
  48. (when workflow
  49. (state/set-preferred-workflow! workflow)
  50. (when (:name (:me @state/state))
  51. (util/post (str config/api "set_preferred_workflow")
  52. {:preferred_workflow (name workflow)}
  53. (fn [_result]
  54. (notification/show! "Workflow set successfully!" :success))
  55. (fn [_e])))))
  56. (defn sign-out!
  57. [_e]
  58. (when (js/confirm "Your local notes will be completely removed after signing out. Continue?")
  59. (->
  60. (idb/clear-local-storage-and-idb!)
  61. (p/catch (fn [e]
  62. (println "sign out error: ")
  63. (js/console.dir e)))
  64. (p/finally (fn []
  65. (set! (.-href js/window.location) "/logout"))))))