bito-code-review[bot] commented on code in PR #39535:
URL: https://github.com/apache/superset/pull/39535#discussion_r3328942350
##########
superset-frontend/packages/superset-ui-core/src/components/ModalTrigger/index.tsx:
##########
@@ -84,7 +90,7 @@ export const ModalTrigger = forwardRef(
setShowModal(true);
};
- if (ref) {
+ if (ref && typeof ref !== 'function') {
ref.current = { close, open, showModal }; // eslint-disable-line
}
Review Comment:
<!-- Bito Reply -->
The suggestion in the PR comment is valid and should be applied. It
addresses the issue of incomplete ref handling by adding support for callback
refs, which aligns with React's forwardRef behavior. The suggested code
correctly checks if the ref is a function and invokes it with the appropriate
values, ensuring compatibility with both object and callback ref patterns.
**superset-frontend/packages/superset-ui-core/src/components/ModalTrigger/index.tsx**
```
if (ref) {
if (typeof ref === 'function') {
ref({ close, open, showModal });
} else {
ref.current = { close, open, showModal }; // eslint-disable-line
}
}
```
##########
superset-frontend/packages/superset-ui-core/src/utils/lruCache.ts:
##########
@@ -55,7 +55,12 @@ class LRUCache<T> {
throw new TypeError('The LRUCache key must be string.');
}
if (this.cache.size >= this.capacity) {
- this.cache.delete(this.cache.keys().next().value);
+ // Forward-compat: TS 6.0 types IteratorResult.value as `string |
undefined`
+ // when not explicitly checked; guard before passing to Map#delete.
+ const oldestKey = this.cache.keys().next().value;
+ if (oldestKey !== undefined) {
+ this.cache.delete(oldestKey);
+ }
Review Comment:
<!-- Bito Reply -->
The suggestion to remove the `if (oldestKey !== undefined)` guard is valid
in the context of runtime safety but invalidates TypeScript's type safety
guarantees. The guard ensures type correctness under strict null checks, even
if the runtime invariant suggests it's redundant. Removing it satisfies runtime
expectations but introduces a type-checking violation. The reviewer's comment
correctly identifies the need to preserve the guard for type safety.
**superset-frontend/packages/superset-ui-core/src/utils/lruCache.ts**
```
this.cache.delete(this.cache.keys().next().value);
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]