feat(mobile): Enable shared/lib imports via symlink for production blockchain integration

- Create symlink mobile/shared -> ../shared for Metro bundler access
- Update all @pezkuwi/lib/* imports to use relative paths (../../shared/lib/*)
- Dashboard Roles card now fetches real tiki data from blockchain
- Staking screen uses production getStakingInfo and getAllScores
- All citizenship, referral, and NFT screens use real blockchain queries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-15 07:38:33 +03:00
parent 453c526ef5
commit ddcc09a593
8 changed files with 13 additions and 12 deletions
+1
View File
@@ -0,0 +1 @@
../shared
+2 -2
View File
@@ -18,8 +18,8 @@ import {
submitKycApplication,
uploadToIPFS,
FOUNDER_ADDRESS,
} from '@pezkuwi/lib/citizenship-workflow';
import type { Region, MaritalStatus } from '@pezkuwi/lib/citizenship-workflow';
} from '../../shared/lib/citizenship-workflow';
import type { Region, MaritalStatus } from '../../shared/lib/citizenship-workflow';
import { KurdistanColors } from '../theme/colors';
// Temporary custom picker component (until we fix @react-native-picker/picker installation)
+1 -1
View File
@@ -12,7 +12,7 @@ import {
} from 'react-native';
import { useNavigation } from '@react-navigation/native';
import { usePezkuwi } from '../contexts/PezkuwiContext';
import { getCitizenshipStatus } from '@pezkuwi/lib/citizenship-workflow';
import { getCitizenshipStatus } from '../../shared/lib/citizenship-workflow';
import { KurdistanColors } from '../theme/colors';
const BeCitizenClaimScreen: React.FC = () => {
+1 -1
View File
@@ -17,7 +17,7 @@ import {
submitKycApplication,
uploadToIPFS,
getCitizenshipStatus,
} from '@pezkuwi/lib/citizenship-workflow';
} from '../../shared/lib/citizenship-workflow';
import { KurdistanColors } from '../theme/colors';
const BeCitizenScreen: React.FC = () => {
+3 -3
View File
@@ -23,9 +23,9 @@ import { useAuth } from '../contexts/AuthContext';
import { usePezkuwi } from '../contexts/PezkuwiContext';
import { supabase } from '../lib/supabase';
import AvatarPickerModal from '../components/AvatarPickerModal';
import { fetchUserTikis, getPrimaryRole, getTikiDisplayName, getTikiEmoji, getTikiColor } from '@pezkuwi/lib/tiki';
import { getAllScores, type UserScores } from '@pezkuwi/lib/scores';
import { getKycStatus } from '@pezkuwi/lib/kyc';
import { fetchUserTikis, getPrimaryRole, getTikiDisplayName, getTikiEmoji, getTikiColor } from '../../shared/lib/tiki';
import { getAllScores, type UserScores } from '../../shared/lib/scores';
import { getKycStatus } from '../../shared/lib/kyc';
// Existing Quick Action Images (Reused)
import qaEducation from '../../../shared/images/quick-actions/qa_education.png';
+1 -1
View File
@@ -17,7 +17,7 @@ import {
Badge,
CardSkeleton,
} from '../components';
import { fetchUserTikis, getTikiDisplayName, getTikiEmoji } from '@pezkuwi/lib/tiki';
import { fetchUserTikis, getTikiDisplayName, getTikiEmoji } from '../../shared/lib/tiki';
const { width } = Dimensions.get('window');
const NFT_SIZE = (width - 48) / 2; // 2 columns with padding
+1 -1
View File
@@ -20,7 +20,7 @@ import {
getMyReferrals,
calculateReferralScore,
type ReferralStats as BlockchainReferralStats,
} from '@pezkuwi/lib/referral';
} from '../../shared/lib/referral';
interface ReferralStats {
totalReferrals: number;
+3 -3
View File
@@ -18,9 +18,9 @@ import {
ValidatorSelectionSheet,
CardSkeleton,
} from '../components';
import { getStakingInfo } from '@pezkuwi/lib/staking';
import { getAllScores } from '@pezkuwi/lib/scores';
import { formatBalance } from '@pezkuwi/lib/wallet';
import { getStakingInfo } from '../../shared/lib/staking';
import { getAllScores } from '../../shared/lib/scores';
import { formatBalance } from '../../shared/lib/wallet';
// Helper types derived from shared lib
interface StakingScreenData {