import { useStore } from "@/store/store"; import * as FileSystem from "expo-file-system"; import * as MediaLibrary from "expo-media-library"; import * as Linking from "expo-linking"; import { Ionicons } from "@expo/vector-icons"; import { useRouter } from "expo-router"; import { Image, Text, View, TouchableOpacity, Alert } from "react-native"; import { useState } from "react"; import { SafeAreaView, useSafeAreaInsets, } from "react-native-safe-area-context"; export default function WallpaperPage() { const selectedWallpaper = useStore((store) => store.selectedWallpaper); const [isDownloading, setIsDownloading] = useState(false); const router = useRouter(); const safeArea = useSafeAreaInsets(); if (!selectedWallpaper) { return null; } const imageName = selectedWallpaper.display_name; async function downloadWallpaper() { if (!selectedWallpaper) { return; } setIsDownloading(true); try { const permStatus = await MediaLibrary.requestPermissionsAsync(true, [ "photo", ]); if (permStatus.status != MediaLibrary.PermissionStatus.GRANTED) { Alert.alert( "Media library access required", "Doors need access to your media library in order to save wallpapers.", ); return; } const result = await FileSystem.downloadAsync( selectedWallpaper.secure_url, `${FileSystem.documentDirectory}${selectedWallpaper.asset_id}.${selectedWallpaper.format}`, ); await MediaLibrary.createAssetAsync(result.uri); Alert.alert( "Wallpaper saved successfully", "You can change the wallpaper in Settings.", ); } catch { Alert.alert( "Unable to download wallpaper", "Check your internet connection. Otherwise, it's probably our fault.", ); } finally { setIsDownloading(false); } } async function openSourceUrl() { if (selectedWallpaper?.source_url) { Linking.openURL(selectedWallpaper.source_url); } } return ( { router.dismiss(); }} > {Boolean(selectedWallpaper.creator_name) || Boolean(selectedWallpaper.source_url) ? ( {selectedWallpaper.creator_name ? ( {selectedWallpaper.creator_name} {selectedWallpaper.is_ai_generated ? " · AI Generated" : ""} ) : null} {selectedWallpaper.source_url ? ( { openSourceUrl(); }} > {selectedWallpaper.source_url} ) : null} ) : null} { if (!isDownloading) { downloadWallpaper(); } }} > {isDownloading ? "Downloading…" : "Download"} {selectedWallpaper.width}x{selectedWallpaper.height} ); }