enhance(ux): move logout and report bug to more actions on settings

This commit is contained in:
Tienson Qin
2025-07-05 18:06:47 +08:00
parent 000ea6f59c
commit 48da90f200

View File

@@ -1,42 +1,62 @@
(ns mobile.components.settings
"Mobile settings"
(:require [mobile.ionic :as ion]
[frontend.components.repo :as repo]
(:require [frontend.components.repo :as repo]
[frontend.components.user.login :as login]
[frontend.handler.user :as user-handler]
[frontend.state :as state]
[logseq.shui.ui :as shui]
[mobile.components.ui :as ui-component]
[mobile.ionic :as ion]
[rum.core :as rum]))
(rum/defc user-profile < rum/reactive
(rum/defc user-profile
[login?]
(if-not login?
(shui/button
{:variant :default
:class "text-1xl flex flex-1 w-full my-8"
:on-click #(shui/dialog-open! login/page-impl
{:close-btn? false
:align :top
:content-props {:class "app-login-modal"}})}
"Login")
[:div.py-2
[:h2.py-3.flex.justify-between.items-center
[:strong.text-4xl.font-semibold (user-handler/username)]]
[:div.text-sm.text-muted-foreground.px-1 (user-handler/email)]]))
(rum/defc page < rum/reactive
[]
(let [login? (and (state/sub :auth/id-token) (user-handler/logged-in?))]
(if-not login?
(shui/button
{:variant :default
:class "text-1xl flex flex-1 w-full"
:on-click #(shui/dialog-open! login/page-impl
{:close-btn? false
:align :top
:content-props {:class "app-login-modal"}})}
"Login")
[:div.py-2
[:h2.py-3.flex.justify-between.items-center
[:strong.text-4xl.font-semibold (user-handler/username)]
(ion/button {:size "small"
:mode "ios"
:fill "outline"
:color "danger"
:on-click user-handler/logout} "logout")]
[:code (user-handler/email)]])))
(rum/defc page
[]
(ion/page
(ion/header
(ion/page
(ion/header
(ion/toolbar
(ion/title "Settings")))
(ion/content {:class "ion-padding"}
(user-profile)
(ion/title "Settings")
(let [buttons (->> [(when login?
{:text "Logout" :role "logout"})
{:text "Report bug" :role "report-bug"}]
(remove nil?))]
(ion/buttons {:slot "end"}
(ion/button
{:size "small"
:fill "clear"
:on-click (fn [_e]
(ui-component/open-modal! "Settings"
{:type :action-sheet
:buttons buttons
:inputs []
:on-action (fn [e]
(when-let [role (:role e)]
(case role
"logout"
(user-handler/logout)
"report-bug"
(js/window.open "https://github.com/logseq/db-test/issues" "_blank")
nil)))
:modal-props {:class "graph-switcher"}}))}
[:span.text-muted-foreground {:slot "icon-only"}
(ion/tabler-icon "dots" {:size 20})])))))
(ion/content {:class "ion-padding"}
(user-profile login?)
[:div.mt-8
(repo/repos-cp)])))
(repo/repos-cp)]))))