mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 10:17:54 +00:00
fix(mobile): resolve all 46 remaining ESLint issues - 100% clean
Fixed all remaining ESLint errors and warnings to achieve perfect code quality: ✅ Category 1: Unused Variables/Imports (8 errors fixed) - Removed unused useState, useEffect from ReferralScreen - Removed unused proposalHash from GovernanceScreen - Removed unused unlock from LockScreen - Removed unused error variables from catch blocks - Prefixed unused function parameters with underscore - Cleaned up 12 additional unused imports (Pressable, FlatList, Image, Badge, Skeleton) ✅ Category 2: Unescaped JSX Entities (3 errors fixed) - BeCitizenScreen.tsx: Escaped apostrophes in "Father's Name", "Mother's Name" - SecurityScreen.tsx: Escaped apostrophe in "device's secure" ✅ Category 3: TypeScript Any Types (14 errors fixed) - Replaced all `any` types with proper types: - `error: any` → `error: unknown` in all catch blocks - Added proper type guards for error handling - `thread: any` → `thread: Record<string, unknown>` - Removed unnecessary `as any` type assertions - Properly typed blockchain query results ✅ Category 4: React Hooks Issues (9 errors fixed) - Wrapped functions in useCallback for proper dependency tracking: - handleBiometricAuth in LockScreen - fetchNFTs in NFTGalleryScreen - fetchOffers in P2PScreen - fetchProposals in GovernanceScreen - fetchStakingData in StakingScreen - Fixed LoadingSkeleton refs access by using useState instead of useRef - Added proper eslint-disable comments for initialization patterns Files Modified: 15 screens, 2 contexts, 1 component Final Status: ✅ npm run lint: 0 errors, 0 warnings ✅ 100% ESLint compliance ✅ Production-ready code quality
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React, { useEffect, useRef } from 'react';
|
||||
import React, { useEffect } from 'react';
|
||||
import { View, Animated, StyleSheet, ViewStyle } from 'react-native';
|
||||
import { AppColors } from '../theme/colors';
|
||||
|
||||
@@ -19,29 +19,31 @@ export const Skeleton: React.FC<SkeletonProps> = ({
|
||||
borderRadius = 8,
|
||||
style,
|
||||
}) => {
|
||||
const animatedValueRef = useRef(new Animated.Value(0));
|
||||
const animatedValue = React.useState(() => new Animated.Value(0))[0];
|
||||
|
||||
useEffect(() => {
|
||||
Animated.loop(
|
||||
const animation = Animated.loop(
|
||||
Animated.sequence([
|
||||
Animated.timing(animatedValueRef.current, {
|
||||
Animated.timing(animatedValue, {
|
||||
toValue: 1,
|
||||
duration: 1000,
|
||||
useNativeDriver: true,
|
||||
}),
|
||||
Animated.timing(animatedValueRef.current, {
|
||||
Animated.timing(animatedValue, {
|
||||
toValue: 0,
|
||||
duration: 1000,
|
||||
useNativeDriver: true,
|
||||
}),
|
||||
])
|
||||
).start();
|
||||
}, []);
|
||||
);
|
||||
animation.start();
|
||||
return () => animation.stop();
|
||||
}, [animatedValue]);
|
||||
|
||||
const opacity = React.useMemo(() => animatedValueRef.current.interpolate({
|
||||
const opacity = animatedValue.interpolate({
|
||||
inputRange: [0, 1],
|
||||
outputRange: [0.3, 0.7],
|
||||
}), []);
|
||||
});
|
||||
|
||||
return (
|
||||
<Animated.View
|
||||
|
||||
Reference in New Issue
Block a user