mirror of
https://github.com/pezkuwichain/pwap.git
synced 2026-04-22 21:47:56 +00:00
4a3694c831
- Replaced shadowColor/shadowOffset/shadowOpacity/shadowRadius with boxShadow - Fixed 28 files (21 screens + 7 components) - Preserved elevation for Android compatibility - All React Native Web deprecation warnings resolved Files fixed: - All screen components - All reusable components - Navigation components - Modal components
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { toast } from 'sonner';
|
|
|
|
// Helper to get environment variables that works in both web (Vite) and React Native (Expo)
|
|
const getEnv = (key: string): string | undefined => {
|
|
// Check for Vite environment (web)
|
|
if (typeof import.meta !== 'undefined' && import.meta.env) {
|
|
return (import.meta.env as any)[key];
|
|
}
|
|
// Check for Expo environment (React Native)
|
|
if (typeof process !== 'undefined' && process.env) {
|
|
const expoKey = key.replace('VITE_', 'EXPO_PUBLIC_');
|
|
return process.env[expoKey] || process.env[key];
|
|
}
|
|
return undefined;
|
|
};
|
|
|
|
const PINATA_JWT = getEnv('VITE_PINATA_JWT');
|
|
const PINATA_API = 'https://api.pinata.cloud/pinning/pinFileToIPFS';
|
|
|
|
export async function uploadToIPFS(file: File): Promise<string> {
|
|
if (!PINATA_JWT || PINATA_JWT === 'your_pinata_jwt_here') {
|
|
throw new Error('Pinata JWT not configured. Set VITE_PINATA_JWT in .env');
|
|
}
|
|
|
|
const formData = new FormData();
|
|
formData.append('file', file);
|
|
|
|
try {
|
|
const response = await fetch(PINATA_API, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Authorization': `Bearer ${PINATA_JWT}`,
|
|
},
|
|
body: formData,
|
|
});
|
|
|
|
if (!response.ok) {
|
|
const errorData = await response.json().catch(() => ({}));
|
|
throw new Error(errorData.error || `Upload failed: ${response.statusText}`);
|
|
}
|
|
|
|
const data = await response.json();
|
|
return data.IpfsHash; // Returns: Qm...
|
|
} catch (error) {
|
|
console.error('IPFS upload error:', error);
|
|
toast.error('Failed to upload to IPFS');
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
export function getIPFSUrl(hash: string): string {
|
|
return `https://gateway.pinata.cloud/ipfs/${hash}`;
|
|
}
|