Skip to content

Commit ee04e36

Browse files
chore(update): improve (#1186)
Performing an update action (append, prepend, replace, replace-inner) with a delay requires that the behavior element has an id. The `basic-forms` demo was missing an id so was non functional. - Added an error to warn developers of this condition - Fixed the demo by adding an id to the element | Before | Error | After | | -- | -- | -- | | ![before](https://github.com/user-attachments/assets/dfa1fded-0d8d-47a7-846e-def4b7e573fe) | ![error](https://github.com/user-attachments/assets/66e2d97e-64cf-4bae-8c03-02ba9b2700bf) | ![after](https://github.com/user-attachments/assets/c349dacd-ac16-410b-8682-3d1b3e4c02a6) | [Asana](https://app.asana.com/1/47184964732898/project/1204008699308084/task/1210535376481469?focus=true)
1 parent 807c411 commit ee04e36

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

demo/backend/advanced/case-studies/basic-forms/index.xml.njk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ hv_button_behavior: "back"
2222
/>
2323
</view>
2424
<text
25+
id="basic-forms-submit"
2526
action="replace"
2627
delay="500"
2728
href="/hyperview/public/advanced/case-studies/basic-forms/submit.xml"

src/core/components/hv-root/index.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
import React, { PureComponent } from 'react';
2828
import HvRoute from 'hyperview/src/core/components/hv-route';
2929
import { Linking } from 'react-native';
30+
import { XMLSerializer } from '@instawork/xmldom';
3031
import { XNetworkRetryAction } from 'hyperview/src/services/dom/types';
3132

3233
/**
@@ -488,8 +489,19 @@ export default class Hyperview extends PureComponent<Types.Props> {
488489
onUpdateCallbacks.getDoc(),
489490
behaviorElement,
490491
);
492+
491493
if (targetElement) {
492494
Services.setTimeoutId(targetElement, timeoutId.toString());
495+
} else {
496+
// Warn developers if the behavior element is not found
497+
Logging.error(
498+
`Cannot find a behavior element to perform "${action}". It may be missing an id.`,
499+
Logging.deferredToString(() => {
500+
return new XMLSerializer().serializeToString(
501+
behaviorElement as Element,
502+
);
503+
}),
504+
);
493505
}
494506
} else {
495507
// If there's no delay, fetch immediately and update the doc when done.

0 commit comments

Comments
 (0)