|
36 | 36 | []
|
37 | 37 | (rf/dispatch [:syncing/preflight-outbound-check #(reset! preflight-check-passed? %)]))
|
38 | 38 |
|
39 |
| -(defn- f-header |
| 39 | +(defn- header |
40 | 40 | [{:keys [active-tab read-qr-once? title title-opacity subtitle-opacity reset-animations-fn animated?]}]
|
41 | 41 | (let [subtitle-translate-x (reanimated/interpolate subtitle-opacity [0 1] [-13 0])
|
42 | 42 | subtitle-translate-y (reanimated/interpolate subtitle-opacity [0 1] [-85 0])
|
|
110 | 110 | (reset! active-tab id)
|
111 | 111 | (reset! read-qr-once? false))}]]]))
|
112 | 112 |
|
113 |
| -(defn- header |
114 |
| - [props] |
115 |
| - [:f> f-header props]) |
116 |
| - |
117 | 113 | (defn get-labels-and-on-press-method
|
118 | 114 | []
|
119 | 115 | (if @camera-permission-granted?
|
|
169 | 165 | view-finder (assoc layout :height (:width layout))]
|
170 | 166 | (reset! qr-view-finder view-finder)))}])
|
171 | 167 |
|
172 |
| -(defn- border |
173 |
| - [border1 border2 corner] |
174 |
| - [rn/view {:style (style/border border1 border2 corner)}]) |
| 168 | +(defn- white-border |
| 169 | + [corner] |
| 170 | + (let [border-styles (style/white-border corner)] |
| 171 | + [rn/view |
| 172 | + [rn/view {:style (border-styles :border)}] |
| 173 | + [rn/view {:style (border-styles :tip-1)}] |
| 174 | + [rn/view {:style (border-styles :tip-2)}]])) |
175 | 175 |
|
176 |
| -(defn- border-tip |
177 |
| - [{:keys [top bottom left right]}] |
178 |
| - [rn/view |
179 |
| - {:style (style/border-tip top bottom right left)}]) |
| 176 | +(defn- white-square |
| 177 | + [layout-size] |
| 178 | + [rn/view {:style (style/qr-view-finder-container layout-size)} |
| 179 | + [rn/view {:style style/view-finder-border-container} |
| 180 | + [white-border :top-left] |
| 181 | + [white-border :top-right]] |
| 182 | + [rn/view {:style style/view-finder-border-container} |
| 183 | + [white-border :bottom-left] |
| 184 | + [white-border :bottom-right]]]) |
180 | 185 |
|
181 | 186 | (defn- viewfinder
|
182 | 187 | [qr-view-finder]
|
183 |
| - (let [size (+ (:width qr-view-finder) 2)] |
184 |
| - [:<> |
185 |
| - [rn/view {:style (style/viewfinder-container qr-view-finder)} |
186 |
| - [rn/view |
187 |
| - {:style (style/qr-view-finder-container size)} |
188 |
| - [rn/view |
189 |
| - {:style style/view-finder-border-container} |
190 |
| - [rn/view |
191 |
| - [border :border-top-width :border-left-width :border-top-left-radius] |
192 |
| - [border-tip {:right -1 :top 0}] |
193 |
| - [border-tip {:left 0 :bottom -1}]] |
194 |
| - [rn/view |
195 |
| - [border :border-top-width :border-right-width :border-top-right-radius] |
196 |
| - [border-tip {:right 0 :bottom -1}] |
197 |
| - [border-tip {:left -1 :top 0}]]] |
198 |
| - [rn/view {:flex-direction :row :justify-content :space-between} |
199 |
| - [rn/view |
200 |
| - [border :border-bottom-width :border-left-width :border-bottom-left-radius] |
201 |
| - [border-tip {:right -1 :bottom 0}] |
202 |
| - [border-tip {:left 0 :top -1}]] |
203 |
| - [rn/view |
204 |
| - [border :border-bottom-width :border-right-width :border-bottom-right-radius] |
205 |
| - [border-tip {:right 0 :top -1}] |
206 |
| - [border-tip {:left -1 :bottom 0}]]]] |
207 |
| - [quo/text |
208 |
| - {:size :paragraph-2 |
209 |
| - :weight :regular |
210 |
| - :style style/viewfinder-text} |
211 |
| - (i18n/label :t/ensure-qr-code-is-in-focus-to-scan)]]])) |
| 188 | + (let [layout-size (+ (:width qr-view-finder) 2)] |
| 189 | + [rn/view {:style (style/viewfinder-container qr-view-finder)} |
| 190 | + [white-square layout-size] |
| 191 | + [quo/text |
| 192 | + {:size :paragraph-2 |
| 193 | + :weight :regular |
| 194 | + :style style/viewfinder-text} |
| 195 | + (i18n/label :t/ensure-qr-code-is-in-focus-to-scan)]])) |
212 | 196 |
|
213 | 197 | (defn- scan-qr-code-tab
|
214 | 198 | [qr-view-finder]
|
215 |
| - [:<> |
216 |
| - (if (and @preflight-check-passed? |
217 |
| - @camera-permission-granted? |
218 |
| - (boolean (not-empty @qr-view-finder))) |
219 |
| - [viewfinder @qr-view-finder] |
220 |
| - [camera-and-local-network-access-permission-view])]) |
| 199 | + (if (and @preflight-check-passed? |
| 200 | + @camera-permission-granted? |
| 201 | + (boolean (not-empty qr-view-finder))) |
| 202 | + [viewfinder qr-view-finder] |
| 203 | + [camera-and-local-network-access-permission-view])) |
221 | 204 |
|
222 | 205 | (defn- enter-sync-code-tab
|
223 | 206 | []
|
|
273 | 256 | :on-read-code on-read-code}]]
|
274 | 257 | [hole-view/hole-view
|
275 | 258 | {:style style/hole
|
276 |
| - :holes [(merge qr-view-finder |
277 |
| - {:borderRadius 16})]} |
| 259 | + :holes [(assoc qr-view-finder :borderRadius 16)]} |
278 | 260 | [blur/view
|
279 | 261 | {:style style/absolute-fill
|
280 | 262 | :blur-amount 10
|
|
388 | 370 | (when (or (not animated?) @render-camera?)
|
389 | 371 | [render-camera show-camera? torch-mode @qr-view-finder camera-ref on-read-code])
|
390 | 372 | [rn/view {:style (style/root-container (:top insets))}
|
391 |
| - [header |
| 373 | + [:f> header |
392 | 374 | {:active-tab active-tab
|
393 | 375 | :read-qr-once? read-qr-once?
|
394 | 376 | :title title
|
|
406 | 388 | :transform [{:translate-y content-translate-y}]}
|
407 | 389 | {})}
|
408 | 390 | (case @active-tab
|
409 |
| - 1 [scan-qr-code-tab qr-view-finder] |
| 391 | + 1 [scan-qr-code-tab @qr-view-finder] |
410 | 392 | 2 [enter-sync-code-tab]
|
411 | 393 | nil)]
|
412 | 394 | [rn/view {:style style/flex-spacer}]
|
|
0 commit comments