improve navigation and bottom sheet (#15467)

Co-authored-by: Churikova Tetiana <tatiana@status.im>
This commit is contained in:
flexsurfer 2023-03-31 16:13:27 +02:00 committed by GitHub
parent abe4dc7ac1
commit 103e154076
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
144 changed files with 1829 additions and 1803 deletions

View File

@ -6,10 +6,10 @@ export function useTranslateY(initialTranslationY, bottomSheetDy, panY) {
})
}
export function useBackgroundOpacity(translateY, backgroundHeight, windowHeight) {
export function useBackgroundOpacity(translateY, backgroundHeight, windowHeight, opacity) {
return useDerivedValue(() => {
const opacity = ((translateY.value - windowHeight) / -backgroundHeight) * 0.5
const calculatedOpacity = ((translateY.value - windowHeight) / -backgroundHeight) * opacity
return Math.max(Math.min(opacity, 0.5), 0)
return Math.max(Math.min(calculatedOpacity, opacity), 0)
})
}

View File

@ -6,7 +6,8 @@
Swipeable
TouchableWithoutFeedback
gestureHandlerRootHOC
FlatList)]
FlatList
ScrollView)]
[react-native.flat-list :as rn-flat-list]
[reagent.core :as reagent]))
@ -69,6 +70,9 @@
children))
(def gesture-flat-list (reagent/adapt-react-class FlatList))
(defn flat-list
[props]
[gesture-flat-list (rn-flat-list/base-list-props props)])
(def scroll-view (reagent/adapt-react-class ScrollView))

View File

@ -16,7 +16,8 @@
cancelAnimation
SlideInUp
SlideOutUp
LinearTransition)]
LinearTransition
runOnJS)]
[reagent.core :as reagent]
["react-native-redash" :refer (withPause)]
[react-native.flat-list :as rn-flat-list]
@ -64,6 +65,8 @@
(def with-pause withPause)
(def cancel-animation cancelAnimation)
(def run-on-js runOnJS)
;; Easings
(def bezier (.-bezier ^js Easing))

View File

@ -83,7 +83,7 @@
(if new-contact?
(rf/merge cofx
(contact/add-contact chat-key nickname ens-name)
(navigation/navigate-to-cofx :contacts-list {}))
(navigation/navigate-to :contacts-list {}))
(chat/start-chat cofx chat-key ens-name))
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
:content (case validation-result

View File

@ -0,0 +1,30 @@
(ns status-im.bottom-sheet.events
(:require [utils.re-frame :as rf]))
(rf/defn show-bottom-sheet-old
[{:keys [db]} {:keys [view options]}]
{:dismiss-keyboard nil
:show-bottom-sheet-overlay-old nil
:db (assoc db
:bottom-sheet/show? true
:bottom-sheet/view view
:bottom-sheet/options options)})
(rf/defn show-bottom-sheet-event
{:events [:bottom-sheet/show-sheet-old]}
[cofx view options]
(show-bottom-sheet-old
cofx
{:view view
:options options}))
(rf/defn hide-bottom-sheet-old
{:events [:bottom-sheet/hide-old]}
[{:keys [db]}]
{:db (assoc db :bottom-sheet/show? false)
:dismiss-bottom-sheet-overlay-old nil})
(rf/defn hide-bottom-sheet-navigation-overlay
{:events [:bottom-sheet/hide-old-navigation-overlay]}
[{}]
{:dismiss-bottom-sheet-overlay-old nil})

View File

@ -1,4 +1,4 @@
(ns status-im2.common.bottom-sheet.sheets
(ns status-im.bottom-sheet.sheets
(:require [utils.re-frame :as rf]
[status-im.ui.screens.about-app.views :as about-app]
[status-im.ui.screens.home.sheet.views :as home.sheet]
@ -6,16 +6,15 @@
[status-im.ui.screens.mobile-network-settings.view :as mobile-network-settings]
[status-im.ui.screens.multiaccounts.key-storage.views :as key-storage]
[status-im.ui.screens.multiaccounts.recover.views :as recover.views]
[status-im2.common.bottom-sheet.view :as bottom-sheet]
[status-im2.contexts.chat.menus.pinned-messages.view :as pinned-messages-menu]
[status-im.bottom-sheet.view :as bottom-sheet]
[react-native.core :as rn]))
(defn bottom-sheet
[]
(let [dismiss-bottom-sheet-callback (fn []
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
true)
{:keys [show? view options]} (rf/sub [:bottom-sheet])
{:keys [show? view options]} (rf/sub [:bottom-sheet-old])
{:keys [content]
:as opts}
(cond-> {:visible? show?}
@ -31,12 +30,6 @@
(= view :add-new)
(merge home.sheet/add-new)
(= view :new-chat-bottom-sheet)
(merge home.sheet/new-chat-bottom-sheet-comp)
(= view :start-a-new-chat)
(merge home.sheet/start-a-new-chat)
(= view :keycard.login/more)
(merge keycard/more-sheet)
@ -47,11 +40,8 @@
(merge recover.views/bottom-sheet)
(= view :migrate-account-password)
(merge key-storage/migrate-account-password)
(merge key-storage/migrate-account-password))]
(= view :pinned-messages-list)
(merge {:content pinned-messages-menu/pinned-messages
:bottom-safe-area-spacing? false}))]
[:f>
(fn []
(rn/use-effect (fn []

View File

@ -0,0 +1,56 @@
(ns status-im.bottom-sheet.styles
(:require [quo2.foundations.colors :as colors]))
(def border-radius 20)
(defn handle
[override-theme]
{:position :absolute
:top 8
:width 32
:height 4
:background-color (colors/theme-colors colors/neutral-100 colors/white override-theme)
:opacity 0.1
:border-radius 100
:align-self :center})
(def backdrop
{:position :absolute
:left 0
:right 0
:bottom 0
:top 0
:background-color colors/neutral-100})
(def container
{:position :absolute
:left 0
:right 0
:top 0
:bottom 0
:overflow :hidden})
(defn content-style
[insets bottom-safe-area-spacing?]
{:position :absolute
:left 0
:right 0
:top 0
:padding-top border-radius
:padding-bottom (if bottom-safe-area-spacing? (:bottom insets) 0)})
(defn selected-background
[override-theme]
{:border-radius 12
:padding-left 12
:margin-horizontal 8
:margin-bottom 10
:height 48
:background-color (colors/theme-colors colors/white colors/neutral-90 override-theme)})
(defn background
[override-theme]
{:background-color (colors/theme-colors colors/white colors/neutral-95 override-theme)
:flex 1
:border-top-left-radius border-radius
:border-top-right-radius border-radius})

View File

@ -0,0 +1,240 @@
(ns status-im.bottom-sheet.view
(:require [oops.core :refer [oget]]
[quo.react :as react]
[status-im.bottom-sheet.styles :as styles]
[re-frame.core :as re-frame]
[react-native.background-timer :as timer]
[react-native.core :as rn]
[react-native.gesture :as gesture]
[react-native.hooks :as hooks]
[react-native.platform :as platform]
[react-native.reanimated :as reanimated]
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[utils.worklets.bottom-sheet :as worklets.bottom-sheet]))
(def animation-delay 450)
(defn with-animation
[value & [options callback]]
(reanimated/with-spring
value
(clj->js (merge {:mass 2
:stiffness 500
:damping 200})
options)
callback))
(defn get-bottom-sheet-gesture
[pan-y translate-y bg-height bg-height-expanded
window-height keyboard-shown disable-drag? expandable?
show-bottom-sheet? expanded? close-bottom-sheet gesture-running?]
(-> (gesture/gesture-pan)
(gesture/on-start
(fn [_]
(reset! gesture-running? true)
(when (and keyboard-shown (not disable-drag?) show-bottom-sheet?)
(re-frame/dispatch [:dismiss-keyboard]))))
(gesture/on-update
(fn [evt]
(when (and (not disable-drag?) show-bottom-sheet?)
(let [max-pan-up (if (or @expanded? (not expandable?))
0
(- (- bg-height-expanded bg-height)))
max-pan-down (if @expanded?
bg-height-expanded
bg-height)]
(reanimated/set-shared-value pan-y
(max
(min
(.-translationY evt)
max-pan-down)
max-pan-up))))))
(gesture/on-end
(fn [_]
(reset! gesture-running? false)
(when (and (not disable-drag?) show-bottom-sheet?)
(let [end-pan-y (- window-height (.-value translate-y))
expand-threshold (min (* bg-height 1.1) (+ bg-height 50))
collapse-threshold (max (* bg-height-expanded 0.9) (- bg-height-expanded 50))
should-close-bottom-sheet? (< end-pan-y (max (* bg-height 0.7) 50))]
(cond
should-close-bottom-sheet?
(close-bottom-sheet)
(and (not @expanded?) (> end-pan-y expand-threshold))
(reset! expanded? true)
(and @expanded? (< end-pan-y collapse-threshold))
(reset! expanded? false))))))))
(defn handle-comp
[window-width override-theme]
[rn/view
{:style {:width window-width
:position :absolute
:background-color :transparent
:top 0
:height 20}}
[rn/view {:style (styles/handle override-theme)}]])
(defn bottom-sheet
[props children]
(let [{on-cancel :on-cancel
disable-drag? :disable-drag?
show-handle? :show-handle?
visible? :visible?
backdrop-dismiss? :backdrop-dismiss?
expandable? :expandable?
bottom-safe-area-spacing? :bottom-safe-area-spacing?
selected-item :selected-item
is-initially-expanded? :expanded?
override-theme :override-theme
:or {show-handle? true
backdrop-dismiss? true
expandable? false
bottom-safe-area-spacing? true
is-initially-expanded? false}}
props
content-height (reagent/atom nil)
show-bottom-sheet? (reagent/atom nil)
keyboard-was-shown? (reagent/atom false)
expanded? (reagent/atom is-initially-expanded?)
gesture-running? (reagent/atom false)
reset-atoms (fn []
(reset! show-bottom-sheet? nil)
(reset! content-height nil)
(reset! expanded? false)
(reset! keyboard-was-shown? false)
(reset! gesture-running? false))
close-bottom-sheet (fn []
(reset! show-bottom-sheet? false)
(when (fn? on-cancel) (on-cancel))
(timer/set-timeout
#(do
(re-frame/dispatch [:bottom-sheet/hide-old-navigation-overlay])
(reset-atoms))
animation-delay))]
[safe-area/consumer
(fn [insets]
[:f>
(fn []
(let [{height :height
window-width :width}
(rn/use-window-dimensions)
window-height (if selected-item (- height 72) height)
{:keys [keyboard-shown]} (hooks/use-keyboard)
bg-height-expanded (- window-height (:top insets))
bg-height (max (min @content-height bg-height-expanded) 109)
bottom-sheet-dy (reanimated/use-shared-value 0)
pan-y (reanimated/use-shared-value 0)
translate-y (worklets.bottom-sheet/use-translate-y window-height bottom-sheet-dy pan-y)
bg-opacity
(worklets.bottom-sheet/use-background-opacity translate-y bg-height window-height 0.7)
on-content-layout (fn [evt]
(let [height (oget evt "nativeEvent" "layout" "height")]
(reset! content-height height)))
on-expanded (fn []
(reanimated/set-shared-value bottom-sheet-dy bg-height-expanded)
(reanimated/set-shared-value pan-y 0))
on-collapsed (fn []
(reanimated/set-shared-value bottom-sheet-dy bg-height)
(reanimated/set-shared-value pan-y 0))
bottom-sheet-gesture (get-bottom-sheet-gesture
pan-y
translate-y
bg-height
bg-height-expanded
window-height
keyboard-shown
disable-drag?
expandable?
show-bottom-sheet?
expanded?
close-bottom-sheet
gesture-running?)
handle-comp [gesture/gesture-detector {:gesture bottom-sheet-gesture}
[handle-comp window-width override-theme]]]
(react/effect! #(do
(cond
(and
(nil? @show-bottom-sheet?)
visible?
(some? @content-height)
(> @content-height 0))
(reset! show-bottom-sheet? true)
(and @show-bottom-sheet? (not visible?))
(close-bottom-sheet)))
[@show-bottom-sheet? @content-height visible?])
(react/effect! #(do
(when @show-bottom-sheet?
(cond
keyboard-shown
(do
(reset! keyboard-was-shown? true)
(reset! expanded? true))
(and @keyboard-was-shown? (not keyboard-shown))
(reset! expanded? false))))
[@show-bottom-sheet? @keyboard-was-shown? keyboard-shown])
(react/effect! #(do
(when-not @gesture-running?
(cond
@show-bottom-sheet?
(if @expanded?
(do
(reanimated/set-shared-value
bottom-sheet-dy
(with-animation (+ bg-height-expanded (.-value pan-y))))
;; Workaround for
;; https://github.com/software-mansion/react-native-reanimated/issues/1758#issue-817145741
;; withTiming/withSpring callback not working
;; on-expanded should be called as a callback of
;; with-animation instead, once this issue has been resolved
(timer/set-timeout on-expanded animation-delay))
(do
(reanimated/set-shared-value
bottom-sheet-dy
(with-animation (+ bg-height (.-value pan-y))))
;; Workaround for
;; https://github.com/software-mansion/react-native-reanimated/issues/1758#issue-817145741
;; withTiming/withSpring callback not working
;; on-collapsed should be called as a callback of
;; with-animation instead, once this issue has been resolved
(timer/set-timeout on-collapsed animation-delay)))
(= @show-bottom-sheet? false)
(reanimated/set-shared-value bottom-sheet-dy (with-animation 0)))))
[@show-bottom-sheet? @expanded? @gesture-running?])
[:<>
[rn/touchable-without-feedback {:on-press (when backdrop-dismiss? close-bottom-sheet)}
[reanimated/view
{:style (reanimated/apply-animations-to-style
{:opacity bg-opacity}
styles/backdrop)}]]
(cond->> [reanimated/view
{:style (reanimated/apply-animations-to-style
{:transform [{:translateY translate-y}]}
{:width window-width
:height window-height})}
[rn/view {:style styles/container}
(when selected-item
[rn/view {:style (styles/selected-background override-theme)}
[selected-item]])
[rn/view {:style (styles/background override-theme)}
[rn/keyboard-avoiding-view
{:behaviour (if platform/ios? :padding :height)
:style {:flex 1}}
[rn/view
{:style (styles/content-style insets bottom-safe-area-spacing?)
:on-layout (when-not (and
(some? @content-height)
(> @content-height 0))
on-content-layout)}
children]]
(when show-handle?
handle-comp)]]]
(not show-handle?)
(conj [gesture/gesture-detector {:gesture bottom-sheet-gesture}]))]))])]))

View File

@ -3,7 +3,7 @@
["eth-phishing-detect" :as eth-phishing-detect]
[clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.browser.eip3085 :as eip3085]
[status-im.browser.eip3326 :as eip3326]
[status-im.browser.permissions :as browser.permissions]
@ -572,7 +572,7 @@
[{:keys [db] :as cofx} address]
(rf/merge cofx
{:browser/clear-web-data nil}
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(browser.permissions/clear-dapps-permissions)
(multiaccounts.update/multiaccount-update :dapps-address address {})
#(when (= (:view-id db) :browser)

View File

@ -28,7 +28,7 @@
:on-success #(re-frame/dispatch [:eip3085/send-success-call-to-bridge cofx id
message-id])
:on-error #(log/error "failed to perform settings_saveSetting" %)}]
:dispatch [:bottom-sheet/hide]})
:dispatch [:bottom-sheet/hide-old]})
(rf/defn deny-permission
{:events [:eip3085.ui/dapp-permission-denied]}
@ -37,7 +37,7 @@
:messageId message-id
:error {:code 4001
:message "User rejected the request."}}
:dispatch [:bottom-sheet/hide]})
:dispatch [:bottom-sheet/hide-old]})
(rf/defn handle-add-ethereum-chain
{:events [:eip3085/handle-add-ethereum-chain]}
@ -64,7 +64,7 @@
:id id
:new-network network)]
(if (network/chain-id-available? networks network)
{:dispatch [:bottom-sheet/show-sheet
{:dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[sheet/permissions-panel dapp-name message-id params])}]}
(send-success-call-to-bridge cofx id message-id)))

View File

@ -13,7 +13,7 @@
:messageId message-id
:error {:code 4001
:message "User rejected the request."}}
:dispatch [:bottom-sheet/hide]})
:dispatch [:bottom-sheet/hide-old]})
(rf/defn handle-switch-ethereum-chain
{:events [:eip3326/handle-switch-ethereum-chain]}
@ -39,7 +39,7 @@
:target-network-id target-network-id
:network-from network-from
:network-to network-to)]
{:dispatch [:bottom-sheet/show-sheet
{:dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[sheet/permissions-panel dapp-name message-id params])}]}))
{:browser/send-to-bridge {:type constants/web3-send-async-callback

View File

@ -8,7 +8,7 @@
[status-im.async-storage.core :as async-storage]
[status-im.ui.components.emoji-thumbnail.styles :as emoji-thumbnail-styles]
[status-im.utils.universal-links.core :as universal-links]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im2.common.toasts.events :as toasts]
[status-im2.constants :as constants]
[status-im2.contexts.activity-center.events :as activity-center]
@ -445,7 +445,7 @@
[cofx id]
(rf/merge cofx
(reset-community-id-input id)
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(navigation/open-modal :invite-people-community {:invite? true})))
(rf/defn share-community-pressed
@ -453,7 +453,7 @@
[cofx id]
(rf/merge cofx
(reset-community-id-input id)
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(navigation/open-modal :invite-people-community {})))
(rf/defn create-channel-pressed
@ -575,7 +575,7 @@
{:events [::member-banned]}
[cofx response-js]
(rf/merge cofx
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(handle-response response-js)
(activity-center/notifications-fetch-unread-count)))
@ -596,7 +596,7 @@
{:events [::member-kicked]}
[cofx response-js]
(rf/merge cofx
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(handle-response response-js)))
(rf/defn member-kick
@ -817,13 +817,13 @@
[cofx community-id]
(rf/merge cofx
(navigation/pop-to-root :shell-stack)
(navigation/navigate-to-cofx :community-overview community-id)))
(navigation/navigate-to :community-overview community-id)))
(rf/defn member-role-updated
{:events [:community.member/role-updated]}
[cofx response-js]
(rf/merge cofx
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(handle-response response-js)))
(rf/defn add-role-to-member

View File

@ -9,4 +9,4 @@
{:db (assoc db
:group/selected-contacts #{}
:new-chat-name "")}
(navigation/navigate-to-cofx :contact-toggle-list nil)))
(navigation/navigate-to :contact-toggle-list nil)))

