In the <a href="https://github.com/functionland/fula/blob/main/apps/box/src/config.ts" target="_blank" rel="noopener noreferrer">Config</a> we should add to support to load <code>config.json</code> in this format:</p><div class="codeBlockContainer_I0IT language-json theme-code-block"><div class="codeBlockContent_wNvx json"><pre tabindex="0" class="prism-code language-json codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token property" style="color:#36acaa">"nodes"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>Which will be used for creating <code>js-libp2p-bootstrap</code> <a href="https://github.com/libp2p/js-libp2p-bootstrap" target="_blank" rel="noopener noreferrer">config</a>.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="fula-client-1">FULA-client<a class="hash-link" href="#fula-client-1" title="Direct link to heading"></a></h3><p>In <a href="https://github.com/functionland/fula/blob/main/libraries/fula-client/src/index.ts" target="_blank" rel="noopener noreferrer">fula-client</a> We have to change pkey to fulaSecret so:</p><div class="codeBlockContainer_I0IT language-ts theme-code-block"><div class="codeBlockContent_wNvx ts"><pre tabindex="0" class="prism-code language-ts codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">createClient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">config</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Partial</span><span class="token operator" style="color:#393A34"><</span><span class="token maybe-class-name">Libp2pOptions</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&</span><span class="token plain"> constructorOptions</span><span class="token operator" style="color:#393A34">></span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> pKey </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword nil" style="color:#00009f">undefined</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token operator" style="color:#393A34"><</span><span class="token maybe-class-name">Fula</span><span class="token operator" style="color:#393A34">></span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>to</p><div class="codeBlockContainer_I0IT language-ts theme-code-block"><div class="codeBlockContent_wNvx ts"><pre tabindex="0" class="prism-code language-ts codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">createClient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">config</span><span class="token operator" style="color:#393A34">?</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">Partial</span><span class="token operator" style="color:#393A34"><</span><span class="token maybe-class-name">Libp2pOptions</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&</span><span class="token plain"> constructorOptions</span><span class="token operator" style="color:#393A34">></span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> fulaSecret </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword nil" style="color:#00009f">undefined</span><span class="token punctuation" style="color:#393A34">)</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token known-class-name class-name">Promise</span><span class="token operator" style="color:#393A34"><</span><span class="token maybe-class-name">Fula</span><span class="token operator" style="color:#393A34">></span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>and change connect interface to get a list of peerId`s from:</p><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">connect: (peerId: string) => Connection</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>to</p><div class="codeBlockContainer_I0IT theme-code-block"><div class="codeBlockContent_wNvx"><pre tabindex="0" class="prism-code language-text codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain"> connect: (peerId: [string]) => Connection</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>We need to change <a href="https://github.com/functionland/fula/blob/main/libraries/fula-client/src/connection.ts" target="_blank" rel="noopener noreferrer"><code>Connection</code></a> in the way that:</p><ul><li>Connection <code>Status</code><ul><li>If we connect to at least one box we are <code>Online</code>.</li><li>When we are not connected to any box and try to connect we are at <code>Connecting</code>.</li><li>When connection fails to all the serverPeerIds we Are <code>Offline</code>.</li></ul></li><li>Connection should have a list of <code>serverPeerId</code>.</li><li>Connect to all the <code>serverPeerId</code> and keep the connection alive.</li></ul><h2 class="anchor anchorWithStickyNavbar_mojV" id="case-study">Case Study<a class="hash-link" href="#case-study" title="Direct link to heading"></a></h2><p>For dogfooding of new changes we can use a copy of <a href="https://github.com/functionland/fula/tree/main/examples/react-gallery" target="_blank" rel="noopener noreferrer">react-gallery</a> and change
0 commit comments