|
1 | 1 | (ns status-im.contexts.communities.actions.addresses-for-permissions.view
|
2 | 2 | (:require [quo.core :as quo]
|
3 |
| - [quo.foundations.colors :as colors] |
4 | 3 | [react-native.core :as rn]
|
5 | 4 | [react-native.gesture :as gesture]
|
6 | 5 | [status-im.common.not-implemented :as not-implemented]
|
7 | 6 | [status-im.common.resources :as resources]
|
8 | 7 | [status-im.constants :as constants]
|
9 | 8 | [status-im.contexts.communities.actions.addresses-for-permissions.style :as style]
|
10 |
| - [status-im.contexts.communities.utils :as communities.utils] |
11 | 9 | [utils.i18n :as i18n]
|
12 | 10 | [utils.money :as money]
|
13 | 11 | [utils.re-frame :as rf]))
|
14 | 12 |
|
| 13 | +(defn- role-keyword |
| 14 | + [role] |
| 15 | + (condp = role |
| 16 | + constants/community-token-permission-become-token-owner :token-owner |
| 17 | + constants/community-token-permission-become-token-master :token-master |
| 18 | + constants/community-token-permission-become-admin :admin |
| 19 | + constants/community-token-permission-become-member :member |
| 20 | + nil)) |
| 21 | + |
15 | 22 | (defn- balances->components-props
|
16 | 23 | [balances token-img-src]
|
17 | 24 | (for [{:keys [amount decimals type name] :as balance} balances]
|
|
70 | 77 | accounts (rf/sub [:wallet/accounts-without-watched-accounts])
|
71 | 78 | selected-addresses (rf/sub [:communities/selected-permission-addresses id])
|
72 | 79 | share-all-addresses? (rf/sub [:communities/share-all-addresses? id])
|
73 |
| - unsaved-address-changes? (rf/sub [:communities/unsaved-address-changes? id]) |
74 |
| - highest-role-text (when highest-permission-role |
75 |
| - (i18n/label (communities.utils/role->translation-key |
76 |
| - highest-permission-role)))] |
| 80 | + unsaved-address-changes? (rf/sub [:communities/unsaved-address-changes? id])] |
77 | 81 | [rn/safe-area-view {:style style/container}
|
78 | 82 | [quo/drawer-top
|
79 | 83 | {:type :context-tag
|
|
109 | 113 | :key-fn :address
|
110 | 114 | :data accounts}]
|
111 | 115 |
|
112 |
| - (if (and highest-permission-role (seq selected-addresses)) |
113 |
| - [rn/view |
114 |
| - {:style style/highest-role} |
115 |
| - [quo/text |
116 |
| - {:size :paragraph-2 |
117 |
| - :style {:color colors/neutral-50}} |
118 |
| - (i18n/label :t/eligible-to-join-as)] |
119 |
| - [quo/context-tag |
120 |
| - {:type :icon |
121 |
| - :icon :i/members |
122 |
| - :size 24 |
123 |
| - :context highest-role-text}]] |
124 |
| - [quo/info-message |
125 |
| - {:type :error |
126 |
| - :size :default |
127 |
| - :icon :i/info |
128 |
| - :style {:justify-content :center}} |
129 |
| - (if (empty? selected-addresses) |
130 |
| - (i18n/label :t/no-addresses-selected) |
131 |
| - (i18n/label :t/addresses-dont-contain-tokens-needed))]) |
132 |
| - |
133 |
| - [rn/view {:style style/buttons} |
134 |
| - [quo/button |
135 |
| - {:type :grey |
136 |
| - :container-style {:flex 1} |
137 |
| - :on-press (fn [] |
138 |
| - (rf/dispatch [:communities/reset-selected-permission-addresses id]) |
139 |
| - (rf/dispatch [:navigate-back]))} |
140 |
| - (i18n/label :t/cancel)] |
141 |
| - [quo/button |
142 |
| - {:container-style {:flex 1} |
143 |
| - :customization-color color |
144 |
| - :disabled? (or (empty? selected-addresses) |
145 |
| - (not highest-permission-role) |
146 |
| - (not unsaved-address-changes?)) |
147 |
| - :on-press (fn [] |
148 |
| - (rf/dispatch [:communities/update-previous-permission-addresses id]) |
149 |
| - (rf/dispatch [:navigate-back]))} |
150 |
| - (i18n/label :t/confirm-changes)]]])))) |
| 116 | + [quo/bottom-actions |
| 117 | + {:actions :two-actions |
| 118 | + :button-one-label (i18n/label :t/confirm-changes) |
| 119 | + :button-one-props {:customization-color color |
| 120 | + :disabled? (or (empty? selected-addresses) |
| 121 | + (not highest-permission-role) |
| 122 | + (not unsaved-address-changes?)) |
| 123 | + :on-press (fn [] |
| 124 | + (rf/dispatch |
| 125 | + [:communities/update-previous-permission-addresses |
| 126 | + id]) |
| 127 | + (rf/dispatch [:navigate-back]))} |
| 128 | + :button-two-label (i18n/label :t/cancel) |
| 129 | + :button-two-props {:type :grey |
| 130 | + :on-press (fn [] |
| 131 | + (rf/dispatch |
| 132 | + [:communities/reset-selected-permission-addresses id]) |
| 133 | + (rf/dispatch [:navigate-back]))} |
| 134 | + :description (if (or (empty? selected-addresses) |
| 135 | + (not highest-permission-role)) |
| 136 | + :top-error |
| 137 | + :top) |
| 138 | + :role (role-keyword highest-permission-role) |
| 139 | + :error-message (cond |
| 140 | + (empty? selected-addresses) (i18n/label :t/no-addresses-selected) |
| 141 | + (not highest-permission-role) (i18n/label |
| 142 | + :t/addresses-dont-contain-tokens-needed) |
| 143 | + :else nil)}]])))) |
0 commit comments