View File

@ -2,7 +2,7 @@
(:refer-clojure :exclude [name])
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.eip55 :as eip55]
[status-im.ethereum.ens :as ens]
@ -121,7 +121,7 @@
(let [{:keys [state username custom-domain?]} (:ens/registration db)]
(case state
(:available :owned)
(navigation/navigate-to-cofx cofx :ens-checkout {})
(navigation/navigate-to cofx :ens-checkout {})
:connected-with-different-key
(re-frame/dispatch [::set-pub-key])
:connected
@ -261,7 +261,7 @@
[{:keys [db] :as cofx} _ {:keys [address]}]
(rf/merge cofx
{:db (assoc-in db [:ens/registration :address] address)}
(bottom-sheet/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(rf/defn save-preferred-name
{:events [::save-preferred-name]}
@ -311,14 +311,14 @@
::resolve-pubkey
[chain-id username
#(re-frame/dispatch [::public-key-resolved username %])]}
(navigation/navigate-to-cofx :ens-name-details username))))
(navigation/navigate-to :ens-name-details username))))
(rf/defn start-registration
{:events [::add-username-pressed ::get-started-pressed]}
[{:keys [db] :as cofx}]
(rf/merge cofx
(set-username-candidate (get-in db [:ens/registration :username] ""))
(navigation/navigate-to-cofx :ens-search {})))
(navigation/navigate-to :ens-search {})))
(rf/defn remove-username
{:events [::remove-username]}

View File

@ -245,7 +245,7 @@
{:db (-> db
(assoc :new-chat-name (get-in db [:chats chat-id :name]))
(assoc :current-chat-id chat-id))}
(navigation/navigate-to-cofx :group-chat-profile nil)))
(navigation/navigate-to :group-chat-profile nil)))
(rf/defn ui-leave-chat-pressed
{:events [:group-chats.ui/leave-chat-pressed]}
@ -256,5 +256,5 @@
:content (i18n/label :t/leave-chat-confirmation)
:confirm-button-text (i18n/label :t/leave)
:on-accept #(do
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch [:group-chats.ui/leave-chat-confirmed chat-id]))}}))

View File

@ -18,8 +18,8 @@
{:db (-> db
(assoc-in [:keycard :creating-backup?] backup-type))}
(when (:multiaccount db)
(navigation/navigate-to-cofx :my-profile nil))
(navigation/navigate-to-cofx :seed-phrase nil)))
(navigation/navigate-to :my-profile nil))
(navigation/navigate-to :seed-phrase nil)))
(rf/defn recovery-card-pressed
{:events [:keycard-settings.ui/recovery-card-pressed]}
@ -69,4 +69,4 @@
(update :multiaccounts/key-storage dissoc :seed-phrase))
:dismiss-keyboard nil}
(common/listen-to-hardware-back-button)
(navigation/navigate-to-cofx :keycard-onboarding-intro nil)))
(navigation/navigate-to :keycard-onboarding-intro nil)))

View File

@ -59,7 +59,7 @@
(common/clear-pin)
(common/hide-connection-sheet)
(if (get-in db [:keycard :pin :puk-restore?])
(navigation/navigate-to-cofx :multiaccounts nil)
(navigation/navigate-to :multiaccounts nil)
(navigation/set-stack-root :profile-stack [:my-profile :keycard-settings]))))
(rf/defn change-pin
@ -150,7 +150,7 @@
:content (i18n/label :t/pin-changed)}}
(common/hide-connection-sheet)
(if puk-restore?
(navigation/navigate-to-cofx :multiaccounts nil)
(navigation/navigate-to :multiaccounts nil)
(navigation/set-stack-root :profile-stack [:my-profile :keycard-settings]))
(when (:multiaccounts/login db)
(common/get-keys-from-keycard)))))
@ -211,5 +211,5 @@
:sign []
:error-label :t/pin-mismatch))}
(when (zero? pin-retries) (common/frozen-keycard-popup))
(navigation/navigate-to-cofx :enter-pin-settings nil))
(navigation/navigate-to :enter-pin-settings nil))
(common/show-wrong-keycard-alert))))))

View File

@ -1,7 +1,7 @@
(ns status-im.keycard.common
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.ethereum.core :as ethereum]
[utils.i18n :as i18n]
[status-im.keycard.nfc :as nfc]
@ -195,8 +195,7 @@
connected?)
(rf/merge
cofx
{:dismiss-keyboard true}
(bottom-sheet/show-bottom-sheet
(bottom-sheet/show-bottom-sheet-old
{:view {:transparent platform/ios?
:show-handle? false
:backdrop-dismiss? false
@ -231,7 +230,7 @@
{:db (assoc-in db [:keycard :card-read-in-progress?] false)}
(restore-on-card-connected)
(restore-on-card-read)
(bottom-sheet/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(rf/defn hide-connection-sheet
[cofx]
@ -309,7 +308,7 @@
[{:keys [db] :as cofx}]
(rf/merge cofx
{:db (assoc-in db [:keycard :pin :current] [])}
(navigation/navigate-to-cofx :enter-pin-settings nil)))
(navigation/navigate-to :enter-pin-settings nil)))
(defn- tag-lost-exception?
[code error]
@ -492,7 +491,7 @@
(if login?
(rf/merge cofx
(clear-on-card-read)
(navigation/navigate-to-cofx :not-keycard nil))
(navigation/navigate-to :not-keycard nil))
(rf/merge cofx
{:db (assoc-in db [:keycard :application-info-error] error)}

View File

@ -40,7 +40,7 @@
{:enter-step :original
:original []
:confirmation []}))}
(navigation/navigate-to-cofx :keycard-onboarding-pin nil)))
(navigation/navigate-to :keycard-onboarding-pin nil)))
(rf/defn load-recovery-pin-screen
[{:keys [db] :as cofx}]
@ -66,7 +66,7 @@
"instance-uid"
instance-uid)
(if (= flow :import)
(navigation/navigate-to-cofx cofx :keycard-recovery-no-key nil)
(navigation/navigate-to cofx :keycard-recovery-no-key nil)
(if paired?
(rf/merge cofx
(common/listen-to-hardware-back-button)
@ -86,7 +86,7 @@
(assoc-in [:keycard :pin :on-verified] nil)
(assoc-in [:keycard :setup-step] nil))}
(common/clear-on-card-connected)
(navigation/navigate-to-cofx :keycard-settings nil)))
(navigation/navigate-to :keycard-settings nil)))
(rf/defn password-option-pressed
{:eevents [:keycard.ui/password-option-pressed]}
@ -272,7 +272,7 @@
(not on-verified-failure))
(when exporting?
(navigation/navigate-back)))
;(navigation/navigate-to-cofx :enter-pin-settings nil)))
;(navigation/navigate-to :enter-pin-settings nil)))
(when (zero? pin-retries) (common/frozen-keycard-popup))
(when on-verified-failure
(fn [_]
@ -505,7 +505,7 @@
(when multiaccount
(set-multiaccount-pairing multiaccount pairing paired-on))
(when (= flow :login)
(navigation/navigate-to-cofx :multiaccounts nil))
(navigation/navigate-to :multiaccounts nil))
(when (= flow :recovery)
(onboarding/proceed-with-generating-key))
(when (= flow :import)
@ -531,7 +531,7 @@
:keycard/pair))
(common/hide-connection-sheet)
(when (= flow :import)
(navigation/navigate-to-cofx :keycard-recovery-pair nil))
(navigation/navigate-to :keycard-recovery-pair nil))
(when (not= setup-step :enter-pair-code)
(common/process-error code error))))))
@ -579,7 +579,7 @@
(when (= card-state :pre-init)
(if (= flow :import)
(navigation/navigate-to-cofx :keycard-recovery-no-key nil)
(navigation/navigate-to :keycard-recovery-no-key nil)
(fn [cofx]
(rf/merge
cofx
@ -596,7 +596,7 @@
(when (= card-state :blank)
(if (= flow :import)
(navigation/navigate-to-cofx :keycard-recovery-no-key nil)
(navigation/navigate-to :keycard-recovery-no-key nil)
(show-no-keycard-applet-alert)))
(when (and (= card-state :multiaccount)

View File

@ -6,7 +6,7 @@
(rf/defn reset-card-pressed
{:events [:keycard-settings.ui/reset-card-pressed]}
[cofx]
(navigation/navigate-to-cofx cofx :reset-card nil))
(navigation/navigate-to cofx :reset-card nil))
(rf/defn delete-card
[{:keys [db] :as cofx}]
@ -20,7 +20,7 @@
(rf/defn navigate-to-reset-card-screen
{:events [:keycard/navigate-to-reset-card-screen]}
[cofx]
(navigation/navigate-to-cofx cofx :reset-card nil))
(navigation/navigate-to cofx :reset-card nil))
(rf/defn reset-card-next-button-pressed
{:events [:keycard-settings.ui/reset-card-next-button-pressed]}

View File

@ -1,5 +1,5 @@
(ns status-im.keycard.login
(:require [status-im2.common.bottom-sheet.events :as bottom-sheet]
(:require [status-im.bottom-sheet.events :as bottom-sheet]
[status-im.ethereum.core :as ethereum]
[status-im.keycard.common :as common]
status-im.keycard.fx
@ -22,13 +22,13 @@
(rf/defn login-pin-more-icon-pressed
{:events [:keycard.login.pin.ui/more-icon-pressed]}
[cofx]
(bottom-sheet/show-bottom-sheet cofx {:view :keycard.login/more}))
(bottom-sheet/hide-bottom-sheet-old cofx))
(rf/defn login-create-key-pressed
{:events [:keycard.login.ui/create-new-key-pressed]}
[cofx]
(rf/merge cofx
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(onboarding/start-onboarding-flow)))
(rf/defn login-add-key-pressed
@ -48,7 +48,7 @@
(log/debug "[keycard] load-pair-card-pressed")
(rf/merge cofx
{:db (assoc-in db [:keycard :flow] :login)}
(navigation/navigate-to-cofx :keycard-recovery-pair nil)))
(navigation/navigate-to :keycard-recovery-pair nil)))
(rf/defn reset-pin
{:events [::reset-pin]}
@ -70,11 +70,11 @@
:status nil))
:hide-popover nil})
(when (:multiaccount db)
(navigation/navigate-to-cofx :my-profile nil))
(navigation/navigate-to :my-profile nil))
(when-not (:multiaccounts/login db)
(if (:popover/popover db)
(navigation/navigate-replace :keycard-pin nil)
(navigation/navigate-to-cofx :keycard-pin nil)))))
(navigation/navigate-to :keycard-pin nil)))))
(rf/defn dismiss-frozen-keycard-popover
{:events [::frozen-keycard-popover-dismissed]}
@ -107,22 +107,22 @@
(empty? application-info)
(rf/merge cofx
(common/hide-connection-sheet)
(navigation/navigate-to-cofx :not-keycard nil))
(navigation/navigate-to :not-keycard nil))
(empty? key-uid)
(rf/merge cofx
(common/hide-connection-sheet)
(navigation/navigate-to-cofx :keycard-blank nil))
(navigation/navigate-to :keycard-blank nil))
multiaccount-mismatch?
(rf/merge cofx
(common/hide-connection-sheet)
(navigation/navigate-to-cofx :keycard-wrong nil))
(navigation/navigate-to :keycard-wrong nil))
(not paired?)
(rf/merge cofx
(common/hide-connection-sheet)
(navigation/navigate-to-cofx :keycard-unpaired nil))
(navigation/navigate-to :keycard-unpaired nil))
(and (zero? pin-retry-counter)
(or (nil? puk-retry-counter)

View File

@ -36,7 +36,7 @@
(rf/merge cofx
{:utils/show-popup {:title (i18n/label :t/error)
:content (i18n/label :t/something-went-wrong)}}
(navigation/navigate-to-cofx :keycard-authentication-method nil))))))
(navigation/navigate-to :keycard-authentication-method nil))))))
(rf/defn load-preparing-screen
{:events [:keycard/load-preparing-screen]}
@ -120,7 +120,7 @@
[cofx]
(rf/merge cofx
(recovery-phrase-start-confirmation)
(navigation/navigate-to-cofx :keycard-onboarding-recovery-phrase-confirm-word1 nil)))
(navigation/navigate-to :keycard-onboarding-recovery-phrase-confirm-word1 nil)))
(rf/defn recovery-phrase-next-word
[{:keys [db]}]
@ -143,7 +143,7 @@
:on-verified :keycard/generate-and-load-key
:current []})
(assoc-in [:keycard :setup-step] :loading-keys))}
(navigation/navigate-to-cofx :keycard-onboarding-pin nil))
(navigation/navigate-to :keycard-onboarding-pin nil))
(load-finishing-screen cofx))))
(rf/defn recovery-phrase-confirm-word-next-pressed
@ -178,10 +178,10 @@
(rf/merge cofx
{:keycard/check-nfc-enabled nil}
(if (= flow :import)
(navigation/navigate-to-cofx :keycard-recovery-intro nil)
(navigation/navigate-to :keycard-recovery-intro nil)
(do
(common/listen-to-hardware-back-button)
(navigation/navigate-to-cofx :keycard-onboarding-intro nil))))))
(navigation/navigate-to :keycard-onboarding-intro nil))))))
(rf/defn start-onboarding-flow
{:events [:keycard/start-onboarding-flow]}
@ -190,7 +190,7 @@
{:db (assoc-in db [:keycard :flow] :create)
:keycard/check-nfc-enabled nil}
(common/listen-to-hardware-back-button)
(navigation/navigate-to-cofx :keycard-onboarding-intro nil)))
(navigation/navigate-to :keycard-onboarding-intro nil)))
(rf/defn open-nfc-settings-pressed
{:events [:keycard.onboarding.nfc-on/open-nfc-settings-pressed]}

View File

@ -1,7 +1,7 @@
(ns status-im.keycard.recovery
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im2.constants :as constants]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.eip55 :as eip55]
@ -54,16 +54,16 @@
(rf/merge cofx
{:db (-> db
(assoc-in [:keycard :setup-step] :pair))
:dispatch [:bottom-sheet/hide]}
:dispatch [:bottom-sheet/hide-old]}
(common/listen-to-hardware-back-button)
(navigation/navigate-to-cofx :keycard-recovery-pair nil)))
(navigation/navigate-to :keycard-recovery-pair nil)))
(rf/defn keycard-storage-selected-for-recovery
{:events [:recovery.ui/keycard-storage-selected]}
[{:keys [db] :as cofx}]
(rf/merge cofx
{:db (assoc-in db [:keycard :flow] :recovery)}
(navigation/navigate-to-cofx :keycard-recovery-enter-mnemonic nil)))
(navigation/navigate-to :keycard-recovery-enter-mnemonic nil)))
(rf/defn start-import-flow
{:events [::recover-with-keycard-pressed]}
@ -74,13 +74,13 @@
(assoc-in [:keycard :flow] :import)
(assoc :recovered-account? true))
:keycard/check-nfc-enabled nil}
(bottom-sheet/hide-bottom-sheet)
(navigation/navigate-to-cofx :keycard-recovery-intro nil)))
(bottom-sheet/hide-bottom-sheet-old)
(navigation/navigate-to :keycard-recovery-intro nil)))
(rf/defn access-key-pressed
{:events [:multiaccounts.recover.ui/recover-multiaccount-button-pressed]}
[_]
{:dispatch [:bottom-sheet/show-sheet :recover-sheet]})
{:dispatch [:bottom-sheet/show-sheet-old :recover-sheet]})
(rf/defn recovery-keycard-selected
{:events [:recovery.ui/keycard-option-pressed]}
@ -89,7 +89,7 @@
{:db (assoc-in db [:keycard :flow] :recovery)
:keycard/check-nfc-enabled nil}
(common/listen-to-hardware-back-button)
(navigation/navigate-to-cofx :keycard-onboarding-intro nil)))
(navigation/navigate-to :keycard-onboarding-intro nil)))
(rf/defn cancel-pressed
{:events [::cancel-pressed]}
@ -126,10 +126,10 @@
:keycard dissoc
:multiaccount-wallet-address
:multiaccount-whisper-public-key)}
(navigation/navigate-to-cofx (if platform/android?
:notifications-settings
:welcome)
nil)))
(navigation/navigate-to (if platform/android?
:notifications-settings
:welcome)
nil)))
(rf/defn intro-wizard
{:events [:multiaccounts.create.ui/intro-wizard]}
@ -141,7 +141,7 @@
(dissoc :restored-account?))}
(multiaccounts.create/prepare-intro-wizard)
(if (pos? (count accs))
(navigation/navigate-to-cofx :get-your-keys nil)
(navigation/navigate-to :get-your-keys nil)
(navigation/set-stack-root :onboarding [:get-your-keys])))))
(rf/defn recovery-no-key

View File

@ -87,7 +87,7 @@
:content (i18n/label :t/card-unpaired)}}
(common/clear-on-card-connected)
(remove-pairing-from-multiaccount nil)
(navigation/navigate-to-cofx :keycard-settings nil))))
(navigation/navigate-to :keycard-settings nil))))
(rf/defn on-unpair-error
{:events [:keycard.callback/on-unpair-error]}
@ -103,7 +103,7 @@
:utils/show-popup {:title ""
:content (i18n/label :t/something-went-wrong)}}
(common/clear-on-card-connected)
(navigation/navigate-to-cofx :keycard-settings nil)))
(navigation/navigate-to :keycard-settings nil)))
(rf/defn remove-key-with-unpair
{:events [:keycard/remove-key-with-unpair]}

View File

@ -1,5 +1,5 @@
(ns status-im.keycard.wallet
(:require [status-im2.common.bottom-sheet.events :as bottom-sheet]
(:require [status-im.bottom-sheet.events :as bottom-sheet]
[status-im2.constants :as constants]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.eip55 :as eip55]
@ -17,7 +17,7 @@
(assoc-in [:keycard :pin :enter-step] :export-key)
(update-in [:keycard :pin] dissoc :export-key))
:dismiss-keyboard nil}
(bottom-sheet/show-bottom-sheet {:view {:content add-new.views/pin}})))
(bottom-sheet/show-bottom-sheet-old {:view {:content add-new.views/pin}})))
(rf/defn verify-pin-with-delay
[cofx]
@ -29,7 +29,7 @@
(rf/defn hide-pin-sheet
{:events [:keycard/new-account-pin-sheet-hide]}
[cofx]
(bottom-sheet/hide-bottom-sheet cofx))
(bottom-sheet/hide-bottom-sheet-old cofx))
(rf/defn generate-new-keycard-account
{:events [:wallet.accounts/generate-new-keycard-account]}

View File

@ -255,7 +255,7 @@
(set-input :id id)
(set-input :url (str url))
(set-input :name (str name))
(navigation/navigate-to-cofx :edit-mailserver nil))))
(navigation/navigate-to :edit-mailserver nil))))
(defn mailserver->rpc
[mailserver current-fleet]
@ -411,4 +411,4 @@
[{:keys [db] :as cofx}]
(rf/merge cofx
{:db (dissoc db :mailserver.edit/mailserver)}
(navigation/navigate-to-cofx :edit-mailserver nil)))
(navigation/navigate-to :edit-mailserver nil)))

