|
12 | 12 | status-im.contexts.communities.actions.addresses-for-permissions.events
|
13 | 13 | status-im.contexts.communities.actions.community-options.events
|
14 | 14 | status-im.contexts.communities.actions.leave.events
|
| 15 | + [status-im.contexts.communities.utils :as utils] |
15 | 16 | [status-im.navigation.events :as navigation]
|
16 | 17 | [taoensso.timbre :as log]
|
17 | 18 | [utils.i18n :as i18n]
|
|
163 | 164 | (defn initialize-permission-addresses
|
164 | 165 | [{:keys [db]} [community-id]]
|
165 | 166 | (when community-id
|
166 |
| - (let [accounts (get-in db [:wallet :accounts]) |
167 |
| - sorted-accounts (sort-by :position (vals accounts)) |
168 |
| - addresses (set (map :address sorted-accounts))] |
| 167 | + (let [accounts (utils/sorted-non-watch-only-accounts db) |
| 168 | + addresses (set (map :address accounts))] |
169 | 169 | {:db (update-in db
|
170 | 170 | [:communities community-id]
|
171 | 171 | assoc
|
| 172 | + :previous-share-all-addresses? true |
| 173 | + :share-all-addresses? true |
172 | 174 | :previous-permission-addresses addresses
|
173 | 175 | :selected-permission-addresses addresses
|
174 |
| - :airdrop-address (:address (first sorted-accounts)))}))) |
| 176 | + :airdrop-address (:address (first accounts)))}))) |
175 | 177 |
|
176 | 178 | (rf/reg-event-fx :communities/initialize-permission-addresses
|
177 | 179 | initialize-permission-addresses)
|
178 | 180 |
|
179 | 181 | (defn update-previous-permission-addresses
|
180 | 182 | [{:keys [db]} [community-id]]
|
181 | 183 | (when community-id
|
182 |
| - (let [accounts (get-in db [:wallet :accounts]) |
183 |
| - sorted-accounts (sort-by :position (vals accounts)) |
| 184 | + (let [accounts (utils/sorted-non-watch-only-accounts db) |
184 | 185 | selected-permission-addresses (get-in db
|
185 | 186 | [:communities community-id
|
186 | 187 | :selected-permission-addresses])
|
187 | 188 | selected-accounts (filter #(contains? selected-permission-addresses (:address %))
|
188 |
| - sorted-accounts) |
189 |
| - current-airdrop-address (get-in db [:communities community-id :airdrop-address])] |
| 189 | + accounts) |
| 190 | + current-airdrop-address (get-in db [:communities community-id :airdrop-address]) |
| 191 | + share-all-addresses? (get-in db [:communities community-id :share-all-addresses?])] |
190 | 192 | {:db (update-in db
|
191 | 193 | [:communities community-id]
|
192 | 194 | assoc
|
| 195 | + :previous-share-all-addresses? share-all-addresses? |
193 | 196 | :previous-permission-addresses selected-permission-addresses
|
194 | 197 | :airdrop-address (if (contains? selected-permission-addresses
|
195 | 198 | current-airdrop-address)
|
|
218 | 221 | (rf/reg-event-fx :communities/toggle-selected-permission-address
|
219 | 222 | toggle-selected-permission-address)
|
220 | 223 |
|
| 224 | +(defn toggle-share-all-addresses |
| 225 | + [{:keys [db]} [community-id]] |
| 226 | + (let [share-all-addresses? (get-in db [:communities community-id :share-all-addresses?]) |
| 227 | + accounts (utils/sorted-non-watch-only-accounts db) |
| 228 | + addresses (set (map :address accounts))] |
| 229 | + {:db (update-in db |
| 230 | + [:communities community-id] |
| 231 | + (fn [community] |
| 232 | + (-> community |
| 233 | + (assoc :share-all-addresses? (not share-all-addresses?)) |
| 234 | + (cond-> (not share-all-addresses?) |
| 235 | + (assoc :selected-permission-addresses addresses)))))})) |
| 236 | + |
| 237 | +(rf/reg-event-fx :communities/toggle-share-all-addresses |
| 238 | + toggle-share-all-addresses) |
| 239 | + |
221 | 240 | (rf/reg-event-fx :communities/reset-selected-permission-addresses
|
222 | 241 | (fn [{:keys [db]} [community-id]]
|
223 | 242 | (when community-id
|
224 |
| - {:db (assoc-in db |
225 |
| - [:communities community-id :selected-permission-addresses] |
226 |
| - (get-in db [:communities community-id :previous-permission-addresses])) |
| 243 | + {:db (update-in db |
| 244 | + [:communities community-id] |
| 245 | + assoc |
| 246 | + :selected-permission-addresses |
| 247 | + (get-in db [:communities community-id :previous-permission-addresses]) |
| 248 | + :share-all-addresses? |
| 249 | + (get-in db [:communities community-id :previous-share-all-addresses?])) |
227 | 250 | :fx [[:dispatch [:communities/check-permissions-to-join-community community-id]]]})))
|
228 | 251 |
|
229 | 252 | (rf/reg-event-fx :communities/get-community-channel-share-data
|
|
0 commit comments