Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 7 additions & 28 deletions app/components/UI/Perps/Views/PerpsTabView/index.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import React, { useEffect, useState } from 'react';
import { NavigationProp, ParamListBase } from '@react-navigation/native';
import React from 'react';
import { PerpsConnectionProvider } from '../../providers/PerpsConnectionProvider';
import { PerpsStreamProvider } from '../../providers/PerpsStreamManager';
import { DevLogger } from '../../../../../core/SDKConnect/utils/DevLogger';
import PerpsTabView from './PerpsTabView';
import PerpsStreamBridge from '../../components/PerpsStreamBridge';
import { useSelector } from 'react-redux';
Expand All @@ -13,10 +11,7 @@ import { strings } from '../../../../../../locales/i18n';
import { IconName } from '@metamask/design-system-react-native';

interface PerpsTabViewWithProviderProps {
navigation?: NavigationProp<ParamListBase>;
tabLabel?: string;
isVisible?: boolean;
onVisibilityChange?: (callback: (visible: boolean) => void) => void;
}

const styles = StyleSheet.create({
Expand All @@ -26,32 +21,16 @@ const styles = StyleSheet.create({
});

/**
* PerpsTabView wrapped with both PerpsConnectionProvider and PerpsStreamProvider
* This ensures the usePerpsConnection and usePerpsStream hooks work properly when used in the main wallet tab view
* Visibility is managed internally with updates from parent via callback
* PerpsTabView wrapped with PerpsConnectionProvider (context only) and PerpsStreamProvider.
* Connection lifecycle is managed by the top-level PerpsAlwaysOnProvider.
*/
const PerpsTabViewWithProvider: React.FC<PerpsTabViewWithProviderProps> = (
props,
) => {
const { isVisible: initialVisible = false, onVisibilityChange } = props;
const [isVisible, setIsVisible] = useState(initialVisible);
const PerpsTabViewWithProvider: React.FC<
PerpsTabViewWithProviderProps
> = () => {
const isBasicFunctionalityEnabled = useSelector(
selectBasicFunctionalityEnabled,
);

// Register callback with parent
useEffect(() => {
if (onVisibilityChange) {
onVisibilityChange((visible: boolean) => {
DevLogger.log('PerpsTabView: Visibility updated via callback', {
visible,
timestamp: new Date().toISOString(),
});
setIsVisible(visible);
});
}
}, [onVisibilityChange]);

if (!isBasicFunctionalityEnabled) {
return (
<View style={styles.container}>
Expand All @@ -64,7 +43,7 @@ const PerpsTabViewWithProvider: React.FC<PerpsTabViewWithProviderProps> = (
}

return (
<PerpsConnectionProvider isVisible={isVisible}>
<PerpsConnectionProvider>
<PerpsStreamProvider>
<PerpsStreamBridge />
<PerpsTabView />
Expand Down
1 change: 0 additions & 1 deletion app/components/UI/Perps/hooks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ export { usePerpsSorting } from './usePerpsSorting';
export { usePerpsNavigation } from './usePerpsNavigation';

// Connection management hooks
export { usePerpsConnectionLifecycle } from './usePerpsConnectionLifecycle';
export { usePerpsConnection } from './usePerpsConnection';
export { useWebSocketHealthToast } from './useWebSocketHealthToast';

Expand Down
Loading
Loading