View File

@ -1,5 +1,5 @@
(ns status-im.mobile-sync-settings.core
(:require [status-im2.common.bottom-sheet.events :as bottom-sheet]
(:require [status-im.bottom-sheet.events :as bottom-sheet]
[status-im2.contexts.add-new-contact.events :as add-new-contact]
[status-im.mailserver.core :as mailserver]
[status-im.multiaccounts.model :as multiaccounts.model]
@ -33,7 +33,7 @@
(not remember-syncing-choice?)
(not= :create-multiaccount (:view-id db)))
[(bottom-sheet/show-bottom-sheet
[(bottom-sheet/show-bottom-sheet-old
{:view :mobile-network})
(sheet-defaults)]
@ -42,13 +42,13 @@
;; no reason to restart wallet.
(and logged-in? initialized?)
[(mailserver/process-next-messages-request)
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(wallet/restart-wallet-service nil)
(add-new-contact/set-new-identity-reconnected)]
logged-in?
[(mailserver/process-next-messages-request)
(bottom-sheet/hide-bottom-sheet)]))))
(bottom-sheet/hide-bottom-sheet-old)]))))
(defn apply-settings
([sync?] (apply-settings sync? :default))
@ -115,12 +115,10 @@
[cofx]
(rf/merge
cofx
(bottom-sheet/hide-bottom-sheet)
(navigation/navigate-to-cofx :mobile-network-settings nil)))
(bottom-sheet/hide-bottom-sheet-old)
(navigation/navigate-to :mobile-network-settings nil)))
(rf/defn mobile-network-show-offline-sheet
{:events [:mobile-network/show-offline-sheet]}
[cofx]
(bottom-sheet/show-bottom-sheet
cofx
{:view :mobile-network-offline}))
(bottom-sheet/hide-bottom-sheet-old cofx))

View File

@ -2,7 +2,7 @@
(:require [clojure.string :as string]
[quo.platform :as platform]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.multiaccounts.update.core :as multiaccounts.update]
[status-im.native-module.core :as native-module]
[utils.re-frame :as rf]
@ -147,12 +147,12 @@
[:dark :light colors/neutral-100]
[:light :dark colors/white])]
(theme/set-theme theme)
(re-frame/dispatch [:change-root-status-bar-style
(re-frame/dispatch [:change-shell-status-bar-style
(if (shell.animation/home-stack-open?) status-bar-theme :light)])
(when reload-ui?
(hot-reload/reload)
(when-not (= view-id :shell-stack)
(re-frame/dispatch [:change-root-nav-bar-color nav-bar-color]))))))
(re-frame/dispatch [:change-shell-nav-bar-color nav-bar-color]))))))
(rf/defn switch-appearance
{:events [:multiaccounts.ui/appearance-switched]}
@ -198,7 +198,7 @@
:params [key-uid (clean-path path) ax ay bx by]
;; NOTE: In case of an error we can show a toast error
:on-success #(re-frame/dispatch [::update-local-picture %])}]}
(bottom-sheet/hide-bottom-sheet))))
(bottom-sheet/hide-bottom-sheet-old))))
(rf/defn save-profile-picture-from-url
{:events [::save-profile-picture-from-url]}
@ -209,7 +209,7 @@
:params [key-uid url]
:on-error #(log/error "::save-profile-picture-from-url error" %)
:on-success #(re-frame/dispatch [::update-local-picture %])}]}
(bottom-sheet/hide-bottom-sheet))))
(bottom-sheet/hide-bottom-sheet-old))))
(comment
(re-frame/dispatch
@ -227,7 +227,7 @@
;; with a toast error
:on-success #(log/info "[multiaccount] Delete profile image" %)}]}
(multiaccounts.update/optimistic :images nil)
(bottom-sheet/hide-bottom-sheet))))
(bottom-sheet/hide-bottom-sheet-old))))
(rf/defn get-profile-picture
[cofx]

View File

@ -94,16 +94,16 @@
(rf/defn multiaccount-generate-and-derive-addresses-success
{:events [:multiaccount-generate-and-derive-addresses-success]}
[{:keys [db]} result]
{:db (update db
:intro-wizard
(fn [data]
(-> data
(dissoc :processing?)
(assoc :multiaccounts result
:selected-storage-type :default
:selected-id (-> result first :id)
:step :choose-key))))
:navigate-to-fx :choose-name})
{:db (update db
:intro-wizard
(fn [data]
(-> data
(dissoc :processing?)
(assoc :multiaccounts result
:selected-storage-type :default
:selected-id (-> result first :id)
:step :choose-key))))
:navigate-to :choose-name})
(rf/defn generate-and-derive-addresses
{:events [:generate-and-derive-addresses]}

View File

@ -1,7 +1,7 @@
(ns status-im.multiaccounts.key-storage.core
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.mnemonic :as mnemonic]
[utils.i18n :as i18n]
@ -22,7 +22,7 @@
"This event can be dispatched before login and from profile and needs to redirect accordingly"
{:events [::key-and-storage-management-pressed]}
[cofx]
(navigation/navigate-to-cofx
(navigation/navigate-to
cofx
(if (multiaccounts.model/logged-in? cofx)
:actions-logged-in
@ -60,7 +60,7 @@
(rf/merge
cofx
{:db (assoc db :recovered-account? true)}
(navigation/navigate-to-cofx :seed-phrase nil)))
(navigation/navigate-to :seed-phrase nil)))
(rf/defn seed-phrase-input-changed
{:events [::seed-phrase-input-changed]}
@ -85,7 +85,7 @@
(let [backup? (get-in db [:keycard :creating-backup?])]
(if backup?
(keycard.backup/start-keycard-backup cofx)
(navigation/navigate-to-cofx cofx :storage nil))))
(navigation/navigate-to cofx :storage nil))))
(defn validate-seed-against-key-uid
"Check if the key-uid was generated with the given seed-phrase"
@ -173,7 +173,7 @@ We don't need to take the exact steps, just set the required state and redirect
"
(rf/defn import-multiaccount
[{:keys [db] :as cofx}]
{:dispatch [:bottom-sheet/hide]
{:dispatch [:bottom-sheet/hide-old]
::multiaccounts.recover/import-multiaccount
{:passphrase (get-in db [:multiaccounts/key-storage :seed-phrase])
:password nil
@ -183,7 +183,7 @@ We don't need to take the exact steps, just set the required state and redirect
{:events [::delete-multiaccount-and-init-keycard-onboarding]}
[{:keys [db] :as cofx}]
(rf/merge
{:dispatch [:bottom-sheet/hide]
{:dispatch [:bottom-sheet/hide-old]
:db (assoc-in db [:multiaccounts/key-storage :reset-db-checked?] true)}
(import-multiaccount)))
@ -192,7 +192,7 @@ We don't need to take the exact steps, just set the required state and redirect
[{:keys [db] :as cofx}]
(if (get-in db [:multiaccounts/key-storage :reset-db-checked?])
(popover/show-popover cofx {:view :transfer-multiaccount-to-keycard-warning})
(bottom-sheet/show-bottom-sheet cofx {:view :migrate-account-password})))
(bottom-sheet/hide-bottom-sheet-old cofx)))
(rf/defn skip-password-pressed
{:events [::skip-password-pressed]}
@ -248,14 +248,14 @@ We don't need to take the exact steps, just set the required state and redirect
(dissoc :multiaccounts/key-storage))}
(popover/hide-popover)
(common/listen-to-hardware-back-button)
(navigation/navigate-to-cofx :keycard-onboarding-intro nil)))
(navigation/navigate-to :keycard-onboarding-intro nil)))
(rf/defn goto-multiaccounts-screen
{:events [::hide-popover-and-goto-multiaccounts-screen]}
[cofx _]
(rf/merge cofx
(popover/hide-popover)
(navigation/navigate-to-cofx :multiaccounts nil)))
(navigation/navigate-to :multiaccounts nil)))
(rf/defn confirm-logout-and-goto-key-storage
{:events [::confirm-logout-and-goto-key-storage]}

View File

@ -621,12 +621,12 @@
(if password
(rf/merge
cofx
{:db (update-in db
[:multiaccounts/login]
assoc
:password password
:save-password? true)
:init-root-fx :progress}
{:db (update-in db
[:multiaccounts/login]
assoc
:password password
:save-password? true)
:set-root :progress}
login)
(rf/merge
cofx
@ -636,10 +636,10 @@
(assoc-in [:keycard :pin :status] nil)
(assoc-in [:keycard :pin :login] []))})
#(if keycard-account?
{:init-root-fx :multiaccounts-keycard}
{:init-root-fx :profiles})
{:set-root :multiaccounts-keycard}
{:set-root :profiles})
#(when goto-key-storage?
(navigation/navigate-to-cofx % :actions-not-logged-in nil))))))
(navigation/navigate-to % :actions-not-logged-in nil))))))
(rf/defn get-credentials
[{:keys [db] :as cofx} key-uid]
@ -725,7 +725,7 @@
(rf/defn welcome-lets-go
{:events [:welcome-lets-go]}
[_]
{:init-root-fx :shell-stack})
{:set-root :shell-stack})
(rf/defn multiaccount-selected
{:events [:multiaccounts.login.ui/multiaccount-selected]}
@ -738,7 +738,7 @@
cofx
(merge
{:db (update db :keycard dissoc :application-info)}
(when keycard-multiaccount? {:navigate-to-fx :keycard-login-pin}))
(when keycard-multiaccount? {:navigate-to :keycard-login-pin}))
(open-login (select-keys multiaccount [:key-uid :name :public-key :identicon :images])))))
(rf/defn hide-keycard-banner

View File

@ -14,7 +14,7 @@
[{:keys [db] :as cofx} {:keys [auth-method logout?]}]
(let [key-uid (get-in db [:multiaccount :key-uid])]
(rf/merge cofx
{:init-root-fx :progress
{:set-root :progress
:chat.ui/clear-inputs nil
:chat.ui/clear-inputs-old nil
:shell/reset-bottom-tabs nil

View File

@ -1,7 +1,7 @@
(ns status-im.multiaccounts.recover.core
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im2.constants :as constants]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.mnemonic :as mnemonic]
@ -142,7 +142,7 @@
:step :recovery-success)}
(when (existing-account? multiaccounts key-uid)
(show-existing-multiaccount-alert key-uid))
(navigation/navigate-to-cofx :recover-multiaccount-success nil))))
(navigation/navigate-to :recover-multiaccount-success nil))))
(rf/defn enter-phrase-pressed
{:events [::enter-phrase-pressed]}
@ -159,8 +159,8 @@
:forward-action :multiaccounts.recover/enter-phrase-next-pressed}
:recovered-account? true)
(update :keycard dissoc :flow))}
(bottom-sheet/hide-bottom-sheet)
(navigation/navigate-to-cofx :recover-multiaccount-enter-phrase nil)))
(bottom-sheet/hide-bottom-sheet-old)
(navigation/navigate-to :recover-multiaccount-enter-phrase nil)))
(rf/defn proceed-to-import-mnemonic
{:events [:multiaccounts.recover/phrase-validated]}
@ -234,7 +234,7 @@
{:dispatch [:recovery.ui/keycard-option-pressed]}
(rf/merge cofx
{:db (update db :intro-wizard assoc :step :create-code)}
(navigation/navigate-to-cofx :create-password nil)))))
(navigation/navigate-to :create-password nil)))))
(rf/defn re-encrypt-pressed
{:events [:multiaccounts.recover/re-encrypt-pressed]}
@ -246,7 +246,7 @@
:step :select-key-storage
:selected-storage-type :default)}
(if (nfc/nfc-supported?)
(navigation/navigate-to-cofx :select-key-storage nil)
(navigation/navigate-to :select-key-storage nil)
(select-storage-next-pressed))))
(rf/defn confirm-password-next-button-pressed

View File

@ -202,4 +202,4 @@
(rf/defn open-network-details
{:events [::network-entry-pressed]}
[cofx network]
(navigation/navigate-to-cofx cofx :network-details {:networks/selected-network network}))
(navigation/navigate-to cofx :network-details {:networks/selected-network network}))

View File

@ -73,7 +73,7 @@
[{:keys [db] :as cofx}]
(rf/merge cofx
{:db (assoc-in db [:pairing/prompt-user-pop-up] false)}
(navigation/navigate-to-cofx :installations nil)))
(navigation/navigate-to :installations nil)))
(rf/defn prompt-user-on-new-installation
[{:keys [db]}]

View File

@ -66,7 +66,7 @@
(and public-key own)
(rf/merge cofx
{:pop-to-root-fx :shell-stack}
(navigation/navigate-to-cofx :my-profile nil))
(navigation/navigate-to :my-profile nil))
(and public-key (not own))
(rf/merge cofx

View File

@ -1,7 +1,7 @@
(ns status-im.signing.gas
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.ethereum.core :as ethereum]
[utils.i18n :as i18n]
[status-im.popover.core :as popover]
@ -277,7 +277,7 @@
max-priority-fee})]
(rf/merge cofx
{:db (assoc db :signing/edit-fee edit-fee)}
(bottom-sheet/show-bottom-sheet {:view sheet-opts}))))
(bottom-sheet/show-bottom-sheet-old {:view sheet-opts}))))
(rf/defn submit-fee
{:events [:signing.edit-fee.ui/submit]}
@ -300,14 +300,14 @@
:maxFeePerGas (money/->wei :gwei (:value-number maxFeePerGas))
:maxPriorityFeePerGas (money/->wei :gwei
(:value-number maxPriorityFeePerGas)))}
(bottom-sheet/hide-bottom-sheet)))))
(bottom-sheet/hide-bottom-sheet-old)))))
(rf/defn submit-nonce
{:events [:signing.nonce/submit]}
[{db :db :as cofx} nonce]
(rf/merge cofx
{:db (assoc-in db [:signing/tx :nonce] (if (string/blank? nonce) nil nonce))}
(bottom-sheet/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(re-frame/reg-fx
:signing/update-gas-price

View File

@ -80,7 +80,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defview connectivity-sheet
@ -187,6 +187,6 @@
[quo/button
{:type :icon
:accessibility-label (str "conn-button-" (name icon))
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content connectivity-sheet}])
:theme (if (= (:peers state) :offline) :negative :secondary)} icon])))

View File

@ -19,7 +19,7 @@
:icon :main-icons/share
:accessibility-label accessibility-label
:on-press (fn []
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(js/setTimeout
#(re-frame/dispatch [::invite.events/share-link nil])
250))}])

View File

