|
73 | 73 | <label class="md-overlay" for="__drawer"></label> |
74 | 74 | <div data-md-component="skip"> |
75 | 75 |
|
76 | | - |
77 | | - <a href="#android" class="md-skip"> |
78 | | - Skip to content |
79 | | - </a> |
80 | | - |
81 | 76 | </div> |
82 | 77 | <div data-md-component="announce"> |
83 | 78 |
|
|
382 | 377 |
|
383 | 378 |
|
384 | 379 |
|
385 | | - <label class="md-nav__link md-nav__link--active" for="__toc"> |
386 | | - |
387 | | - |
388 | | - |
389 | | - <span class="md-ellipsis"> |
390 | | - Brownfield integration |
391 | | - |
392 | | - </span> |
393 | | - |
394 | | - |
395 | | - <span class="md-nav__icon md-icon"></span> |
396 | | - </label> |
397 | | - |
398 | 380 | <a href="./" class="md-nav__link md-nav__link--active"> |
399 | 381 |
|
400 | 382 |
|
|
407 | 389 |
|
408 | 390 | </a> |
409 | 391 |
|
410 | | - |
411 | | - |
412 | | -<nav class="md-nav md-nav--secondary" aria-label="Table of contents"> |
413 | | - |
414 | | - |
415 | | - |
416 | | - |
417 | | - <label class="md-nav__title" for="__toc"> |
418 | | - <span class="md-nav__icon md-icon"></span> |
419 | | - Table of contents |
420 | | - </label> |
421 | | - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
422 | | - |
423 | | - <li class="md-nav__item"> |
424 | | - <a href="#android" class="md-nav__link"> |
425 | | - <span class="md-ellipsis"> |
426 | | - Android |
427 | | - </span> |
428 | | - </a> |
429 | | - |
430 | | -</li> |
431 | | - |
432 | | - <li class="md-nav__item"> |
433 | | - <a href="#ios-macos" class="md-nav__link"> |
434 | | - <span class="md-ellipsis"> |
435 | | - iOS / macOS |
436 | | - </span> |
437 | | - </a> |
438 | | - |
439 | | -</li> |
440 | | - |
441 | | - </ul> |
442 | | - |
443 | | -</nav> |
444 | | - |
445 | 392 | </li> |
446 | 393 |
|
447 | 394 |
|
|
515 | 462 |
|
516 | 463 |
|
517 | 464 |
|
| 465 | + |
| 466 | + |
| 467 | + |
| 468 | + |
| 469 | + |
| 470 | + |
| 471 | + <li class="md-nav__item"> |
| 472 | + <a href="../../integrations/jest/" class="md-nav__link"> |
| 473 | + |
| 474 | + |
| 475 | + |
| 476 | + <span class="md-ellipsis"> |
| 477 | + Jest |
| 478 | + |
| 479 | + </span> |
| 480 | + |
| 481 | + |
| 482 | + </a> |
| 483 | + </li> |
| 484 | + |
| 485 | + |
| 486 | + |
| 487 | + |
| 488 | + |
| 489 | + |
| 490 | + |
| 491 | + |
| 492 | + |
| 493 | + |
| 494 | + <li class="md-nav__item"> |
| 495 | + <a href="../../integrations/brownfield/" class="md-nav__link"> |
| 496 | + |
| 497 | + |
| 498 | + |
| 499 | + <span class="md-ellipsis"> |
| 500 | + Brownfield |
| 501 | + |
| 502 | + </span> |
| 503 | + |
| 504 | + |
| 505 | + </a> |
| 506 | + </li> |
| 507 | + |
| 508 | + |
| 509 | + |
| 510 | + |
518 | 511 | </ul> |
519 | 512 | </nav> |
520 | 513 |
|
|
628 | 621 |
|
629 | 622 |
|
630 | 623 |
|
631 | | - <label class="md-nav__title" for="__toc"> |
632 | | - <span class="md-nav__icon md-icon"></span> |
633 | | - Table of contents |
634 | | - </label> |
635 | | - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> |
636 | | - |
637 | | - <li class="md-nav__item"> |
638 | | - <a href="#android" class="md-nav__link"> |
639 | | - <span class="md-ellipsis"> |
640 | | - Android |
641 | | - </span> |
642 | | - </a> |
643 | | - |
644 | | -</li> |
645 | | - |
646 | | - <li class="md-nav__item"> |
647 | | - <a href="#ios-macos" class="md-nav__link"> |
648 | | - <span class="md-ellipsis"> |
649 | | - iOS / macOS |
650 | | - </span> |
651 | | - </a> |
652 | | - |
653 | | -</li> |
654 | | - |
655 | | - </ul> |
656 | | - |
657 | 624 | </nav> |
658 | 625 | </div> |
659 | 626 | </div> |
|
673 | 640 |
|
674 | 641 | <h1>Brownfield integration</h1> |
675 | 642 |
|
676 | | -<div class="admonition info"> |
677 | | -<p class="admonition-title">Info</p> |
678 | | -<p>Brownfield integration is supported on <strong>Android</strong>, <strong>iOS</strong>, and <strong>macOS</strong>.</p> |
679 | | -</div> |
680 | | -<p><code>AsyncStorage</code> is built on a shared storage layer (<code>SharedStorage</code>) that can also be accessed directly from native |
681 | | -code.<br /> |
682 | | -This is especially useful in brownfield scenarios, where your app combines React Native and native code, allowing both |
683 | | -layers to read from and write to the same storage consistently.</p> |
684 | | -<p>All platforms provide a thread-safe singleton registry called <code>StorageRegistry</code> to manage storage instances.</p> |
685 | | -<h3 id="android">Android<a class="headerlink" href="#android" title="Permanent link">¶</a></h3> |
686 | | -<p>On Android, <code>StorageRegistry</code> is a public singleton, which is used to share <code>SharedStorage</code> instances with the native module. |
687 | | -Multiple calls with the same name return the same singleton instance, ensuring consistent access.</p> |
688 | | -<div class="language-kotlin highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="k">import</span><span class="w"> </span><span class="nn">android.content.Context</span> |
689 | | -</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="k">import</span><span class="w"> </span><span class="nn">kotlinx.coroutines.runBlocking</span> |
690 | | -</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="k">import</span><span class="w"> </span><span class="nn">org.asyncstorage.shared_storage.Entry</span> |
691 | | -</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="k">import</span><span class="w"> </span><span class="nn">org.asyncstorage.shared_storage.SharedStorage</span> |
692 | | -</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="k">import</span><span class="w"> </span><span class="nn">org.asyncstorage.storage.StorageRegistry</span> |
693 | | -</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> |
694 | | -</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="c1">// access shared storage via StorageRegistry</span> |
695 | | -</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="kd">val</span><span class="w"> </span><span class="nv">storage</span><span class="p">:</span><span class="w"> </span><span class="n">SharedStorage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">StorageRegistry</span><span class="p">.</span><span class="na">getStorage</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span><span class="w"> </span><span class="s">"my-users"</span><span class="p">)</span> |
696 | | -</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> |
697 | | -</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a><span class="c1">// runBlocking only for a demonstration</span> |
698 | | -</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="n">runBlocking</span><span class="w"> </span><span class="p">{</span> |
699 | | -</span><span id="__span-0-12"><a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a><span class="w"> </span><span class="n">storage</span><span class="p">.</span><span class="na">setValues</span><span class="p">(</span><span class="n">listOf</span><span class="p">(</span><span class="n">Entry</span><span class="p">(</span><span class="s">"email"</span><span class="p">,</span><span class="w"> </span><span class="s">"john@example.com"</span><span class="p">)))</span> |
700 | | -</span><span id="__span-0-13"><a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a><span class="w"> </span><span class="kd">val</span><span class="w"> </span><span class="nv">values</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">storage</span><span class="p">.</span><span class="na">getValues</span><span class="p">(</span><span class="n">listOf</span><span class="p">(</span><span class="s">"email"</span><span class="p">))</span> |
701 | | -</span><span id="__span-0-14"><a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a><span class="w"> </span><span class="n">println</span><span class="p">(</span><span class="s">"Stored email: </span><span class="si">${</span><span class="n">values</span><span class="p">.</span><span class="na">firstOrNull</span><span class="p">()</span><span class="o">?.</span><span class="na">value</span><span class="si">}</span><span class="s">"</span><span class="p">)</span> |
702 | | -</span><span id="__span-0-15"><a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a><span class="p">}</span> |
703 | | -</span></code></pre></div> |
704 | | -<h3 id="ios-macos">iOS / macOS<a class="headerlink" href="#ios-macos" title="Permanent link">¶</a></h3> |
705 | | -<p>On iOS and macOS, the <code>StorageRegistry</code> singleton provides the same functionality in Swift and Objective-C.</p> |
706 | | -<div class="language-swift highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="kd">import</span><span class="w"> </span><span class="nc">AsyncStorage</span> |
707 | | -</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="kd">import</span><span class="w"> </span><span class="nc">SharedAsyncStorage</span> |
708 | | -</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a> |
709 | | -</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="c1">// access shared storage via StorageRegistry</span> |
710 | | -</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="kd">let</span><span class="w"> </span><span class="nv">storage</span><span class="p">:</span><span class="w"> </span><span class="n">SharedStorage</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">StorageRegistry</span><span class="p">.</span><span class="n">shared</span><span class="p">.</span><span class="n">getStorage</span><span class="p">(</span><span class="n">dbName</span><span class="p">:</span><span class="w"> </span><span class="s">"my-users"</span><span class="p">)</span> |
711 | | -</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> |
712 | | -</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="n">Task</span><span class="w"> </span><span class="p">{</span> |
713 | | -</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="n">storage</span><span class="p">.</span><span class="n">setValues</span><span class="p">([</span><span class="n">Entry</span><span class="p">(</span><span class="n">key</span><span class="p">:</span><span class="w"> </span><span class="s">"email"</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">:</span><span class="w"> </span><span class="s">"john@example.com"</span><span class="p">)])</span> |
714 | | -</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nv">values</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">storage</span><span class="p">.</span><span class="n">getValues</span><span class="p">(</span><span class="n">keys</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s">"email"</span><span class="p">])</span> |
715 | | -</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="bp">print</span><span class="p">(</span><span class="s">"Stored email: </span><span class="si">\(</span><span class="n">values</span><span class="p">.</span><span class="bp">first</span><span class="p">?.</span><span class="n">value</span><span class="w"> </span><span class="p">??</span><span class="w"> </span><span class="s">"none"</span><span class="si">)</span><span class="s">"</span><span class="p">)</span> |
716 | | -</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="p">}</span> |
717 | | -</span></code></pre></div> |
| 643 | +<p>Documentation moved to <a href="../../integrations/brownfield/">integrations/brownfield</a></p> |
718 | 644 |
|
719 | 645 |
|
720 | 646 |
|
|
0 commit comments