Merge branch 'force_lerna_deploy' into 'development'

Add note about infinite loop

See merge request GeneralProtocols/xo/stack!36
This commit is contained in:
Jim Hamill
2025-03-10 09:30:06 +00:00
4 changed files with 14 additions and 8 deletions
+8 -8
View File
@@ -27,7 +27,7 @@ TODO: When we have docs public, move this back into the top config section above
<div class="promo-text">
<h1>Create robust scalable <span class="clip">Bitcoin Cash</span> apps, faster than ever before.</h1>
<p>XO provides cutting-edge tools to help developers create Bitcoin Cash apps with ease and efficiency. With a focus on scalability, security, and speed, you can bring your app to life in no time.</p>
<p>Start building now and unlock the full potential of Bitcoin Cash in the digital economy!</p>
<p><!--Start building now and-->Unlock the full potential of Bitcoin Cash in the digital economy!</p>
</div>
<div class="promo-image">
<!-- Animated X and O elements behind the image section -->
@@ -49,10 +49,10 @@ TODO: When we have docs public, move this back into the top config section above
<div class="item grid-3">
<div class="VPLink no-icon VPFeature feature-box-or">
<article class="box">
<img class="VPImage dark-only" height="48" width="48" src="/icons/api-dark.svg" alt="">
<img class="VPImage light-only" height="48" width="48" src="/icons/api-light.svg" alt="">
<h2 class="title">API</h2>
<p class="details">Access powerful APIs to build smart apps on the BCH UTXO Network.</p>
<img class="VPImage dark-only" height="48" width="48" src="/icons/template-dark.svg" alt="">
<img class="VPImage light-only" height="48" width="48" src="/icons/template-light.svg" alt="">
<h2 class="title">Templates</h2>
<p class="details">Easily build decentralized applications using a secure and standardized templating language.</p>
<!--v-if-->
</article>
</div>
@@ -62,8 +62,8 @@ TODO: When we have docs public, move this back into the top config section above
<article class="box">
<img class="VPImage dark-only" height="48" width="48" src="/icons/framework-dark.svg" alt="">
<img class="VPImage light-only" height="48" width="48" src="/icons/framework-light.svg" alt="">
<h2 class="title">Framework</h2>
<p class="details">A solid framework for building scalable applications.</p>
<h2 class="title">Modular</h2>
<p class="details">Adapt and scale your applications effortlessly with flexible adapters tailored to your needs.</p>
<!--v-if-->
</article>
</div>
@@ -74,7 +74,7 @@ TODO: When we have docs public, move this back into the top config section above
<img class="VPImage dark-only" height="48" width="48" src="/icons/tools-dark.svg" alt="">
<img class="VPImage light-only" height="48" width="48" src="/icons/tools-light.svg" alt="">
<h2 class="title">Tools</h2>
<p class="details">Essential tools to streamline development and deployment.</p>
<p class="details">Enhance your workflow with powerful tools designed to simplify development and testing.</p>
<!--v-if-->
</article>
</div>
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.6 KiB

@@ -53,12 +53,16 @@ export class StoreComposite extends BaseStore {
for (const remoteStore of this.remoteStores) {
remoteStore.on('set', async (payload) => {
// Skip if the local store already has the key
// NOTE: It's important we DO NOT repropagate events that have already occurred.
// If we do, we can end up in infinite loops.
if (await this.localStore.has(payload.key)) return;
await this.localStore.set(payload.key, payload.value);
});
remoteStore.on('delete', async (payload) => {
// NOTE: It's important we DO NOT repropagate events that have already occurred.
// If we do, we can end up in infinite loops.
if (await this.localStore.has(payload.key)) {
await this.localStore.delete(payload.key);
}