@ -9,7 +9,7 @@
[modal? {:keys [on-press label icon]}]
(cond-> {:icon (if modal? :i/close :i/arrow-left)
:accessibility-label :back-button
:on-press #(re-frame/dispatch [:navigate-back :bottom-sheet/hide])}
:on-press #(re-frame/dispatch [:navigate-back :bottom-sheet/hide-old])}
on-press
(assoc :on-press on-press)

View File

@ -18,7 +18,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(js/setTimeout #(re-frame/dispatch event) 200))
(defn list-item
@ -30,7 +30,7 @@
:on-press #(re-frame/dispatch [:browser.ui/open-url url])
:on-long-press (fn []
(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (fn []
[react/view {:flex 1}
[quo/list-item
@ -109,7 +109,7 @@
[quo/button
{:accessibility-label :select-account
:type :scale
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (accounts/accounts-list accounts
dapps-account)}])}
[react/view (styles/dapps-account color)

View File

@ -15,7 +15,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn wallet-connection
@ -81,7 +81,7 @@
:accessibility-label :share
:icon :main-icons/share
:on-press (fn []
(re-frame/dispatch-sync [:bottom-sheet/hide])
(re-frame/dispatch-sync [:bottom-sheet/hide-old])
(js/setTimeout
#(browser/share-link url)
200))}]
@ -103,7 +103,7 @@
:accessibility-label :connected-account
:chevron true
:on-press #(hide-sheet-and-dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (wallet-connection (http/url-host url) account)}])}]
[quo/list-item
{:theme :accent

View File

@ -2,13 +2,18 @@
(:require [utils.re-frame :as rf]
[status-im.ui.screens.browser.empty-tab.views :as empty-tab]
[status-im.ui.screens.browser.views :as browser]
[status-im.ui.screens.browser.tabs.views :as tabs]))
[status-im.ui.screens.browser.tabs.views :as tabs]
[react-native.safe-area :as safe-area]
[react-native.core :as rn]))
(defn browser-stack
[]
(let [screen-id (rf/sub [:browser/screen-id])]
(case screen-id
:empty-tab [empty-tab/empty-tab]
:browser [browser/browser]
:browser-tabs [tabs/tabs]
[empty-tab/empty-tab])))
[safe-area/consumer
(fn [{:keys [top]}]
[rn/view {:padding-top top :flex 1}
(case screen-id
:empty-tab [empty-tab/empty-tab]
:browser [browser/browser]
:browser-tabs [tabs/tabs]
[empty-tab/empty-tab])])]))

View File

@ -93,7 +93,7 @@
[icons/icon :main-icons/arrow-right {:color colors/black}]]
[react/touchable-highlight
{:accessibility-label :select-account
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (accounts/accounts-list accounts
dapps-account)}])}
[chat-icon/custom-icon-view-list (:name dapps-account) (:color dapps-account) 32]]
@ -112,7 +112,7 @@
[icons/icon :main-icons/qr {:color colors/black}]]
[react/touchable-highlight
{:on-press #(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (options/browser-options
url
dapps-account
@ -143,7 +143,7 @@
{:permissions (map resources-to-permissions-map resources)
:on-allowed #(.answerPermissionRequest ^js webview-ref true resources)
:on-denied #(.answerPermissionRequest ^js webview-ref false)})
(re-frame/dispatch [:bottom-sheet/hide]))}
(re-frame/dispatch [:bottom-sheet/hide-old]))}
(i18n/label :t/allow)]]
[react/view styles/blocked-access-button-wrapper
[quo/button
@ -151,7 +151,7 @@
:style styles/blocked-access-button
:on-press (fn []
(.answerPermissionRequest ^js webview-ref false)
(re-frame/dispatch [:bottom-sheet/hide]))}
(re-frame/dispatch [:bottom-sheet/hide-old]))}
(i18n/label :t/deny)]]]])
(views/defview block-resources-panel
@ -166,7 +166,7 @@
(defn request-resources-access-for-page
[resources url webview-ref]
(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (fn [] [request-resources-panel resources url webview-ref])
:show-handle? false
:backdrop-dismiss? false
@ -176,7 +176,7 @@
(defn block-resources-access-and-notify-user
[url]
(.answerPermissionRequest ^js @webview-ref/webview-ref false)
(re-frame/dispatch [:bottom-sheet/show-sheet
(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn [] [block-resources-panel url])}]))
;; should-component-update is called only when component's props are changed,

View File

@ -11,7 +11,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn one-to-one-chat-accents
@ -53,7 +53,7 @@
:accessibility-label :share-chat-button
:icon :main-icons/share
:on-press (fn []
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
;; https://github.com/facebook/react-native/pull/26839
(js/setTimeout
#(list-selection/open-share {:message message})

View File

@ -1,7 +1,6 @@
(ns status-im.ui.screens.communities.channel-details
(:require [clojure.string :as string]
[quo.core :as quo]
[re-frame.core :as re-frame]
[status-im.communities.core :as communities]
[utils.i18n :as i18n]
[status-im.ui.components.profile-header.view :as profile-header]
@ -64,5 +63,4 @@
:accessory :text
:accessory-text (count pinned-messages)
:chevron true
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet :pinned-messages-list
chat-id])}]])]))))
:on-press #(rf/dispatch [:pin-message/show-pins-bottom-sheet chat-id])}]])]))))

View File

@ -3,8 +3,7 @@
[utils.i18n :as i18n]
[quo.core :as quo]
[quo.design-system.colors :as colors]
[quo2.components.community.style :as styles] ;; TODO reimplement with quo2 library and new
;; designs
[quo2.components.community.style :as styles]
[quo2.components.navigation.floating-shell-button :as floating-shell-button]
[react-native.core :as rn]
[status-im.communities.core :as communities]
@ -69,7 +68,7 @@
(defn hide-sheet-and-dispatch
[event]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(rf/dispatch event))
(defn community-plus-actions
@ -173,7 +172,7 @@
(rf/dispatch [:dismiss-keyboard])
(rf/dispatch [:chat/navigate-to-chat chat-id])
(rf/dispatch [:search/home-filter-changed nil]))
:on-long-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-long-press #(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[sheets/actions home-item])}])}])
@ -292,7 +291,7 @@
(when (or admin joined)
[{:icon :main-icons/more
:accessibility-label :community-menu-button
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-press #(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[community-actions community])}])}])}]
(if joined
@ -300,7 +299,7 @@
[community-channel-preview-list id chats])
(when admin
[components.plus-button/plus-button-old
{:on-press #(rf/dispatch [:bottom-sheet/show-sheet
{:on-press #(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[community-plus-actions community])}])
:accessibility-label :new-chat-button}])

View File

@ -63,7 +63,7 @@
:icon :main-icons/camera
:title (i18n/label :t/community-image-take)
:on-press #(do
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(take-pic))}]
[quo/list-item
{:accessibility-label :pick-photo
@ -71,7 +71,7 @@
:theme :accent
:title (i18n/label :t/community-image-pick)
:on-press #(do
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(pick-pic))}]
(when (and has-picture (not editing?))
[quo/list-item
@ -80,7 +80,7 @@
:theme :accent
:title (i18n/label :t/community-image-remove)
:on-press #(do
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(rf/dispatch [::communities/remove-field :image]))}])]))
(defn photo-picker
@ -92,7 +92,7 @@
[rn/touchable-opacity
{:on-press (fn []
(rn/dismiss-keyboard!)
(rf/dispatch [:bottom-sheet/show-sheet
(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (bottom-sheet (boolean image) editing?)}]))}
[rn/view
{:style {:width 128

View File

@ -14,7 +14,7 @@
(defn hide-sheet-and-dispatch
[event]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(rf/dispatch event))
(defn member-sheet
@ -72,7 +72,7 @@
:accessory (when (not= public-key my-public-key)
[quo/button
{:on-press
#(rf/dispatch [:bottom-sheet/show-sheet
#(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[member-sheet primary-name member community-id
can-kick-users? can-manage-users? admin?])}])

View File

@ -17,7 +17,7 @@
(defn hide-sheet-and-dispatch
[event]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(rf/dispatch event))
(defn community-unviewed-count
@ -49,7 +49,7 @@
(rf/dispatch [:communities/load-category-states id])
(rf/dispatch [:dismiss-keyboard])
(rf/dispatch [:navigate-to :community-overview id]))
:on-long-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-long-press #(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[community/community-actions community])}])}
[:<>
@ -150,7 +150,7 @@
[{:icon :main-icons/more
:accessibility-label :chat-menu-button
:on-press
#(rf/dispatch [:bottom-sheet/show-sheet
#(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[communities-actions])
:height 256}])}]}]

View File

@ -292,7 +292,7 @@
:title (:name account)
:subtitle (utils/get-shortened-checksum-address (:address account))
:chevron true
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn [] [sheets/accounts-list :from
::ens/change-address])}])}]))
@ -681,7 +681,7 @@
[react/view {:style {:flex 1 :margin-top 8}}
(for [name names]
(let [action #(do (re-frame/dispatch [::ens/save-preferred-name name])
(re-frame/dispatch [:bottom-sheet/hide]))
(re-frame/dispatch [:bottom-sheet/hide-old]))
stateofus-username (stateofus/username name)
s (or stateofus-username name)]
^{:key name}
@ -755,7 +755,7 @@
[profile.components/settings-item
{:label-kw :ens-primary-username
:value preferred-name
:action-fn #(re-frame/dispatch [:bottom-sheet/show-sheet
:action-fn #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content
(fn [] (name-list names preferred-name))}])}]])]]])

View File

@ -1,19 +1,16 @@
(ns status-im.ui.screens.home.sheet.views
(:require [quo.core :as quo]
[quo2.foundations.colors :as colors]
[utils.re-frame :as rf]
[utils.i18n :as i18n]
[status-im.qr-scanner.core :as qr-scanner]
[status-im.ui.components.invite.views :as invite]
[status-im.ui.components.react :as rn]
[status-im.ui2.screens.chat.components.new-chat.view :as new-chat-aio]
[status-im2.config :as config]
[quo2.core :as quo2]
[status-im.ui.screens.home.sheet.styles :as style]))
(defn- hide-sheet-and-dispatch
[event]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:bottom-sheet/hide-old])
(rf/dispatch event))
(defn add-new-view
@ -60,48 +57,6 @@
[invite/list-item
{:accessibility-label :chats-menu-invite-friends-button}]])
(defn new-chat-bottom-sheet
[]
[rn/view
[quo2/menu-item
{:type :transparent
:title (i18n/label :t/new-chat)
:icon-bg-color :transparent
:container-padding-vertical 12
:title-column-style {:margin-left 2}
:style-props {:border-bottom-width 1
:border-bottom-color (colors/theme-colors colors/neutral-10
colors/neutral-90)}
:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40)
:accessibility-label :start-a-new-chat
:icon :i/new-message
:on-press (fn []
(rf/dispatch [:group-chat/clear-contacts])
(hide-sheet-and-dispatch [:bottom-sheet/show-sheet
:start-a-new-chat {}]))}]
[quo2/menu-item
{:type :transparent
:title (i18n/label :t/add-a-contact)
:icon-bg-color :transparent
:icon-container-style {:padding-horizontal 0}
:container-padding-horizontal {:padding-horizontal 4}
:style-props {:margin-top 18
:margin-bottom 9}
:container-padding-vertical 12
:title-column-style {:margin-left 2}
:icon-color (colors/theme-colors colors/neutral-50 colors/neutral-40)
:accessibility-label :add-a-contact
:subtitle (i18n/label :t/enter-a-chat-key)
:subtitle-color colors/neutral-50
:icon :i/add-user
:on-press #(hide-sheet-and-dispatch [:open-modal :new-contact])}]])
(def new-chat-bottom-sheet-comp
{:content new-chat-bottom-sheet})
;; Deprecated
(def add-new
{:content add-new-view})
(def start-a-new-chat
{:content new-chat-aio/contact-selection-list})

View File

@ -154,7 +154,7 @@
(re-frame/dispatch [:dismiss-keyboard])
(re-frame/dispatch [:chat/navigate-to-chat chat-id])
(re-frame/dispatch [:search/home-filter-changed nil]))
:on-long-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-long-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[sheets/actions home-item])}])}]
[communities.views/community-home-list-item home-item]))
@ -169,7 +169,7 @@
(re-frame/dispatch [:dismiss-keyboard])
(re-frame/dispatch [:chat/navigate-to-chat chat-id])
(re-frame/dispatch [:search/home-filter-changed nil]))
:on-long-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-long-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[sheets/actions home-item])}])}]
[communities.views/community-home-list-item home-item]))
@ -261,7 +261,7 @@
{:on-press (when-not logging-in?
(fn []
(re-frame/dispatch [:group-chat/clear-contacts])
(re-frame/dispatch [:bottom-sheet/show-sheet :start-a-new-chat {}])))
(re-frame/dispatch [:bottom-sheet/show-sheet-old :start-a-new-chat {}])))
:loading logging-in?
:accessibility-label :new-chat-button}]))
@ -272,7 +272,7 @@
{:on-press (when-not logging-in?
(fn []
(re-frame/dispatch [:group-chat/clear-contacts])
(re-frame/dispatch [:bottom-sheet/show-sheet :start-a-new-chat {}])))
(re-frame/dispatch [:bottom-sheet/show-sheet-old :start-a-new-chat {}])))
:loading logging-in?
:accessibility-label :new-chat-button}]))

View File

@ -4,7 +4,7 @@
[quo.design-system.colors :as colors]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im2.constants :as constants]
[utils.i18n :as i18n]
[status-im.keycard.login :as keycard.login]
@ -447,8 +447,8 @@
[{:keys [db] :as cofx}]
(rf/merge cofx
(multiaccounts.create/prepare-intro-wizard)
(bottom-sheet/hide-bottom-sheet)
(navigation/navigate-to-cofx :get-your-keys nil)))
(bottom-sheet/hide-bottom-sheet-old)
(navigation/navigate-to :get-your-keys nil)))
(defn- more-sheet-content
[]

View File

@ -63,7 +63,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(views/defview settings-sheet

View File

@ -10,7 +10,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn settings-separator

View File

@ -16,7 +16,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defview custom-seed-phrase

View File

@ -5,7 +5,7 @@
(defn- hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn actions-sheet

View File

@ -41,7 +41,7 @@
(defn topbar-button
[]
(re-frame/dispatch [:bottom-sheet/show-sheet
(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content sheets/actions-sheet}]))
(defview multiaccounts
[]

View File

@ -103,7 +103,7 @@
(i18n/label :t/generate-a-key)]]
[react/view {:padding-vertical 8}
[quo/button
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet :recover-sheet])
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old :recover-sheet])
:type :secondary}
(i18n/label :t/access-existing-keys)]]
[react/text {:style (assoc (styles/wizard-text) :margin-top 20 :margin-bottom 16)}

View File

@ -10,7 +10,7 @@
(defn learn-more
[title content]
[react/text
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet :learn-more
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old :learn-more
{:title (i18n/label title)
:content (i18n/label content)}])
:style (merge (styles/wizard-text) {:color colors/blue})

View File

@ -67,7 +67,7 @@
:accessory :text
:accessory-text pin-count
:disabled (zero? pin-count)
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet :pinned-messages-list public-key])
:on-press #(rf/dispatch [:pin-message/show-pins-bottom-sheet public-key])
:chevron true}])
(defn nickname-settings

View File

@ -71,7 +71,7 @@
(not= public-key current-user-identity))
{:accessory [quo/button
{:on-press #(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (fn []
[member-sheet chat-id member admin?])}])
:type :icon
@ -105,7 +105,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(debounce/dispatch-and-chill event 2000))
(defn invitation-sheet
@ -142,7 +142,7 @@
{:title (multiaccounts/displayed-name contact)
:icon [chat-icon/contact-icon-contacts-tab
(multiaccounts/displayed-photo contact)]
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[invitation-sheet invitation contact])}])}]))
@ -214,8 +214,7 @@
:accessory :text
:accessory-text (count pinned-messages)
:chevron true
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet :pinned-messages-list
chat-id])}]
:on-press #(re-frame/dispatch [:pin-message/show-pins-bottom-sheet chat-id])}]
(when member?
[quo/list-item
{:theme :negative

View File

@ -15,14 +15,14 @@
(defn pick-pic
[]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(react/show-image-picker
#(re-frame/dispatch [::multiaccounts/save-profile-picture (.-path ^js %) 0 0 crop-size crop-size])
crop-opts))
(defn take-pic
[]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(react/show-image-picker-camera
#(re-frame/dispatch [::multiaccounts/save-profile-picture (.-path ^js %) 0 0 crop-size crop-size])
crop-opts))

View File

@ -210,7 +210,7 @@
:use-insets true
:extended-header (profile-header/extended-header
{:on-press on-share
:on-edit #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-edit #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (edit/bottom-sheet
has-picture)}])
:title (multiaccounts/displayed-name account)

View File

@ -113,25 +113,29 @@
;Multiaccounts
{:name :multiaccounts
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/your-keys)}
:options {:insets {:bottom? true
:top? true}
:topBar {:title {:text (i18n/label :t/your-keys)}
:rightButtons (right-button-options :multiaccounts :more)}}
:right-handler multiaccounts/topbar-button
:component multiaccounts/multiaccounts}
;Login
{:name :login
:insets {:bottom true}
:options {:topBar {:rightButtons (right-button-options :login :more)}}
:options {:insets {:bottom? true
:top? true}
:topBar {:rightButtons (right-button-options :login :more)}}
:right-handler login/topbar-button
:component login/login}
{:name :progress
:options {:insets {:top? true}}
:component progress/progress}
;[Onboarding]
{:name :get-your-keys
:insets {:bottom true}
:options {:insets {:bottom? true
:top? true}}
:component onboarding.keys/get-your-keys}
;[Onboarding]
@ -139,377 +143,435 @@
:options {:topBar {:visible false}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component onboarding.keys/choose-a-chat-name}
;[Onboarding]
{:name :select-key-storage
:insets {:bottom true}
:options {:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component onboarding.storage/select-key-storage}
;[Onboarding] Create Password
{:name :create-password
:options {:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component onboarding.password/screen}
;[Onboarding] Welcome
{:name :welcome
:options {:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component onboarding.welcome/welcome}
;[Onboarding] Notification
{:name :onboarding-notification
:options {:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component onboarding.notifications/notifications-onboarding}
;[Onboarding] Recovery
{:name :recover-multiaccount-enter-phrase
:insets {:bottom true}
:options {:insets {:top? true :bottom? true}}
:component onboarding.phrase/enter-phrase}
{:name :recover-multiaccount-success
:options {:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component onboarding.phrase/wizard-recovery-success}
;;CHAT
{:name :start-a-new-chat
:options {:sheet? true :insets {:top? true}}
:component new-chat-aio/contact-selection-list}
{:name :group-chat-profile
;;TODO animated-header
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component group-details/group-details}
{:name :group-chat-invite
;;TODO parameter in the event
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component profile.group-chat/group-chat-invite}
{:name :stickers
:options {:topBar {:title {:text (i18n/label :t/sticker-market)}}}
:options {:insets {:top? true}
:topBar {:title {:text (i18n/label :t/sticker-market)}}}
:component stickers/packs}
{:name :stickers-pack
:options {:insets {:top? true}}
:component stickers/pack}
;; Community
{:name :community
;;TODO custom
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component community/community}
{:name :community-management
:insets {:top false}
;;TODO animated-header
:options {:topBar {:visible false}}
:component community.profile/management-container}
{:name :community-members
;;TODO custom subtitle
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component members/members-container}
{:name :community-requests-to-join
;;TODO custom subtitle
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component requests-to-join/requests-to-join-container}
{:name :create-community-channel
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/create-channel-title)}}}
:options {:topBar {:title {:text (i18n/label :t/create-channel-title)}}
:insets {:bottom? true
:top? true}}
:component create-channel/view}
{:name :community-emoji-thumbnail-picker
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/community-emoji-thumbnail-title)}}}
:options {:topBar {:title {:text (i18n/label :t/community-emoji-thumbnail-title)}}
:insets {:bottom? true
:top? true}}
:component community-emoji-thumbnail-picker/view}
{:name :create-community-category
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/new-category)}}}
:options {:topBar {:title {:text (i18n/label :t/new-category)}}
:insets {:bottom? true
:top? true}}
:component create-category/view}
{:name :select-category
:insets {:bottom true}
;;TODO custom
:options {:topBar {:visible false}}
:options {:topBar {:visible false}
:insets {:bottom? true
:top? true}}
:component select-category/view}
{:name :community-reorder-categories
:insets {:top false}
:options {:topBar {:visible false}}
:component reorder-categories/view}
{:name :community-channel-details
:insets {:top false}
;;TODO custom
:options {:topBar {:visible false}}
:component communities.channel-details/view}
{:name :edit-community-channel
:options {:topBar {:title {:text (i18n/label :t/edit-channel-title)}}}
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/edit-channel-title)}}
:insets {:bottom? true
:top? true}}
:component edit-channel/view}
{:name :contact-toggle-list
;;TODO custom subtitle
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component group-chat/contact-toggle-list}
{:name :new-group
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
;;TODO custom subtitle
:component group-chat/new-group}
{:name :communities
;;TODO custom
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component communities/communities}
{:name :community-import
:options {:topBar {:title {:text (i18n/label :t/import-community-title)}}}
:options {:topBar {:title {:text (i18n/label :t/import-community-title)}}
:insets {:top? true}}
:component communities.import/view}
{:name :community-edit
:options {:topBar {:title {:text (i18n/label :t/community-edit-title)}}}
:options {:topBar {:title {:text (i18n/label :t/community-edit-title)}}
:insets {:top? true}}
:component community.edit/edit}
{:name :community-create
:options {:topBar {:title {:text (i18n/label :t/new-community-title)}}}
:options {:topBar {:title {:text (i18n/label :t/new-community-title)}}
:insets {:top? true}}
:component communities.create/view}
{:name :community-membership
:options {:topBar {:title {:text (i18n/label :t/membership-title)}}}
:options {:topBar {:title {:text (i18n/label :t/membership-title)}}
:insets {:top? true}}
:component membership/membership}
;;WALLET
{:name :wallet
:insets {:top false}
:on-focus [:wallet/tab-opened]
;;TODO wallet redesign
;;:options {:statusBar {:backgroundColor quo2.colors/neutral-5}}
:component wallet.accounts/accounts-overview-old}
{:name :wallet-account
;;TODO dynamic titleaccounts-overview
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component wallet.account/account}
{:name :add-new-account
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component add-account/add-account}
{:name :add-new-account-pin
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component add-account/pin}
{:name :account-settings
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component account-settings/account-settings}
{:name :wallet-transaction-details
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component wallet-transactions/transaction-details}
{:name :wallet-settings-assets
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component wallet-settings/manage-assets}
{:name :wallet-add-custom-token
:on-focus [:wallet/wallet-add-custom-token]
:options {:topBar {:title {:text (i18n/label :t/add-custom-token)}}}
:options {:topBar {:title {:text (i18n/label :t/add-custom-token)}}
:insets {:top? true}}
:component custom-tokens/add-custom-token}
{:name :wallet-custom-token-details
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component custom-tokens/custom-token-details}
{:name :currency-settings
:options {:topBar {:title {:text (i18n/label :t/main-currency)}}}
:options {:topBar {:title {:text (i18n/label :t/main-currency)}}
:insets {:top? true}}
:component currency-settings/currency-settings}
{:name :manage-accounts
:options {:topBar {:title {:text (i18n/label :t/wallet-manage-accounts)}}}
:options {:topBar {:title {:text (i18n/label :t/wallet-manage-accounts)}}
:insets {:top? true}}
:component accounts-manage/manage}
{:name :token-swap
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component wallet.swap/swap}
{:name :token-swap-advanced-nonce
:options {:topBar {:title {:text (i18n/label :t/nonce)}}}
:options {:topBar {:title {:text (i18n/label :t/nonce)}}
:insets {:top? true}}
:component wallet.swap/nonce-modal}
{:name :token-swap-advanced-approve-token
:options {:topBar {:title {:text (i18n/label :t/approve-token)}}}
:options {:topBar {:title {:text (i18n/label :t/approve-token)}}
:insets {:top? true}}
:component wallet.swap/approve-token-modal}
{:name :token-swap-advanced-transaction-fee
:options {:topBar {:title {:text (i18n/label :t/transaction-fee)}}}
:options {:topBar {:title {:text (i18n/label :t/transaction-fee)}}
:insets {:top? true}}
:component wallet.swap/transaction-fee-modal}
{:name :token-swap-advanced-swap-details
:options {:topBar {:title {:text (i18n/label :t/swap-details)}}}
:options {:topBar {:title {:text (i18n/label :t/swap-details)}}
:insets {:top? true}}
:component wallet.swap/swap-details-modal}
{:name :swap-asset-selector
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component wallet.swap/asset-selector}
;;PROFILE
{:name :my-profile
:insets {:top false}
:options {:topBar {:visible false}}
:component profile.user/my-profile}
{:name :contacts-list
:options {:topBar {:title {:text (i18n/label :t/contacts)}}}
:options {:topBar {:title {:text (i18n/label :t/contacts)}}
:insets {:top? true}}
:component contacts-list/contacts-list}
{:name :ens-main
:options {:topBar {:title {:text (i18n/label :t/ens-usernames)}}}
:options {:topBar {:title {:text (i18n/label :t/ens-usernames)}}
:insets {:top? true}}
:component ens/main}
{:name :ens-search
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}
:insets {:top? true}}
:component ens/search}
{:name :ens-checkout
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}
:insets {:top? true}}
:component ens/checkout}
{:name :ens-confirmation
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}
:insets {:top? true}}
:component ens/confirmation}
{:name :ens-terms
:options {:topBar {:title {:text (i18n/label :t/ens-terms-registration)}}}
:options {:topBar {:title {:text (i18n/label :t/ens-terms-registration)}}
:insets {:top? true}}
:component ens/terms}
{:name :ens-name-details
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component ens/name-details}
{:name :blocked-users-list
:options {:topBar {:title {:text (i18n/label :t/blocked-users)}}}
:options {:topBar {:title {:text (i18n/label :t/blocked-users)}}
:insets {:top? true}}
:component contacts-list/blocked-users-list}
{:name :wakuv2-settings
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component wakuv2-settings/wakuv2-settings}
{:name :edit-wakuv2-node
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component edit-wakuv2-node/edit-node}
{:name :bootnodes-settings
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component bootnodes-settings/bootnodes-settings}
{:name :installations
:options {:topBar {:title {:text (i18n/label :t/devices)}}}
:options {:topBar {:title {:text (i18n/label :t/devices)}}
:insets {:top? true}}
:component pairing/installations}
{:name :edit-bootnode
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component edit-bootnode/edit-bootnode}
{:name :offline-messaging-settings
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component offline-messaging-settings/offline-messaging-settings}
{:name :edit-mailserver
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component edit-mailserver/edit-mailserver}
{:name :dapps-permissions
:options {:topBar {:title {:text (i18n/label :t/dapps-permissions)}}}
:options {:topBar {:title {:text (i18n/label :t/dapps-permissions)}}
:insets {:top? true}}
:component dapps-permissions/dapps-permissions}
{:name :link-previews-settings
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}}
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}
:insets {:top? true}}
:component link-previews-settings/link-previews-settings}
{:name :privacy-and-security
:options {:topBar {:title {:text (i18n/label :t/privacy-and-security)}}}
:options {:topBar {:title {:text (i18n/label :t/privacy-and-security)}}
:insets {:top? true}}
:component privacy-and-security/privacy-and-security}
{:name :messages-from-contacts-only
:options {:topBar {:title {:text (i18n/label :t/accept-new-chats-from)}}}
:options {:topBar {:title {:text (i18n/label :t/accept-new-chats-from)}}
:insets {:top? true}}
:component messages-from-contacts-only/messages-from-contacts-only}
{:name :appearance
:options {:topBar {:title {:text (i18n/label :t/appearance)}}}
:options {:topBar {:title {:text (i18n/label :t/appearance)}}
:insets {:top? true}}
:component appearance/appearance}
{:name :privacy-and-security-profile-pic-show-to
:options {:topbar {:title {:text (i18n/label :t/show-profile-pictures-to)}}}
:options {:topbar {:title {:text (i18n/label :t/show-profile-pictures-to)}}
:insets {:top? true}}
:component privacy-and-security/profile-pic-show-to}
{:name :privacy-and-security-profile-pic
:options {:topBar {:title {:text (i18n/label :t/show-profile-pictures)}}}
:options {:topBar {:title {:text (i18n/label :t/show-profile-pictures)}}
:insets {:top? true}}
:component privacy-and-security/profile-pic}
{:name :notifications
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}}
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
:insets {:top? true}}
:component notifications-settings/notifications-settings}
{:name :notifications-servers
:options {:topBar {:title {:text (i18n/label :t/notifications-servers)}}}
:options {:topBar {:title {:text (i18n/label :t/notifications-servers)}}
:insets {:top? true}}
:component notifications-settings/notifications-servers}
{:name :sync-settings
:options {:topBar {:title {:text (i18n/label :t/sync-settings)}}}
:options {:topBar {:title {:text (i18n/label :t/sync-settings)}}
:insets {:top? true}}
:component sync-settings/sync-settings}
{:name :advanced-settings
:options {:topBar {:title {:text (i18n/label :t/advanced)}}}
:options {:topBar {:title {:text (i18n/label :t/advanced)}}
:insets {:top? true}}
:component advanced-settings/advanced-settings}
{:name :help-center
:options {:topBar {:title {:text (i18n/label :t/need-help)}}}
:options {:topBar {:title {:text (i18n/label :t/need-help)}}
:insets {:top? true}}
:component help-center/help-center}
{:name :glossary
:options {:topBar {:title {:text (i18n/label :t/glossary)}}}
:options {:topBar {:title {:text (i18n/label :t/glossary)}}
:insets {:top? true}}
:component glossary/glossary}
{:name :about-app
:options {:topBar {:title {:text (i18n/label :t/about-app)}}}
:options {:topBar {:title {:text (i18n/label :t/about-app)}}
:insets {:top? true}}
:component about-app/about-app}
{:name :privacy-policy
:options {:topBar {:title {:text (i18n/label :t/privacy-policy)}}}
:options {:topBar {:title {:text (i18n/label :t/privacy-policy)}}
:insets {:top? true}}
:component about-app/privacy-policy}
{:name :terms-of-service
:options {:topBar {:title {:text (i18n/label :t/terms-of-service)}}}
:options {:topBar {:title {:text (i18n/label :t/terms-of-service)}}
:insets {:top? true}}
:component about-app/tos}
{:name :principles
:options {:topBar {:title {:text (i18n/label :t/principles)}}}
:options {:topBar {:title {:text (i18n/label :t/principles)}}
:insets {:top? true}}
:component about-app/principles}
{:name :force-accept-tos
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component terms-of-service/force-accept-tos}
{:name :manage-dapps-permissions
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component dapps-permissions/manage}
{:name :network-settings
;;TODO accessories
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component network/network-settings}
{:name :network-details
:options {:topBar {:title {:text (i18n/label :t/network-details)}}}
:options {:topBar {:title {:text (i18n/label :t/network-details)}}
:insets {:top? true}}
:component network-details/network-details}
{:name :network-info
:options {:topBar {:title {:text (i18n/label :t/network-info)}}}
:options {:topBar {:title {:text (i18n/label :t/network-info)}}
:insets {:top? true}}
:component network-info/network-info}
{:name :rpc-usage-info
:options {:topBar {:title {:text (i18n/label :t/rpc-usage-info)}}}
:options {:topBar {:title {:text (i18n/label :t/rpc-usage-info)}}
:insets {:top? true}}
:component rpc-usage-info/usage-info}
{:name :peers-stats
:options {:topBar {:title {:text (i18n/label :t/peers-stats)}}}
:options {:topBar {:title {:text (i18n/label :t/peers-stats)}}
:insets {:top? true}}
:component peers-stats/peers-stats}
{:name :edit-network
:options {:topBar {:title {:text (i18n/label :t/add-network)}}}
:options {:topBar {:title {:text (i18n/label :t/add-network)}}
:insets {:top? true}}
:component edit-network/edit-network}
{:name :log-level-settings
:options {:topBar {:title {:text (i18n/label :t/log-level-settings)}}}
:options {:topBar {:title {:text (i18n/label :t/log-level-settings)}}
:insets {:top? true}}
:component log-level-settings/log-level-settings}
{:name :fleet-settings
:options {:topBar {:title {:text (i18n/label :t/fleet-settings)}}}
:options {:topBar {:title {:text (i18n/label :t/fleet-settings)}}
:insets {:top? true}}
:component fleet-settings/fleet-settings}
{:name :mobile-network-settings
:options {:topBar {:title {:text (i18n/label :t/mobile-network-settings)}}}
:options {:topBar {:title {:text (i18n/label :t/mobile-network-settings)}}
:insets {:top? true}}
:component mobile-network-settings/mobile-network-settings}
{:name :backup-settings
:options {:topBar {:title {:text (i18n/label :t/backup-settings)}}}
:options {:topBar {:title {:text (i18n/label :t/backup-settings)}}
:insets {:top? true}}
:component backup-settings/backup-settings}
{:name :backup-seed
;;TODO dynamic navigation
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component profile.seed/backup-seed}
{:name :reset-password
:options {:topBar {:title {:text (i18n/label :t/reset-password)}}}
:options {:topBar {:title {:text (i18n/label :t/reset-password)}}
:insets {:top? true}}
:component reset-password/reset-password}
{:name :delete-profile
:insets {:bottom true}
:insets {:bottom? true}
:component delete-profile/delete-profile}
{:name :default-sync-period-settings
:options {:topBar {:title {:text (i18n/label :t/default-sync-period)}}}
:options {:topBar {:title {:text (i18n/label :t/default-sync-period)}}
:insets {:top? true}}
:component default-sync-period-settings/default-sync-period-settings}
;;MODALS
@ -518,70 +580,75 @@
{:name :new-chat
:on-focus [:contacts/new-chat-focus]
;;TODO accessories
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component new-chat/new-chat}
;[Chat] New Public chat
{:name :new-public-chat
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/new-public-group-chat)}}}
:options {:topBar {:title {:text (i18n/label :t/new-public-group-chat)}}
:insets {:bottom? true
:top? true}}
:component new-public-chat/new-public-chat}
;[Chat] Link preview settings
{:name :link-preview-settings
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}}
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}
:insets {:top? true}}
:component link-previews-settings/link-previews-settings}
;[Chat] Edit nickname
{:name :nickname
:insets {:bottom true}
;;TODO dyn subtitle
:options {:topBar {:visible false}}
:options {:topBar {:visible false}
:insets {:bottom? true
:top? true}}
:component contact/nickname-view}
{:name :new-chat-aio
:on-focus [:contacts/new-chat-focus]
;;TODO accessories
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component new-chat-aio/contact-selection-list}
;[Chat] New Public chat
{:name :new-public-chat
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/new-public-group-chat)}}}
:options {:topBar {:title {:text (i18n/label :t/new-public-group-chat)}}
:insets {:bottom? true
:top? true}}
:component new-public-chat/new-public-chat}
;[Group chat] Add participants
{:name :add-participants-toggle-list
:on-focus [:group/add-participants-toggle-list]
:insets {:bottom true}
;;TODO dyn subtitle
:options {:topBar {:visible false}}
:options {:topBar {:visible false}
:insets {:bottom? true
:top? true}}
:component group-chat/add-participants-toggle-list}
;[Communities] Invite people
{:name :invite-people-community
;;TODO dyn title
:options {:topBar {:visible false}}
:component communities.invite/invite
:insets {:bottom true}}
:options {:insets {:bottom? true
:top? true}}
:component communities.invite/invite}
;[Wallet] Recipient
{:name :recipient
:insets {:bottom true}
;;TODO accessories
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component recipient/recipient}
;[Wallet] New favourite
{:name :new-favourite
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/new-favourite)}}}
:options {:topBar {:title {:text (i18n/label :t/new-favourite)}}
:insets {:bottom? true
:top? true}}
:component recipient/new-favourite}
;QR Scanner
{:name :qr-scanner
:insets {:top false :bottom false}
;;TODO custom topbar
:options {:topBar {:visible false}
:navigationBar {:backgroundColor colors/black-persist}
@ -595,8 +662,9 @@
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component notifications-settings/notifications-settings}
;;TODO WHY MODAL?
@ -605,211 +673,218 @@
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:insets {:bottom true}
:popStackOnPress false}
:insets {:bottom? true
:top? true}}
:component notifications-settings/notifications-advanced-settings}
;[Wallet] Prepare Transaction
{:name :prepare-send-transaction
:insets {:bottom true}
:on-dissmiss [:wallet/cancel-transaction-command]
:options {:topBar {:title {:text (i18n/label :t/send-transaction)}}
:swipeToDismiss false
:hardwareBackButton {:dismissModalOnPress false}}
:hardwareBackButton {:dismissModalOnPress false}
:insets {:bottom? true
:top? true}}
:component wallet.send/prepare-send-transaction}
;[Wallet] Request Transaction
{:name :request-transaction
:insets {:bottom true}
:on-dissmiss [:wallet/cancel-transaction-command]
:options {:topBar {:title {:text (i18n/label :t/request-transaction)}}
:swipeToDismiss false
:hardwareBackButton {:dismissModalOnPress false}}
:hardwareBackButton {:dismissModalOnPress false}
:insets {:bottom? true
:top? true}}
:component wallet.send/request-transaction}
;[Wallet] Buy crypto
{:name :buy-crypto
:insets {:bottom true}
:insets {:bottom? true}
:component wallet.buy-crypto/container}
;[Wallet] Buy crypto website
{:name :buy-crypto-website
:insets {:bottom true}
;;TODO subtitle
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component wallet.buy-crypto/website}
{:name :nft-details
:insets {:bottom true}
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component wallet.collectibles/nft-details-modal}
;[Browser] New bookmark
{:name :new-bookmark
:insets {:bottom true}
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component bookmarks/new-bookmark}
;Profile
{:name :profile
:insets {:bottom true}
;;TODO custom toolbar
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component contact/profile}
;KEYCARD
{:name :keycard-onboarding-intro
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.onboarding/intro}
{:name :keycard-onboarding-puk-code
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
;;TODO dynamic
:component keycard.onboarding/puk-code}
{:name :keycard-onboarding-pin
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
;;TODO dynamic
:component keycard.onboarding/pin}
{:name :keycard-recovery-pair
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/step-i-of-n {:number 2 :step 1})}}
:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.recovery/pair}
{:name :seed-phrase
:insets {:bottom true}
;;TODO subtitle
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component key-storage.views/seed-phrase}
{:name :keycard-recovery-pin
:insets {:bottom true}
;;TODO dynamic
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard.recovery/pin}
{:name :keycard-wrong
:insets {:bottom true}
;;TODO move to popover?
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard/wrong}
{:name :not-keycard
:insets {:bottom true}
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
;;TODO move to popover?
:component keycard/not-keycard}
{:name :keycard-onboarding-recovery-phrase
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.onboarding/recovery-phrase}
{:name :keycard-onboarding-recovery-phrase-confirm-word1
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.onboarding/recovery-phrase-confirm-word}
{:name :keycard-onboarding-recovery-phrase-confirm-word2
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.onboarding/recovery-phrase-confirm-word}
{:name :keycard-recovery-intro
:insets {:bottom true}
:insets {:bottom? true}
:component keycard.recovery/intro}
{:name :keycard-recovery-success
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.recovery/success}
{:name :keycard-recovery-no-key
:insets {:bottom true}
:options {:topBar {:visible false}
:options {:insets {:bottom? true
:top? true}
:popGesture false
:hardwareBackButton {:dismissModalOnPress false
:popStackOnPress false}}
:component keycard.recovery/no-key}
{:name :keycard-authentication-method
:insets {:bottom true}
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard.authentication/keycard-authentication-method}
{:name :keycard-login-pin
:insets {:bottom true}
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard/login-pin}
{:name :keycard-blank
:insets {:bottom true}
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard/blank}
{:name :keycard-unpaired
:insets {:bottom true}
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard/unpaired}
{:name :keycard-settings
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/status-keycard)}}}
:options {:topBar {:title {:text (i18n/label :t/status-keycard)}}
:insets {:bottom? true
:top? true}}
:component keycard.settings/keycard-settings}
{:name :reset-card
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :t/reset-card)}}}
:options {:topBar {:title {:text (i18n/label :t/reset-card)}}
:insets {:bottom? true
:top? true}}
:component keycard.settings/reset-card}
{:name :keycard-pin
:insets {:bottom true}
;;TODO dynamic title
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
:component keycard.settings/reset-pin}
{:name :enter-pin-settings
:insets {:bottom true}
:insets {:bottom? true}
:component keycard.pin/enter-pin}
{:name :change-pairing-code
:insets {:bottom true}
:insets {:bottom? true}
:component keycard.pairing/change-pairing-code}
;;KEYSTORAGE
{:name :actions-not-logged-in
;;TODO: topbar
:insets {:bottom true}
:options {:topBar {:visible false}}
:options {:insets {:bottom? true
:top? true}}
;;TODO move to popover?
:component key-storage.views/actions-not-logged-in}
{:name :actions-logged-in
;;TODO: topbar
:options {:topBar {:visible false}}
:insets {:bottom true}
:options {:insets {:bottom? true
:top? true}}
;;TODO move to popover?
:component key-storage.views/actions-logged-in}
{:name :storage
;;TODO: topbar
:options {:topBar {:visible false}}
:insets {:bottom true}
:options {:insets {:bottom? true
:top? true}}
;;TODO move to popover?
:component key-storage.views/storage}
{:name :show-all-connections
:insets {:bottom true}
:options {:topBar {:title {:text (i18n/label :all-connections)}}}
:options {:topBar {:title {:text (i18n/label :all-connections)}}
:insets {:bottom? true
:top? true}}
:component manage-all-connections/views}
;; BUG REPORT
{:name :bug-report
:options {:topBar {:visible false}}
:options {:insets {:top? true}}
:component bug-report/bug-report}])

View File

@ -67,7 +67,7 @@
:margin-top 6}
[quo/button
{:type :secondary
:on-press #(re-frame/dispatch [:bottom-sheet/hide])}
:on-press #(re-frame/dispatch [:bottom-sheet/hide-old])}
(i18n/label :t/cancel)]
[quo/button
{:type :secondary
@ -201,7 +201,7 @@
:accessibility-label :see-fee-suggestions
;;:on-press
#_(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (fn []
[fee-bottom-sheet-eip1559 fee-display-symbol])
:content-height 270}])}
@ -285,7 +285,7 @@
{:type :secondary
:accessibility-label :set-custom-fee
:on-press #(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (fn []
[fee-bottom-sheet-eip1559-custom fee-display-symbol])
:content-height 270}])}

View File

@ -470,7 +470,7 @@
{:size :small
:title (i18n/label :t/advanced)
:chevron true
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet {:content sheets/advanced}])}]])
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old {:content sheets/advanced}])}]])
(views/defview sheet
[{:keys [from contact amount token cancel?] :as tx}]

View File

@ -316,7 +316,7 @@
{:title name
:right-accessories
[{:icon :main-icons/more
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content sheets/account-settings
:content-height 60}])}]}]
[react/animated-scroll-view

View File

@ -6,7 +6,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn accounts-options

View File

@ -17,7 +17,8 @@
[status-im.ui.screens.wallet.accounts.common :as common]
[status-im.ui.screens.wallet.accounts.sheets :as sheets]
[status-im.ui.screens.wallet.accounts.styles :as styles]
[status-im.ui.screens.wallet.buy-crypto.views :as buy-crypto])
[status-im.ui.screens.wallet.buy-crypto.views :as buy-crypto]
[react-native.safe-area :as safe-area])
(:require-macros [status-im.utils.views :as views]))
(views/defview account-card
@ -54,7 +55,7 @@
[react/touchable-highlight
{:style styles/card-icon-more
:on-press #(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (fn [] [sheets/account-card-actions account type wallet])
:content-height 130}])}
[icons/icon :main-icons/more {:color colors/white-persist}]]]]]))
@ -62,7 +63,7 @@
(defn add-card
[card-width]
[react/touchable-highlight
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content sheets/add-account
:content-height 260}])
:accessibility-label "add-new-account"}
@ -290,7 +291,7 @@
[quo2.button/button
{:type :grey
:size 32
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content sheets/add-account
:content-height 260}])}
"Add account"]]]))))
@ -301,33 +302,36 @@
;mainnet? @(re-frame/subscribe [:mainnet?])
selected-account-atom (reagent/atom nil)]
(fn []
[react/view
{:style {:flex 1
:background-color (quo2.colors/theme-colors quo2.colors/neutral-5
quo2.colors/neutral-95)}}
[react/view {:padding-horizontal 20}
[react/view {:flex-direction :row :height 56 :align-items :center :justify-content :flex-end}
[quo2.button/button
{:icon true
:size 32
:type :grey
:accessibility-label :accounts-qr-code
:on-press #(re-frame/dispatch
[::qr-scanner/scan-code
{:handler :wallet.send/qr-scanner-result}])}
:i/placeholder]
[react/view {:width 12}]
[quo2.button/button
{:icon true
:size 32
:type :grey
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
{:content (sheets/accounts-options mnemonic)}])
:accessibility-label :accounts-more-options}
:i/placeholder]]
[total-value]
[accounts selected-account-atom]]
[account.views/account-new @selected-account-atom]])))
[safe-area/consumer
(fn [{:keys [top]}]
[react/view
{:style {:flex 1
:padding-top top
:background-color (quo2.colors/theme-colors quo2.colors/neutral-5
quo2.colors/neutral-95)}}
[react/view {:padding-horizontal 20}
[react/view {:flex-direction :row :height 56 :align-items :center :justify-content :flex-end}
[quo2.button/button
{:icon true
:size 32
:type :grey
:accessibility-label :accounts-qr-code
:on-press #(re-frame/dispatch
[::qr-scanner/scan-code
{:handler :wallet.send/qr-scanner-result}])}
:i/placeholder]
[react/view {:width 12}]
[quo2.button/button
{:icon true
:size 32
:type :grey
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (sheets/accounts-options mnemonic)}])
:accessibility-label :accounts-more-options}
:i/placeholder]]
[total-value]
[accounts selected-account-atom]]
[account.views/account-new @selected-account-atom]])])))
(defn accounts-overview-old
[]
@ -346,7 +350,7 @@
{:handler :wallet.send/qr-scanner-result}])
:icon :main-icons/qr
:accessibility-label :accounts-qr-code}
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet
{:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (sheets/accounts-options
mnemonic)}])
:icon :main-icons/more

View File

@ -39,8 +39,8 @@
(defn show-accounts-list
[]
(re-frame/dispatch [:bottom-sheet/hide])
(js/setTimeout #(re-frame/dispatch [:bottom-sheet/show-sheet
(re-frame/dispatch [:bottom-sheet/hide-old])
(js/setTimeout #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn [] [accounts-list :to :wallet.send/set-field])
:content-height 300}])
400))

View File

@ -35,7 +35,7 @@
{:on-press (when-not request?
#(do
(re-frame/dispatch [:dismiss-keyboard])
(re-frame/dispatch [:bottom-sheet/show-sheet
(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn [] [sheets/assets (:address from)])
:content-height 300}])))}
[react/view
@ -70,7 +70,7 @@
:chevron true
:on-press #(do
(re-frame/dispatch [:dismiss-keyboard])
(re-frame/dispatch [:bottom-sheet/show-sheet
(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn [] [sheets/accounts-list :from event])
:content-height 300}]))}])

View File

@ -23,7 +23,7 @@
(defn hide-sheet-and-dispatch
[event]
(re-frame/dispatch [:bottom-sheet/hide])
(re-frame/dispatch [:bottom-sheet/hide-old])
(re-frame/dispatch event))
(defn custom-token-actions-view
@ -65,7 +65,7 @@
:on-press #(re-frame/dispatch
[:wallet.settings/toggle-visible-token (keyword symbol) (not checked?)])
:on-long-press #(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (custom-token-actions-view token)}])}])}))
(defn- render-token-wrapper

View File

@ -14,7 +14,8 @@
:margin-left 20
:margin-bottom 36
:justify-content :center
:align-items :center})
:align-items :center
:margin-top 40})
(def chat-button
{:position :absolute

View File

@ -14,11 +14,6 @@
[status-im.react-native.resources :as resources]
[status-im2.common.contact-list-item.view :as contact-list-item]))
(defn- hide-sheet-and-dispatch
[event]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch event))
(defn- no-contacts-view
[]
[rn/view
@ -45,7 +40,7 @@
(i18n/label :t/invite-friends)]
[quo2/button
{:type :grey
:on-press #(hide-sheet-and-dispatch [:open-modal :new-contact])}
:on-press #(rf/dispatch [:open-modal :new-contact])}
(i18n/label :t/add-a-contact)]])
(defn contact-item-render
@ -69,18 +64,17 @@
(let [contacts (rf/sub [:contacts/sorted-and-grouped-by-first-letter])
selected-contacts-count (rf/sub [:selected-contacts-count])
selected-contacts (rf/sub [:group/selected-contacts])
window-height (rf/sub [:dimensions/window-height])
one-contact-selected? (= selected-contacts-count 1)
contacts-selected? (pos? selected-contacts-count)
{:keys [primary-name public-key]} (when one-contact-selected?
(rf/sub [:contacts/contact-by-identity
(first selected-contacts)]))
no-contacts? (empty? contacts)]
[rn/view {:style {:height (* window-height 0.9)}}
[:<>
[quo2/button
{:type :grey
:icon true
:on-press #(rf/dispatch [:bottom-sheet/hide])
:on-press #(rf/dispatch [:navigate-back])
:style style/contact-selection-close
:override-background-color (quo2.colors/theme-colors quo2.colors/neutral-10
quo2.colors/neutral-90)}
@ -117,10 +111,8 @@
:accessibility-label :next-button
:on-press (fn []
(if one-contact-selected?
(hide-sheet-and-dispatch [:chat.ui/start-chat
public-key])
(hide-sheet-and-dispatch [:navigate-to
:new-group])))}
(rf/dispatch [:chat.ui/start-chat public-key])
(rf/dispatch [:navigate-to :new-group])))}
(if one-contact-selected?
(i18n/label :t/chat-with {:selected-user primary-name})
(i18n/label :t/setup-group-chat))])]))])

View File

@ -154,7 +154,7 @@
{:on-press
(fn []
(re-frame/dispatch
[:bottom-sheet/show-sheet
[:bottom-sheet/show-sheet-old
{:content (sheets/options chat-id message-id)
:content-height 200}])
(rn/dismiss-keyboard!))}

View File

@ -44,8 +44,7 @@
:active-opacity 1
:on-press (fn []
(rf/dispatch [:pin-message/hide-pin-limit-modal chat-id])
(rf/dispatch [:bottom-sheet/show-sheet :pinned-messages-list
chat-id])
(rf/dispatch [:pin-message/show-pins-bottom-sheet chat-id])
(rf/dispatch [:dismiss-keyboard]))
:style style/view-pinned-messages}
[quo/text {:size :paragraph-2 :weight :medium :color colors/white}

View File

@ -3,7 +3,7 @@
[goog.string :as gstring]
[re-frame.core :as re-frame]
[react-native.mail :as react-native-mail]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[utils.i18n :as i18n]
[status-im.native-module.core :as status]
[status-im.transport.utils :as transport.utils]
@ -206,7 +206,7 @@
{:db (assoc db :bug-report/description-error error)}
(rf/merge
cofx
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(send-logs :email))))
(re-frame/reg-fx
@ -234,5 +234,5 @@
(rf/merge
cofx
{:db (dissoc db :bug-report/details)}
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(submit-issue)))

View File

@ -72,18 +72,18 @@
(rf/defn handle-community-requests
[cofx {:keys [community-id]}]
(log/info "universal-links: handling community request " community-id)
(navigation/navigate-to-cofx cofx :community-requests-to-join {:community-id community-id}))
(navigation/navigate-to cofx :community-requests-to-join {:community-id community-id}))
(rf/defn handle-community
[cofx {:keys [community-id]}]
(log/info "universal-links: handling community" community-id)
(navigation/navigate-to-cofx cofx :community {:community-id community-id}))
(navigation/navigate-to cofx :community {:community-id community-id}))
(rf/defn handle-navigation-to-desktop-community-from-mobile
{:events [:handle-navigation-to-desktop-community-from-mobile]}
[{:keys [db]} cofx deserialized-key]
(navigation/navigate-to-cofx cofx :community {:community-id deserialized-key}))
(navigation/navigate-to cofx :community {:community-id deserialized-key}))
(rf/defn handle-desktop-community
@ -111,7 +111,7 @@
(and public-key (new-chat.db/own-public-key? db public-key))
(rf/merge cofx
{:pop-to-root-fx :shell-stack}
(navigation/navigate-to-cofx :my-profile nil))
(navigation/navigate-to :my-profile nil))
public-key
{:dispatch [:chat.ui/show-profile public-key ens-name]}))
@ -120,7 +120,7 @@
[cofx data]
(rf/merge cofx
(choose-recipient/parse-eip681-uri-and-resolve-ens data true)
(navigation/navigate-to-cofx :wallet nil)))
(navigation/navigate-to :wallet nil)))
(defn existing-account?
[{:keys [db]} address]
@ -133,9 +133,9 @@
(rf/defn handle-wallet-account
[cofx {address :account}]
(when-let [account (existing-account? cofx address)]
(navigation/navigate-to-cofx cofx
:wallet-account
account)))
(navigation/navigate-to cofx
:wallet-account
account)))
(defn handle-not-found
[full-url]

View File

@ -37,7 +37,7 @@
{:name (str "Account " path-num)}))]
(rf/merge cofx
{:db (assoc db :add-account (assoc add-account :account account))}
(navigation/navigate-to-cofx :add-new-account nil))))
(navigation/navigate-to :add-new-account nil))))
(rf/defn new-account-error
{:events [::new-account-error]}

View File

@ -1,6 +1,6 @@
(ns status-im.wallet.choose-recipient.core
(:require [re-frame.core :as re-frame]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.contact.db :as contact.db]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.eip681 :as eip681]
@ -111,7 +111,7 @@
{:events [:wallet.send/qr-scanner]}
[{:keys [db] :as cofx} options]
(rf/merge cofx
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(qr-scaner/scan-qr-code options)))
(rf/defn parse-eip681-uri-and-resolve-ens

View File

@ -4,7 +4,7 @@
[clojure.string :as string]
[re-frame.core :as re-frame]
[status-im.async-storage.core :as async-storage]
[status-im2.common.bottom-sheet.events :as bottom-sheet]
[status-im.bottom-sheet.events :as bottom-sheet]
[status-im.contact.db :as contact.db]
[status-im.ethereum.core :as ethereum]
[status-im.ethereum.eip55 :as eip55]
@ -87,7 +87,7 @@
(rf/defn open-transaction-details
{:events [:wallet.ui/show-transaction-details]}
[cofx hash address]
(navigation/navigate-to-cofx cofx :wallet-transaction-details {:hash hash :address address}))
(navigation/navigate-to cofx :wallet-transaction-details {:hash hash :address address}))
(defn dups
[seq]
@ -589,21 +589,21 @@
[{:keys [db] :as cofx} symbol]
(rf/merge cofx
{:db (assoc-in db [:wallet/prepare-transaction :symbol] symbol)}
(bottom-sheet/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(rf/defn wallet-send-set-field
{:events [:wallet.send/set-field]}
[{:keys [db] :as cofx} field value]
(rf/merge cofx
{:db (assoc-in db [:wallet/prepare-transaction field] value)}
(bottom-sheet/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(rf/defn wallet-request-set-field
{:events [:wallet.request/set-field]}
[{:keys [db] :as cofx} field value]
(rf/merge cofx
{:db (assoc-in db [:wallet/prepare-transaction field] value)}
(bottom-sheet/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(rf/defn navigate-to-recipient-code
{:events [:wallet.send/navigate-to-recipient-code]}
@ -611,7 +611,7 @@
(rf/merge cofx
{:db (-> db
(assoc :wallet/recipient {}))}
(bottom-sheet/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(navigation/open-modal :recipient nil)))
(rf/defn show-delete-account-confirmation

View File

@ -1,30 +0,0 @@
(ns status-im2.common.bottom-sheet.events
(:require [utils.re-frame :as rf]))
(rf/defn show-bottom-sheet
[{:keys [db]} {:keys [view options]}]
{:dispatch-n [[:dismiss-keyboard]]
:show-bottom-sheet-overlay nil
:db (assoc db
:bottom-sheet/show? true
:bottom-sheet/view view
:bottom-sheet/options options)})
(rf/defn show-bottom-sheet-event
{:events [:bottom-sheet/show-sheet]}
[cofx view options]
(show-bottom-sheet
cofx
{:view view
:options options}))
(rf/defn hide-bottom-sheet
{:events [:bottom-sheet/hide]}
[{:keys [db]}]
{:db (assoc db :bottom-sheet/show? false)
:dismiss-bottom-sheet-overlay nil})
(rf/defn hide-bottom-sheet-navigation-overlay
{:events [:bottom-sheet/hide-navigation-overlay]}
[{}]
{:dismiss-bottom-sheet-overlay nil})

View File

@ -1,56 +1,36 @@
(ns status-im2.common.bottom-sheet.styles
(:require [quo2.foundations.colors :as colors]))
(def border-radius 20)
(defn handle
[override-theme]
{:position :absolute
:top 8
:width 32
{:width 32
:height 4
:background-color (colors/theme-colors colors/neutral-100 colors/white override-theme)
:opacity 0.1
:opacity 0.05
:border-radius 100
:align-self :center})
:align-self :center
:margin-vertical 8})
(def backdrop
{:position :absolute
:left 0
:right 0
:bottom 0
:top 0
:background-color colors/neutral-100})
(def container
{:position :absolute
:left 0
:right 0
:top 0
:bottom 0
:overflow :hidden})
(defn content-style
[insets bottom-safe-area-spacing?]
{:position :absolute
:left 0
:right 0
:top 0
:padding-top border-radius
:padding-bottom (if bottom-safe-area-spacing? (:bottom insets) 0)})
(defn selected-background
[override-theme]
{:border-radius 12
:padding-left 12
:margin-horizontal 8
:margin-bottom 10
:height 48
:background-color (colors/theme-colors colors/white colors/neutral-90 override-theme)})
(defn background
[override-theme]
{:background-color (colors/theme-colors colors/white colors/neutral-95 override-theme)
(defn sheet
[{:keys [top bottom]} window-height override-theme]
{:position :absolute
:max-height (- window-height top 20)
:z-index 1
:bottom 0
:left 0
:right 0
:border-top-left-radius 20
:border-top-right-radius 20
:flex 1
:border-top-left-radius border-radius
:border-top-right-radius border-radius})
:padding-bottom (max 20 bottom)
:background-color (colors/theme-colors colors/white colors/neutral-90 override-theme)})
(defn selected-item
[override-theme]
{:position :absolute
:bottom 10
:left 0
:right 0
:border-radius 12
:margin-horizontal 8
:background-color (colors/theme-colors colors/white colors/neutral-90 override-theme)})

View File

@ -1,240 +1,82 @@
(ns status-im2.common.bottom-sheet.view
(:require [oops.core :refer [oget]]
[quo.react :as react]
[status-im2.common.bottom-sheet.styles :as styles]
[re-frame.core :as re-frame]
[react-native.background-timer :as timer]
(:require [utils.re-frame :as rf]
[react-native.core :as rn]
[react-native.gesture :as gesture]
[react-native.hooks :as hooks]
[react-native.platform :as platform]
[quo2.foundations.colors :as colors]
[react-native.reanimated :as reanimated]
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[utils.worklets.bottom-sheet :as worklets.bottom-sheet]))
[status-im2.common.bottom-sheet.styles :as styles]
[react-native.gesture :as gesture]
[oops.core :as oops]
[react-native.hooks :as hooks]))
(def animation-delay 450)
(def duration 450)
(def timing-options #js {:duration duration})
(defn with-animation
[value & [options callback]]
(reanimated/with-spring
value
(clj->js (merge {:mass 2
:stiffness 500
:damping 200})
options)
callback))
(defn hide
[translate-y bg-opacity window-height]
;; it will be better to use animation callback, but it doesn't work
;; so we have to use timeout, also we add 50ms for safety
(js/setTimeout #(rf/dispatch [:bottom-sheet-hidden]) (+ duration 50))
(reanimated/set-shared-value translate-y
(reanimated/with-timing window-height timing-options))
(reanimated/set-shared-value bg-opacity (reanimated/with-timing 0 timing-options)))
(defn get-bottom-sheet-gesture
[pan-y translate-y bg-height bg-height-expanded
window-height keyboard-shown disable-drag? expandable?
show-bottom-sheet? expanded? close-bottom-sheet gesture-running?]
(defn show
[translate-y bg-opacity]
(reanimated/set-shared-value translate-y (reanimated/with-timing 0 timing-options))
(reanimated/set-shared-value bg-opacity (reanimated/with-timing 1 timing-options)))
(def gesture-values (atom {}))
(defn get-sheet-gesture
[translate-y bg-opacity window-height]
(-> (gesture/gesture-pan)
(gesture/on-start
(fn [_]
(reset! gesture-running? true)
(when (and keyboard-shown (not disable-drag?) show-bottom-sheet?)
(re-frame/dispatch [:dismiss-keyboard]))))
(swap! gesture-values assoc :pan-y (reanimated/get-shared-value translate-y))))
(gesture/on-update
(fn [evt]
(when (and (not disable-drag?) show-bottom-sheet?)
(let [max-pan-up (if (or @expanded? (not expandable?))
0
(- (- bg-height-expanded bg-height)))
max-pan-down (if @expanded?
bg-height-expanded
bg-height)]
(reanimated/set-shared-value pan-y
(max
(min
(.-translationY evt)
max-pan-down)
max-pan-up))))))
(let [tY (oops/oget evt "translationY")]
(swap! gesture-values assoc :dy (- tY (:pdy @gesture-values)))
(swap! gesture-values assoc :pdy tY)
(when (pos? tY)
(reanimated/set-shared-value
translate-y
(+ tY (:pan-y @gesture-values)))))))
(gesture/on-end
(fn [_]
(reset! gesture-running? false)
(when (and (not disable-drag?) show-bottom-sheet?)
(let [end-pan-y (- window-height (.-value translate-y))
expand-threshold (min (* bg-height 1.1) (+ bg-height 50))
collapse-threshold (max (* bg-height-expanded 0.9) (- bg-height-expanded 50))
should-close-bottom-sheet? (< end-pan-y (max (* bg-height 0.7) 50))]
(cond
should-close-bottom-sheet?
(close-bottom-sheet)
(if (< (:dy @gesture-values) 0)
(show translate-y bg-opacity)
(hide translate-y bg-opacity window-height))))))
(and (not @expanded?) (> end-pan-y expand-threshold))
(reset! expanded? true)
(defn view
[{:keys [hide? insets]} {:keys [content override-theme selected-item]}]
(let [{window-height :height} (rn/use-window-dimensions)
bg-opacity (reanimated/use-shared-value 0)
translate-y (reanimated/use-shared-value window-height)
sheet-gesture (get-sheet-gesture translate-y bg-opacity window-height)]
(rn/use-effect #(if hide? (hide translate-y bg-opacity window-height) (show translate-y bg-opacity))
[hide?])
(hooks/use-back-handler #(do (rf/dispatch [:hide-bottom-sheet]) true))
[rn/view {:flex 1}
;; backdrop
[rn/touchable-without-feedback {:on-press #(rf/dispatch [:hide-bottom-sheet])}
[reanimated/view
{:style (reanimated/apply-animations-to-style
{:opacity bg-opacity}
{:flex 1 :background-color colors/neutral-100-opa-70})}]]
;; sheet
[gesture/gesture-detector {:gesture sheet-gesture}
[reanimated/view
{:style (reanimated/apply-animations-to-style
{:transform [{:translateY translate-y}]}
(styles/sheet insets window-height override-theme))}
(and @expanded? (< end-pan-y collapse-threshold))
(reset! expanded? false))))))))
(when selected-item
[rn/view
[rn/view {:style (styles/selected-item override-theme)}
[selected-item]]])
(defn handle-comp
[window-width override-theme]
[rn/view
{:style {:width window-width
:position :absolute
:background-color :transparent
:top 0
:height 20}}
[rn/view {:style (styles/handle override-theme)}]])
(defn bottom-sheet
[props children]
(let [{on-cancel :on-cancel
disable-drag? :disable-drag?
show-handle? :show-handle?
visible? :visible?
backdrop-dismiss? :backdrop-dismiss?
expandable? :expandable?
bottom-safe-area-spacing? :bottom-safe-area-spacing?
selected-item :selected-item
is-initially-expanded? :expanded?
override-theme :override-theme
:or {show-handle? true
backdrop-dismiss? true
expandable? false
bottom-safe-area-spacing? true
is-initially-expanded? false}}
props
content-height (reagent/atom nil)
show-bottom-sheet? (reagent/atom nil)
keyboard-was-shown? (reagent/atom false)
expanded? (reagent/atom is-initially-expanded?)
gesture-running? (reagent/atom false)
reset-atoms (fn []
(reset! show-bottom-sheet? nil)
(reset! content-height nil)
(reset! expanded? false)
(reset! keyboard-was-shown? false)
(reset! gesture-running? false))
close-bottom-sheet (fn []
(reset! show-bottom-sheet? false)
(when (fn? on-cancel) (on-cancel))
(timer/set-timeout
#(do
(re-frame/dispatch [:bottom-sheet/hide-navigation-overlay])
(reset-atoms))
animation-delay))]
[safe-area/consumer
(fn [insets]
[:f>
(fn []
(let [{height :height
window-width :width}
(rn/use-window-dimensions)
window-height (if selected-item (- height 72) height)
{:keys [keyboard-shown]} (hooks/use-keyboard)
bg-height-expanded (- window-height (:top insets))
bg-height (max (min @content-height bg-height-expanded) 109)
bottom-sheet-dy (reanimated/use-shared-value 0)
pan-y (reanimated/use-shared-value 0)
translate-y (worklets.bottom-sheet/use-translate-y window-height bottom-sheet-dy pan-y)
bg-opacity
(worklets.bottom-sheet/use-background-opacity translate-y bg-height window-height)
on-content-layout (fn [evt]
(let [height (oget evt "nativeEvent" "layout" "height")]
(reset! content-height height)))
on-expanded (fn []
(reanimated/set-shared-value bottom-sheet-dy bg-height-expanded)
(reanimated/set-shared-value pan-y 0))
on-collapsed (fn []
(reanimated/set-shared-value bottom-sheet-dy bg-height)
(reanimated/set-shared-value pan-y 0))
bottom-sheet-gesture (get-bottom-sheet-gesture
pan-y
translate-y
bg-height
bg-height-expanded
window-height
keyboard-shown
disable-drag?
expandable?
show-bottom-sheet?
expanded?
close-bottom-sheet
gesture-running?)
handle-comp [gesture/gesture-detector {:gesture bottom-sheet-gesture}
[handle-comp window-width override-theme]]]
(react/effect! #(do
(cond
(and
(nil? @show-bottom-sheet?)
visible?
(some? @content-height)
(> @content-height 0))
(reset! show-bottom-sheet? true)
(and @show-bottom-sheet? (not visible?))
(close-bottom-sheet)))
[@show-bottom-sheet? @content-height visible?])
(react/effect! #(do
(when @show-bottom-sheet?
(cond
keyboard-shown
(do
(reset! keyboard-was-shown? true)
(reset! expanded? true))
(and @keyboard-was-shown? (not keyboard-shown))
(reset! expanded? false))))
[@show-bottom-sheet? @keyboard-was-shown? keyboard-shown])
(react/effect! #(do
(when-not @gesture-running?
(cond
@show-bottom-sheet?
(if @expanded?
(do
(reanimated/set-shared-value
bottom-sheet-dy
(with-animation (+ bg-height-expanded (.-value pan-y))))
;; Workaround for
;; https://github.com/software-mansion/react-native-reanimated/issues/1758#issue-817145741
;; withTiming/withSpring callback not working
;; on-expanded should be called as a callback of
;; with-animation instead, once this issue has been resolved
(timer/set-timeout on-expanded animation-delay))
(do
(reanimated/set-shared-value
bottom-sheet-dy
(with-animation (+ bg-height (.-value pan-y))))
;; Workaround for
;; https://github.com/software-mansion/react-native-reanimated/issues/1758#issue-817145741
;; withTiming/withSpring callback not working
;; on-collapsed should be called as a callback of
;; with-animation instead, once this issue has been resolved
(timer/set-timeout on-collapsed animation-delay)))
(= @show-bottom-sheet? false)
(reanimated/set-shared-value bottom-sheet-dy (with-animation 0)))))
[@show-bottom-sheet? @expanded? @gesture-running?])
[:<>
[rn/touchable-without-feedback {:on-press (when backdrop-dismiss? close-bottom-sheet)}
[reanimated/view
{:style (reanimated/apply-animations-to-style
{:opacity bg-opacity}
styles/backdrop)}]]
(cond->> [reanimated/view
{:style (reanimated/apply-animations-to-style
{:transform [{:translateY translate-y}]}
{:width window-width
:height window-height})}
[rn/view {:style styles/container}
(when selected-item
[rn/view {:style (styles/selected-background override-theme)}
[selected-item]])
[rn/view {:style (styles/background override-theme)}
[rn/keyboard-avoiding-view
{:behaviour (if platform/ios? :padding :height)
:style {:flex 1}}
[rn/view
{:style (styles/content-style insets bottom-safe-area-spacing?)
:on-layout (when-not (and
(some? @content-height)
(> @content-height 0))
on-content-layout)}
children]]
(when show-handle?
handle-comp)]]]
(not show-handle?)
(conj [gesture/gesture-detector {:gesture bottom-sheet-gesture}]))]))])]))
;; handle
[rn/view {:style (styles/handle override-theme)}]
;; content
[content]]]]))

View File

@ -70,12 +70,14 @@
:padding-top padding-top}}
(when-not skip-background?
[reanimated/view {:style (style/background opacity)}])
[gesture/gesture-detector
{:gesture (drag-gesture translate-y opacity scroll-enabled curr-scroll)}
[reanimated/view {:style (style/main-view translate-y)}
[reanimated/view {:style (style/main-view translate-y)}
[gesture/gesture-detector
{:gesture (drag-gesture translate-y opacity scroll-enabled curr-scroll)}
[rn/view {:style style/handle-container}
[rn/view {:style (style/handle)}]]
[content
{:close close
:scroll-enabled @scroll-enabled
:on-scroll #(on-scroll % curr-scroll)}]]]])))])
[rn/view {:style (style/handle)}]]]
[content
{:insets insets
:close close
:scroll-enabled @scroll-enabled
:on-scroll #(on-scroll % curr-scroll)}]]])))])

View File

@ -61,7 +61,7 @@
[quo/button
{:type :grey
:style {:flex 0.48} ;;WUT? 0.48 , whats that ?
:on-press #(rf/dispatch [:bottom-sheet/hide])}
:on-press #(rf/dispatch [:hide-bottom-sheet])}
(or close-button-text (i18n/label :t/close))]
[quo/button
{:type :danger

View File

@ -23,7 +23,7 @@
(defn hide-sheet-and-dispatch
[event]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:hide-bottom-sheet])
(rf/dispatch event))
(defn show-profile-action
@ -50,35 +50,35 @@
(defn clear-history-action
[{:keys [chat-id] :as item}]
(hide-sheet-and-dispatch
[:bottom-sheet/show-sheet
[:show-bottom-sheet
{:content (fn []
(confirmation-drawer/confirmation-drawer
[confirmation-drawer/confirmation-drawer
{:title (i18n/label :t/clear-history?)
:description (i18n/label :t/clear-history-confirmation-content)
:context item
:accessibility-label :clear-history-confirm
:button-text (i18n/label :t/clear-history)
:on-press #(hide-sheet-and-dispatch [:chat.ui/clear-history chat-id])}))}]))
:on-press #(hide-sheet-and-dispatch [:chat.ui/clear-history chat-id])}])}]))
(defn delete-chat-action
[{:keys [chat-id] :as item}]
(hide-sheet-and-dispatch
[:bottom-sheet/show-sheet
[:show-bottom-sheet
{:content (fn []
(confirmation-drawer/confirmation-drawer
[confirmation-drawer/confirmation-drawer
{:title (i18n/label :t/delete-chat?)
:description (i18n/label :t/delete-chat-confirmation)
:context item
:accessibility-label :delete-chat-confirm
:button-text (i18n/label :t/delete-chat)
:on-press #(hide-sheet-and-dispatch [:chat.ui/remove-chat chat-id])}))}]))
:on-press #(hide-sheet-and-dispatch [:chat.ui/remove-chat chat-id])}])}]))
(defn leave-group-action
[item chat-id]
(hide-sheet-and-dispatch
[:bottom-sheet/show-sheet
[:show-bottom-sheet
{:content (fn []
(confirmation-drawer/confirmation-drawer
[confirmation-drawer/confirmation-drawer
{:title (i18n/label :t/leave-group?)
:description (i18n/label :t/leave-chat-confirmation)
:context item
@ -87,21 +87,21 @@
:on-press #(do
(rf/dispatch [:navigate-back])
(hide-sheet-and-dispatch [:group-chats.ui/leave-chat-confirmed
chat-id]))}))}]))
chat-id]))}])}]))
(defn block-user-action
[{:keys [public-key] :as item}]
(hide-sheet-and-dispatch
[:bottom-sheet/show-sheet
[:show-bottom-sheet
{:content (fn []
(confirmation-drawer/confirmation-drawer
[confirmation-drawer/confirmation-drawer
{:title (i18n/label :t/block-user?)
:description (i18n/label :t/block-contact-details)
:context item
:accessibility-label :block-user
:button-text (i18n/label :t/block-user)
:on-press #(hide-sheet-and-dispatch [:contact.ui/block-contact-confirmed
public-key])}))}]))
public-key])}])}]))
(defn mute-chat-entry
[chat-id]

View File

@ -76,7 +76,7 @@
(merge button-common-props
{:icon false
:accessibility-label :on-cellular-network
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-press #(rf/dispatch [:show-bottom-sheet
{:content connectivity-sheet}])})
"🦄"])
(when (= network-type "none")
@ -84,7 +84,7 @@
(merge button-common-props
{:icon false
:accessibility-label :no-network-connection
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-press #(rf/dispatch [:show-bottom-sheet
{:content connectivity-sheet}])})
"💀"])
(when search?

View File

@ -76,20 +76,20 @@
(defn- decline-challenge
[id]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:hide-bottom-sheet])
(rf/dispatch [:activity-center.contact-verification/decline id])
(rf/dispatch [:activity-center.notifications/mark-as-read id]))
(defn- prepare-challenge-reply
[props]
(rf/dispatch [:bottom-sheet/show-sheet
(rf/dispatch [:show-bottom-sheet
{:content view
:override-theme :dark}
(assoc props :replying? true)]))
(defn- send-challenge-reply
[id reply]
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:hide-bottom-sheet])
(rf/dispatch [:activity-center.contact-verification/reply id reply])
(rf/dispatch [:activity-center.notifications/mark-as-read id]))

View File

@ -50,7 +50,7 @@
;; notifications to mark as read
;; https://github.com/status-im/status-mobile/issues/14983
(js/alert "No unread notifications to mark as read"))
(rf/dispatch [:bottom-sheet/hide]))}]]]))
(rf/dispatch [:hide-bottom-sheet]))}]]]))
(defn empty-tab
[]
@ -153,7 +153,7 @@
:size 32
:accessibility-label :activity-center-open-more
:override-theme :dark
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-press #(rf/dispatch [:show-bottom-sheet
{:content options-bottom-sheet-content
:override-theme :dark}])}
:i/options]]

View File

@ -313,7 +313,7 @@
:content (i18n/label :t/clear-history-confirmation-content)
:confirm-button-text (i18n/label :t/clear-history-action)
:on-accept #(do
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:hide-bottom-sheet])
(rf/dispatch [:chat.ui/clear-history chat-id false]))}})
(rf/defn show-remove-chat-confirmation
@ -324,7 +324,7 @@
:content (i18n/label :t/delete-chat-confirmation)
:confirm-button-text (i18n/label :t/delete)
:on-accept #(do
(rf/dispatch [:bottom-sheet/hide])
(rf/dispatch [:hide-bottom-sheet])
(rf/dispatch [:chat.ui/remove-chat chat-id]))}})
(rf/defn navigate-to-user-pinned-messages

View File

@ -34,11 +34,10 @@
:margin-bottom 24})
(defn bottom-container
[safe-area]
[bottom]
{:padding-horizontal 20
:padding-vertical 12
:padding-bottom (+ 33 (:bottom safe-area))
:width "100%"
:margin-bottom bottom
:background-color (colors/theme-colors colors/white colors/neutral-95-opa-70)
:flex-direction :row})

View File

@ -1,6 +1,5 @@
(ns status-im2.contexts.chat.group-details.view
(:require [utils.i18n :as i18n]
[quo.components.safe-area :as safe-area]
[quo2.core :as quo]
[quo2.foundations.colors :as colors]
[react-native.core :as rn]
@ -31,7 +30,7 @@
:width 32
:style {:margin-right 20}
:accessibility-label :options-button
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-press #(rf/dispatch [:show-bottom-sheet
{:content (fn [] [actions/group-details-actions group])}])}
[quo/icon :i/options {:color (colors/theme-colors colors/neutral-100 colors/white)}]]))
@ -92,52 +91,50 @@
:on-check on-toggle}})
item]))))
(defn add-members-sheet
[group admin?]
[:f>
(fn []
(let [{window-height :height} (rn/use-window-dimensions)
safe-area (safe-area/use-safe-area)
selected-participants (rf/sub [:group-chat/selected-participants])
deselected-members (rf/sub [:group-chat/deselected-members])]
[rn/view {:style {:height (- window-height (:top safe-area))}}
[rn/touchable-opacity
{:on-press #(rf/dispatch [:bottom-sheet/hide])
:accessibility-label :close-manage-members
:style (style/close-icon)}
[quo/icon :i/close {:color (colors/theme-colors colors/neutral-100 colors/white)}]]
[quo/text
{:size :heading-1
:weight :semi-bold
:style {:margin-left 20}}
(i18n/label (if admin? :t/manage-members :t/add-members))]
[rn/section-list
{:key-fn :title
:sticky-section-headers-enabled false
:sections (rf/sub [:contacts/grouped-by-first-letter])
:render-section-header-fn contact-list/contacts-section-header
:content-container-style {:padding-bottom 20}
:render-data {:group group}
:render-fn add-member-contact-item-render}]
[rn/view {:style (style/bottom-container safe-area)}
[quo/button
{:style {:flex 1}
:accessibility-label :save
:on-press (fn []
(rf/dispatch [:bottom-sheet/hide])
(js/setTimeout (fn []
(rf/dispatch
[:group-chats.ui/remove-members-pressed]))
500)
(rf/dispatch [:group-chats.ui/add-members-pressed]))
:disabled (and (zero? (count selected-participants))
(zero? (count deselected-members)))}
(i18n/label :t/save)]]]))])
(defn add-manage-members
[]
(let [selected-participants (rf/sub [:group-chat/selected-participants])
deselected-members (rf/sub [:group-chat/deselected-members])
{:keys [admins] :as group} (rf/sub [:chats/current-chat])
admin? (get admins (rf/sub [:multiaccount/public-key]))]
[rn/view {:flex 1 :margin-top 20}
[rn/touchable-opacity
{:on-press #(rf/dispatch [:navigate-back])
:accessibility-label :close-manage-members
:style (style/close-icon)}
[quo/icon :i/close {:color (colors/theme-colors colors/neutral-100 colors/white)}]]
[quo/text
{:size :heading-1
:weight :semi-bold
:style {:margin-left 20}}
(i18n/label (if admin? :t/manage-members :t/add-members))]
[rn/section-list
{:key-fn :title
:sticky-section-headers-enabled false
:sections (rf/sub [:contacts/grouped-by-first-letter])
:render-section-header-fn contact-list/contacts-section-header
:content-container-style {:padding-bottom 20}
:render-data {:group group}
:render-fn add-member-contact-item-render}]
[rn/view {:style (style/bottom-container 30)}
[quo/button
{:style {:flex 1}
:accessibility-label :save
:on-press (fn []
(rf/dispatch [:navigate-back])
(js/setTimeout (fn []
(rf/dispatch
[:group-chats.ui/remove-members-pressed]))
500)
(rf/dispatch [:group-chats.ui/add-members-pressed]))
:disabled (and (zero? (count selected-participants))
(zero? (count deselected-members)))}
(i18n/label :t/save)]]]))
(defn contact-item-render
[{:keys [public-key] :as item} _ _ extra-data]
(let [current-pk (rf/sub [:multiaccount/public-key])
show-profile-actions #(rf/dispatch [:bottom-sheet/show-sheet
show-profile-actions #(rf/dispatch [:show-bottom-sheet
{:content (fn [] [actions/contact-actions item
extra-data])}])]
[contact-list-item/contact-list-item
@ -151,13 +148,11 @@
(defn group-details
[]
(let [{:keys [admins chat-id chat-name color public?
muted contacts]
:as group} (rf/sub
[:chats/current-chat])
members (rf/sub [:contacts/group-members-sections])
pinned-messages (rf/sub [:chats/pinned chat-id])
current-pk (rf/sub [:multiaccount/public-key])
admin? (get admins current-pk)]
muted contacts]} (rf/sub [:chats/current-chat])
members (rf/sub [:contacts/group-members-sections])
pinned-messages (rf/sub [:chats/pinned chat-id])
current-pk (rf/sub [:multiaccount/public-key])
admin? (get admins current-pk)]
[rn/view
{:style {:flex 1
:background-color (colors/theme-colors colors/white colors/neutral-95)}}
@ -185,7 +180,7 @@
:accessibility-label :pinned-messages
:on-press (fn []
(rf/dispatch [:dismiss-keyboard])
(rf/dispatch [:bottom-sheet/show-sheet :pinned-messages-list chat-id]))}
(rf/dispatch [:pin-message/show-pins-bottom-sheet chat-id]))}
[rn/view
{:style {:flex-direction :row
:justify-content :space-between}}
@ -207,9 +202,7 @@
:on-press (fn []
(rf/dispatch [:group/clear-added-participants])
(rf/dispatch [:group/clear-removed-members])
(rf/dispatch
[:bottom-sheet/show-sheet
{:content (fn [] [add-members-sheet group admin?])}]))}
(rf/dispatch [:open-modal :group-add-manage-members]))}
[rn/view
{:style {:flex-direction :row
:justify-content :space-between}}

View File

@ -128,7 +128,7 @@
[rn/touchable-opacity
{:style (style/container)
:on-press (open-chat chat-id)
:on-long-press #(rf/dispatch [:bottom-sheet/show-sheet
:on-long-press #(rf/dispatch [:show-bottom-sheet
{:content (fn [] [actions/chat-actions item false])}])}
[avatar-view
{:contact contact

View File

@ -15,7 +15,8 @@
[quo2.foundations.colors :as colors]
[react-native.blur :as blur]
[status-im2.contexts.chat.home.style :as style]
[react-native.platform :as platform]))
[react-native.platform :as platform]
[status-im2.contexts.chat.sheets.view :as home.sheet]))
(defn get-item-layout
[_ index]
@ -61,7 +62,7 @@
(defn contact-item-render
[{:keys [public-key] :as item}]
(let [current-pk (rf/sub [:multiaccount/public-key])
show-profile-actions #(rf/dispatch [:bottom-sheet/show-sheet
show-profile-actions #(rf/dispatch [:show-bottom-sheet
{:content (fn [] [actions/contact-actions item])}])]
[contact-list-item/contact-list-item
(when (not= public-key current-pk)
@ -119,8 +120,8 @@
[common.home/top-nav]
[common.home/title-column
{:label (i18n/label :t/messages)
:handler #(rf/dispatch [:bottom-sheet/show-sheet :new-chat-bottom-sheet
{}])
:handler #(rf/dispatch [:show-bottom-sheet
{:content home.sheet/new-chat-bottom-sheet}])
:accessibility-label :new-chat-button}]
[quo/discover-card
{:title (i18n/label :t/invite-friends-to-status)

View File

@ -7,7 +7,8 @@
[status-im2.contexts.chat.messages.content.view :as message]
[status-im2.contexts.chat.menus.pinned-messages.style :as style]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
[utils.re-frame :as rf]
[react-native.gesture :as gesture]))
(def list-key-fn #(or (:message-id %) (:value %)))
@ -29,11 +30,9 @@
(fn [insets]
[:f>
(fn []
(let [{window-height :height} (rn/use-window-dimensions)
bottom-inset (:bottom insets)]
[rn/scroll-view
{:style {:max-height (- window-height (:top insets))}
:accessibility-label :pinned-messages-menu}
(let [bottom-inset (:bottom insets)]
[gesture/scroll-view
{:accessibility-label :pinned-messages-menu}
[:<>
[quo/text
{:size :heading-1

View File

@ -2,13 +2,13 @@
(:require [quo2.foundations.colors :as colors]))
(defn controls
[insets]
[bottom-inset]
{:padding-horizontal 20
:elevation 4
:z-index 3
:position :absolute
:background-color (colors/theme-colors colors/white colors/neutral-90)
:padding-bottom (+ 12 (:bottom insets))
:padding-bottom (+ 12 bottom-inset)
:bottom 0
:left 0
:right 0})
@ -19,11 +19,11 @@
:min-height 32})
(defn record-audio-container
[insets]
[bottom-inset]
{:align-items :center
:background-color :transparent
:flex-direction :row
:position :absolute
:left 0
:right 0
:bottom (- (:bottom insets) 7)})
:bottom (- bottom-inset 7)})

View File

@ -12,7 +12,6 @@
[status-im.ui2.screens.chat.composer.input :as input]
[status-im2.common.alert.events :as alert]
[react-native.permissions :as permissions]
[react-native.safe-area :as safe-area]
[quo.react :as quo.react]))
(defn send-button
@ -41,13 +40,12 @@
:size 32} :i/reaction]])
(defn image-button
[insets]
[]
[quo/button
{:on-press (fn []
(permissions/request-permissions
{:permissions [:read-external-storage :write-external-storage]
:on-allowed #(rf/dispatch
[:open-modal :photo-selector {:insets insets}])
:on-allowed #(rf/dispatch [:open-modal :photo-selector])
:on-denied (fn []
(background-timer/set-timeout
#(utils-old/show-popup (i18n/label :t/error)
@ -60,72 +58,70 @@
:i/image])
(defn record-audio
[record-ref chat-id]
[safe-area/consumer
(fn [insets]
[rn/view
{:ref record-ref
:style (style/record-audio-container insets)
:pointer-events :box-none}
[quo/record-audio
{:record-audio-permission-granted @input/record-audio-permission-granted
:on-init (fn [init-fn]
(reset! input/record-audio-reset-fn init-fn)
(reset! input/recording-audio?
(some? (get @input/reviewing-audio-filepath chat-id)))
(when (seq (get @input/input-texts chat-id))
(js/setTimeout #(quo.react/set-native-props
record-ref
#js {:right nil :left -1000}))))
:on-start-recording #(reset! input/recording-audio? true)
:audio-file (get @input/reviewing-audio-filepath chat-id)
:on-reviewing-audio (fn [audio-file]
(swap! input/reviewing-audio-filepath assoc
chat-id
audio-file)
(reset! input/reviewing-audio? true))
:on-send (fn
[{:keys [file-path duration]}]
(rf/dispatch [:chat/send-audio file-path duration])
(reset! input/recording-audio? false)
(reset! input/reviewing-audio? false)
(swap! input/reviewing-audio-filepath dissoc chat-id))
:on-cancel (fn []
(reset! input/recording-audio? false)
(reset! input/reviewing-audio? false)
(swap! input/reviewing-audio-filepath dissoc chat-id))
:on-check-audio-permissions (fn []
(permissions/permission-granted?
:record-audio
#(reset! input/record-audio-permission-granted %)
#(reset! input/record-audio-permission-granted false)))
:on-request-record-audio-permission (fn []
(rf/dispatch
[:request-permissions
{:permissions [:record-audio]
:on-allowed
#(reset! input/record-audio-permission-granted true)
:on-denied
#(js/setTimeout
(fn []
(alert/show-popup
(i18n/label :t/audio-recorder-error)
(i18n/label
:t/audio-recorder-permissions-error)))
50)}]))}]])])
[record-ref chat-id bottom-inset]
[rn/view
{:ref record-ref
:style (style/record-audio-container bottom-inset)
:pointer-events :box-none}
[quo/record-audio
{:record-audio-permission-granted @input/record-audio-permission-granted
:on-init (fn [init-fn]
(reset! input/record-audio-reset-fn init-fn)
(reset! input/recording-audio?
(some? (get @input/reviewing-audio-filepath chat-id)))
(when (seq (get @input/input-texts chat-id))
(js/setTimeout #(quo.react/set-native-props
record-ref
#js {:right nil :left -1000}))))
:on-start-recording #(reset! input/recording-audio? true)
:audio-file (get @input/reviewing-audio-filepath chat-id)
:on-reviewing-audio (fn [audio-file]
(swap! input/reviewing-audio-filepath assoc
chat-id
audio-file)
(reset! input/reviewing-audio? true))
:on-send (fn
[{:keys [file-path duration]}]
(rf/dispatch [:chat/send-audio file-path duration])
(reset! input/recording-audio? false)
(reset! input/reviewing-audio? false)
(swap! input/reviewing-audio-filepath dissoc chat-id))
:on-cancel (fn []
(reset! input/recording-audio? false)
(reset! input/reviewing-audio? false)
(swap! input/reviewing-audio-filepath dissoc chat-id))
:on-check-audio-permissions (fn []
(permissions/permission-granted?
:record-audio
#(reset! input/record-audio-permission-granted %)
#(reset! input/record-audio-permission-granted false)))
:on-request-record-audio-permission (fn []
(rf/dispatch
[:request-permissions
{:permissions [:record-audio]
:on-allowed
#(reset! input/record-audio-permission-granted true)
:on-denied
#(js/setTimeout
(fn []
(alert/show-popup
(i18n/label :t/audio-recorder-error)
(i18n/label
:t/audio-recorder-permissions-error)))
50)}]))}]])
(defn view
[send-ref record-ref params insets chat-id images edit on-send]
[rn/view {:style (style/controls insets)}
[send-ref record-ref params bottom-inset chat-id images edit on-send]
[rn/view {:style (style/controls bottom-inset)}
[composer-images/images-list images]
[rn/view {:style style/buttons-container}
(when (and (not @input/recording-audio?)
(nil? (get @input/reviewing-audio-filepath chat-id)))
[:<>
[image-button insets]
[image-button]
[rn/view {:width 12}]
[reactions-button]
[rn/view {:flex 1}]
[send-button send-ref params on-send]])]
(when (and (not edit) (not (seq images)))
[record-audio record-ref chat-id])])
[record-audio record-ref chat-id bottom-inset])])

Some files were not shown because too many files have changed in this diff Show More