From 061df71a74f3bf4cfc81e3a0cea0a0781ca01633 Mon Sep 17 00:00:00 2001 From: Lenin Chavez <102402199+Hyp3Boy@users.noreply.github.com> Date: Wed, 30 Oct 2024 22:43:07 -0500 Subject: [PATCH] feat: add api connection --- api/complaints.ts | 69 +- app.json | 18 +- app/(tabs)/complaint/[id].tsx | 153 +- components/map/ComplaintMap.tsx | 85 +- components/map/ComplaintSkeleton.tsx | 26 +- components/map/RecentComplaints.tsx | 146 +- ios/.gitignore | 30 + ios/.xcode.env | 11 + ios/Podfile | 79 + ios/Podfile.lock | 1578 +++++++++++++++++ ios/Podfile.properties.json | 4 + ios/mayllufrontend.xcodeproj/project.pbxproj | 537 ++++++ .../xcschemes/mayllufrontend.xcscheme | 88 + .../contents.xcworkspacedata | 10 + ios/mayllufrontend/AppDelegate.h | 7 + ios/mayllufrontend/AppDelegate.mm | 62 + .../App-Icon-1024x1024@1x.png | Bin 0 -> 42472 bytes .../AppIcon.appiconset/Contents.json | 14 + .../Images.xcassets/Contents.json | 6 + .../SplashScreen.imageset/Contents.json | 21 + .../SplashScreen.imageset/image.png | Bin 0 -> 66107 bytes .../Contents.json | 21 + .../SplashScreenBackground.imageset/image.png | Bin 0 -> 68 bytes ios/mayllufrontend/Info.plist | 87 + ios/mayllufrontend/PrivacyInfo.xcprivacy | 48 + ios/mayllufrontend/SplashScreen.storyboard | 51 + ios/mayllufrontend/Supporting/Expo.plist | 12 + ios/mayllufrontend/main.m | 10 + .../mayllufrontend-Bridging-Header.h | 3 + .../mayllufrontend.entitlements | 5 + ios/mayllufrontend/noop-file.swift | 4 + package.json | 4 +- pages/HomePage.tsx | 22 +- types/ComplaintPoint.ts | 36 +- types/index.ts | 4 +- 35 files changed, 2976 insertions(+), 275 deletions(-) create mode 100644 ios/.gitignore create mode 100644 ios/.xcode.env create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock create mode 100644 ios/Podfile.properties.json create mode 100644 ios/mayllufrontend.xcodeproj/project.pbxproj create mode 100644 ios/mayllufrontend.xcodeproj/xcshareddata/xcschemes/mayllufrontend.xcscheme create mode 100644 ios/mayllufrontend.xcworkspace/contents.xcworkspacedata create mode 100644 ios/mayllufrontend/AppDelegate.h create mode 100644 ios/mayllufrontend/AppDelegate.mm create mode 100644 ios/mayllufrontend/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png create mode 100644 ios/mayllufrontend/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/mayllufrontend/Images.xcassets/Contents.json create mode 100644 ios/mayllufrontend/Images.xcassets/SplashScreen.imageset/Contents.json create mode 100644 ios/mayllufrontend/Images.xcassets/SplashScreen.imageset/image.png create mode 100644 ios/mayllufrontend/Images.xcassets/SplashScreenBackground.imageset/Contents.json create mode 100644 ios/mayllufrontend/Images.xcassets/SplashScreenBackground.imageset/image.png create mode 100644 ios/mayllufrontend/Info.plist create mode 100644 ios/mayllufrontend/PrivacyInfo.xcprivacy create mode 100644 ios/mayllufrontend/SplashScreen.storyboard create mode 100644 ios/mayllufrontend/Supporting/Expo.plist create mode 100644 ios/mayllufrontend/main.m create mode 100644 ios/mayllufrontend/mayllufrontend-Bridging-Header.h create mode 100644 ios/mayllufrontend/mayllufrontend.entitlements create mode 100644 ios/mayllufrontend/noop-file.swift diff --git a/api/complaints.ts b/api/complaints.ts index 3e51029..a064776 100644 --- a/api/complaints.ts +++ b/api/complaints.ts @@ -1,62 +1,15 @@ import { ComplaintPointInterface } from "@/types"; -const mockComplaints: ComplaintPointInterface[] = [ - { - userId: "72671060", - title: "Pista en mal estado - UTEC", - image: "https://i.ibb.co/Lt3t7Gb/pic1.jpg", - description: "Baches profundos frente a UTEC que dificultan el tránsito", - latitude: "-12.093938", - longitude: "-77.026048", - categoryId: 1, - districtId: 1 - }, - { - userId: "72671061", - image: "https://i.ibb.co/Lt3t7Gb/pic1.jpg", - title: "Semáforo malogrado - Javier Prado", - description: "Semáforo sin funcionar en cruce peligroso", - latitude: "-12.091213", - longitude: "-77.022510", - categoryId: 2, - districtId: 2 - }, - { - userId: "72671062", - image: "https://i.ibb.co/Lt3t7Gb/pic1.jpg", - title: "Obras inconclusas - Miraflores", - description: "Obra abandonada hace más de un mes, genera congestión", - latitude: "-12.119896", - longitude: "-77.030219", - categoryId: 1, - districtId: 3 - }, - { - userId: "72671063", - image: "https://i.ibb.co/Lt3t7Gb/pic1.jpg", - title: "Falta señalización - San Isidro", - description: "No hay señales de tránsito en intersección peligrosa", - latitude: "-12.092882", - longitude: "-77.027951", - categoryId: 3, - districtId: 4 - }, - { - userId: "72671064", - title: "Congestión vehicular - La Victoria", - image: "https://i.ibb.co/Lt3t7Gb/pic1.jpg", - description: "Paradero informal genera caos vehicular", - latitude: "-12.088942", - longitude: "-77.027453", - categoryId: 4, - districtId: 5 +export const fetchComplaints = async (): Promise => { + try { + const response = await fetch("http://localhost:5555/api/complaints"); + if (!response.ok) { + throw new Error(`Error en la solicitud: ${response.statusText}`); + } + const data = await response.json(); + return data as ComplaintPointInterface[]; + } catch (error) { + console.error("Error al obtener las quejas:", error); + return []; } -]; - -export const fetchComplaints = async () => { - return new Promise((resolve) => { - setTimeout(() => { - resolve(mockComplaints); - }, 800); - }); }; diff --git a/app.json b/app.json index 6f24a55..93d77d7 100644 --- a/app.json +++ b/app.json @@ -14,20 +14,28 @@ "backgroundColor": "#FFFFFF" }, "ios": { - "supportsTablet": true + "supportsTablet": true, + "bundleIdentifier": "mayllu-frontend" }, "android": { "adaptiveIcon": { "foregroundImage": "./assets/splash_mayllu.png", - "backgroundColor": "#ffffff", - } + "backgroundColor": "#ffffff" + }, + "permissions": [ + "android.permission.ACCESS_COARSE_LOCATION", + "android.permission.ACCESS_FINE_LOCATION", + "android.permission.ACCESS_BACKGROUND_LOCATION", + "android.permission.FOREGROUND_SERVICE", + "android.permission.FOREGROUND_SERVICE_LOCATION" + ] }, "web": { - "favicon": "./assets/logo_mayllu.png", + "favicon": "./assets/logo_mayllu.png" }, "experiments": { "tsConfigPaths": true, - "typedRoutes": true, + "typedRoutes": true }, "plugins": [ "expo-router", diff --git a/app/(tabs)/complaint/[id].tsx b/app/(tabs)/complaint/[id].tsx index 296e7c1..98b7b7e 100644 --- a/app/(tabs)/complaint/[id].tsx +++ b/app/(tabs)/complaint/[id].tsx @@ -1,33 +1,35 @@ // app/(tabs)/complaint/[id].tsx -import React, { useEffect, useState } from 'react'; -import { - View, - Text, - StyleSheet, - Image, - TouchableOpacity, - StatusBar, +import React, { useEffect, useState } from "react"; +import { + View, + Text, + StyleSheet, + Image, + TouchableOpacity, + StatusBar, Dimensions, - ScrollView -} from 'react-native'; -import { useLocalSearchParams, Stack, router } from 'expo-router'; -import { Ionicons } from '@expo/vector-icons'; -import { LinearGradient } from 'expo-linear-gradient'; -import Animated, { FadeIn } from 'react-native-reanimated'; -import { fetchComplaints } from '@/api/complaints'; -import { ComplaintPointInterface } from '@/types'; + ScrollView, +} from "react-native"; +import { useLocalSearchParams, Stack, router } from "expo-router"; +import { Ionicons } from "@expo/vector-icons"; +import { LinearGradient } from "expo-linear-gradient"; +import Animated, { FadeIn } from "react-native-reanimated"; +import { fetchComplaints } from "@/api/complaints"; +import { ComplaintPointInterface } from "@/types"; -const { width, height } = Dimensions.get('window'); +const { width, height } = Dimensions.get("window"); const ComplaintDetailPage = () => { const { id } = useLocalSearchParams(); - const [complaint, setComplaint] = useState(null); + const [complaint, setComplaint] = useState( + null + ); const [loading, setLoading] = useState(true); useEffect(() => { const loadComplaint = async () => { const complaints = await fetchComplaints(); - const found = complaints.find(c => c.userId === id); + const found = complaints.find((c) => c.id.toString() === id); setComplaint(found || null); setLoading(false); }; @@ -44,19 +46,23 @@ const ComplaintDetailPage = () => { return ( - + {/* Imagen de fondo */} - {/* Header sin blur */} - router.back()} > @@ -66,25 +72,25 @@ const ComplaintDetailPage = () => { {/* Gradiente superior */} - {/* Contenedor principal con blur y gradiente */} - Infraestructura @@ -98,17 +104,18 @@ const ComplaintDetailPage = () => { {/* Card de contenido */} - + Descripción {complaint.description} {/* Acciones */} - + Compartir @@ -129,46 +136,46 @@ const ComplaintDetailPage = () => { const styles = StyleSheet.create({ container: { flex: 1, - backgroundColor: '#000', + backgroundColor: "#000", }, loadingContainer: { flex: 1, - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#000', + justifyContent: "center", + alignItems: "center", + backgroundColor: "#000", }, loadingText: { - color: '#FFF', + color: "#FFF", fontSize: 16, }, backgroundImage: { - position: 'absolute', + position: "absolute", width, height: height * 0.6, top: 0, }, header: { - position: 'absolute', + position: "absolute", top: 0, left: 0, right: 0, height: 100, paddingTop: StatusBar.currentHeight, zIndex: 2, - flexDirection: 'row', - alignItems: 'center', + flexDirection: "row", + alignItems: "center", paddingHorizontal: 16, }, backButton: { width: 40, height: 40, borderRadius: 20, - alignItems: 'center', - justifyContent: 'center', - backgroundColor: 'rgba(0,0,0,0.3)', + alignItems: "center", + justifyContent: "center", + backgroundColor: "rgba(0,0,0,0.3)", }, topGradient: { - position: 'absolute', + position: "absolute", top: 0, left: 0, right: 0, @@ -187,79 +194,79 @@ const styles = StyleSheet.create({ paddingTop: 20, }, categoryBadge: { - flexDirection: 'row', - alignItems: 'center', - backgroundColor: 'rgba(255,255,255,0.2)', - alignSelf: 'flex-start', + flexDirection: "row", + alignItems: "center", + backgroundColor: "rgba(255,255,255,0.2)", + alignSelf: "flex-start", paddingHorizontal: 12, paddingVertical: 6, borderRadius: 20, marginBottom: 12, }, categoryText: { - color: '#FFF', + color: "#FFF", marginLeft: 6, fontSize: 14, - fontFamily: 'PlusJS_SemiBold', + fontFamily: "PlusJS_SemiBold", }, title: { fontSize: 24, - color: '#FFF', - fontFamily: 'PlusJS_Bold', + color: "#FFF", + fontFamily: "PlusJS_Bold", marginBottom: 8, }, locationContainer: { - flexDirection: 'row', - alignItems: 'center', + flexDirection: "row", + alignItems: "center", }, locationText: { - color: '#FFF', + color: "#FFF", marginLeft: 6, fontSize: 14, - fontFamily: 'PlusJS_Regular', + fontFamily: "PlusJS_Regular", opacity: 0.9, }, detailsCard: { - backgroundColor: '#FFF', + backgroundColor: "#FFF", padding: 20, paddingTop: 32, minHeight: height * 0.5, }, descriptionTitle: { fontSize: 18, - color: '#000', - fontFamily: 'PlusJS_SemiBold', + color: "#000", + fontFamily: "PlusJS_SemiBold", marginBottom: 12, }, description: { fontSize: 16, - color: '#666', + color: "#666", lineHeight: 24, - fontFamily: 'PlusJS_Regular', + fontFamily: "PlusJS_Regular", }, actions: { - flexDirection: 'row', + flexDirection: "row", marginTop: 32, paddingTop: 20, borderTopWidth: 1, - borderTopColor: '#f0f0f0', + borderTopColor: "#f0f0f0", }, actionButton: { flex: 1, - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', + flexDirection: "row", + alignItems: "center", + justifyContent: "center", paddingVertical: 12, }, actionText: { marginLeft: 8, fontSize: 15, - color: '#666', - fontFamily: 'PlusJS_Regular', + color: "#666", + fontFamily: "PlusJS_Regular", }, actionDivider: { width: 1, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", }, }); diff --git a/components/map/ComplaintMap.tsx b/components/map/ComplaintMap.tsx index 276321b..e3030b3 100644 --- a/components/map/ComplaintMap.tsx +++ b/components/map/ComplaintMap.tsx @@ -1,42 +1,45 @@ -import * as Location from 'expo-location'; -import React, { useRef, useEffect } from 'react'; -import MapView, { PROVIDER_GOOGLE, Marker } from 'react-native-maps'; -import { Platform, StyleSheet, View } from 'react-native'; -import { ComplaintPointInterface } from '@/types'; -import { Ionicons } from '@expo/vector-icons'; -import { router } from 'expo-router'; -import { customMapStyle } from '@/utils'; +import * as Location from "expo-location"; +import React, { useRef, useEffect } from "react"; +import MapView, { PROVIDER_GOOGLE, Marker } from "react-native-maps"; +import { Platform, StyleSheet, View } from "react-native"; +import { ComplaintPointInterface } from "@/types"; +import { Ionicons } from "@expo/vector-icons"; +import { router } from "expo-router"; +import { customMapStyle } from "@/utils"; interface ComplaintMapInterfaceProps { origin: Location.LocationObject | null; complaints: ComplaintPointInterface[]; } -export const ComplaintMap: React.FC = ({ - origin, - complaints +export const ComplaintMap: React.FC = ({ + origin, + complaints, }) => { const mapRef = useRef(null); useEffect(() => { if (origin && mapRef.current) { - mapRef.current.animateToRegion({ - latitude: origin.coords.latitude, - longitude: origin.coords.longitude, - latitudeDelta: 0.010, // Mucho más zoom - longitudeDelta: 0.010, - }, 1000); + mapRef.current.animateToRegion( + { + latitude: origin.coords.latitude, + longitude: origin.coords.longitude, + latitudeDelta: 0.01, // Mucho más zoom + longitudeDelta: 0.01, + }, + 1000 + ); } }, [origin]); return ( - = ({ router.push({ - pathname: "/complaint/[id]", - params: { id: complaint.userId } - })} + onPress={() => + router.push({ + pathname: "/complaint/[id]", + params: { id: complaint.id.toString() }, + }) + } > @@ -76,25 +81,25 @@ export const ComplaintMap: React.FC = ({ const styles = StyleSheet.create({ container: { - height: '40%', // Reducimos altura para dejar espacio a las publicaciones + height: "40%", // Reducimos altura para dejar espacio a las publicaciones }, map: { - width: '100%', - height: '100%', + width: "100%", + height: "100%", }, markerContainer: { - alignItems: 'center', + alignItems: "center", }, markerIcon: { width: 36, height: 36, borderRadius: 18, - backgroundColor: '#FF4B4B', + backgroundColor: "#FF4B4B", borderWidth: 2, - borderColor: '#FFFFFF', - alignItems: 'center', - justifyContent: 'center', - shadowColor: '#000', + borderColor: "#FFFFFF", + alignItems: "center", + justifyContent: "center", + shadowColor: "#000", shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.25, shadowRadius: 3.84, @@ -103,14 +108,14 @@ const styles = StyleSheet.create({ markerTriangle: { width: 0, height: 0, - backgroundColor: 'transparent', - borderStyle: 'solid', + backgroundColor: "transparent", + borderStyle: "solid", borderLeftWidth: 8, borderRightWidth: 8, borderTopWidth: 12, - borderLeftColor: 'transparent', - borderRightColor: 'transparent', - borderTopColor: '#FF4B4B', + borderLeftColor: "transparent", + borderRightColor: "transparent", + borderTopColor: "#FF4B4B", marginTop: -2, - } + }, }); diff --git a/components/map/ComplaintSkeleton.tsx b/components/map/ComplaintSkeleton.tsx index cc68533..d9aa3cd 100644 --- a/components/map/ComplaintSkeleton.tsx +++ b/components/map/ComplaintSkeleton.tsx @@ -1,9 +1,9 @@ -import React from 'react'; -import { View, StyleSheet, Dimensions } from 'react-native'; +import React from "react"; +import { View, StyleSheet, Dimensions } from "react-native"; -const { width } = Dimensions.get('window'); +const { width } = Dimensions.get("window"); const CARD_PADDING = 12; -const CARD_WIDTH = width - (CARD_PADDING * 2); +const CARD_WIDTH = width - CARD_PADDING * 2; export const ComplaintSkeleton = () => ( @@ -19,38 +19,38 @@ export const ComplaintSkeleton = () => ( const styles = StyleSheet.create({ skeletonCard: { - backgroundColor: '#ffffff', + backgroundColor: "#ffffff", borderRadius: 8, marginBottom: 8, - overflow: 'hidden', + overflow: "hidden", }, skeletonImage: { width: CARD_WIDTH, height: 160, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", }, skeletonContent: { padding: 16, }, skeletonTitle: { height: 20, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", borderRadius: 4, marginBottom: 8, - width: '60%', + width: "60%", }, skeletonDesc: { height: 16, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", borderRadius: 4, marginBottom: 8, - width: '100%', + width: "100%", }, skeletonLocation: { height: 12, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", borderRadius: 4, - width: '30%', + width: "30%", marginTop: 4, }, }); diff --git a/components/map/RecentComplaints.tsx b/components/map/RecentComplaints.tsx index a8ffccd..e1d855b 100644 --- a/components/map/RecentComplaints.tsx +++ b/components/map/RecentComplaints.tsx @@ -1,15 +1,23 @@ -import React from 'react'; -import { View, Text, FlatList, TouchableOpacity, StyleSheet, Image, Dimensions } from 'react-native'; -import { ComplaintPointInterface } from '@/types'; -import { router } from 'expo-router'; -import { Ionicons } from '@expo/vector-icons'; -import { ComplaintSkeleton } from './ComplaintSkeleton'; -import { Colors } from '@/constants'; +import React from "react"; +import { + View, + Text, + FlatList, + TouchableOpacity, + StyleSheet, + Image, + Dimensions, +} from "react-native"; +import { ComplaintPointInterface } from "@/types"; +import { router } from "expo-router"; +import { Ionicons } from "@expo/vector-icons"; +import { ComplaintSkeleton } from "./ComplaintSkeleton"; +import { Colors } from "@/constants"; -const { width } = Dimensions.get('window'); +const { width } = Dimensions.get("window"); const CARD_PADDING = 0; const CARD_MARGIN = 8; -const CARD_WIDTH = width - (CARD_PADDING * 2); +const CARD_WIDTH = width - CARD_PADDING * 2; interface RecentComplaintsProps { complaints: ComplaintPointInterface[]; @@ -18,44 +26,65 @@ interface RecentComplaintsProps { const getCategoryIcon = (categoryId: number) => { switch (categoryId) { - case 1: return "construct"; - case 2: return "car"; - case 3: return "warning"; - case 4: return "people"; - default: return "alert-circle"; + case 1: + return "construct"; + case 2: + return "car"; + case 3: + return "warning"; + case 4: + return "people"; + default: + return "alert-circle"; } }; const getCategoryColor = (categoryId: number) => { switch (categoryId) { - case 1: return "#FF4B4B"; - case 2: return "#4B7BFF"; - case 3: return "#FFB74B"; - case 4: return "#4BFF4B"; - default: return "#808080"; + case 1: + return "#FF4B4B"; + case 2: + return "#4B7BFF"; + case 3: + return "#FFB74B"; + case 4: + return "#4BFF4B"; + default: + return "#808080"; } }; -export const RecentComplaints: React.FC = ({ +export const RecentComplaints: React.FC = ({ complaints, - isLoading = false + isLoading = false, }) => { const renderItem = ({ item }: { item: ComplaintPointInterface }) => ( - router.push({ - pathname: "/complaint/[id]", - params: { id: item.userId } - })} + onPress={() => + router.push({ + pathname: "/complaint/[id]", + params: { id: item.id }, + }) + } > - - - + + @@ -67,12 +96,7 @@ export const RecentComplaints: React.FC = ({ - - {item.districtId === 1 ? "UTEC" : - item.districtId === 2 ? "Javier Prado" : - item.districtId === 3 ? "Miraflores" : - item.districtId === 4 ? "San Isidro" : "La Victoria"} - + {item.district.name} @@ -103,7 +127,7 @@ export const RecentComplaints: React.FC = ({ item.userId} + keyExtractor={(item) => item.id.toString()} showsVerticalScrollIndicator={false} contentContainerStyle={styles.listContent} /> @@ -114,92 +138,92 @@ export const RecentComplaints: React.FC = ({ const styles = StyleSheet.create({ container: { flex: 1, - backgroundColor: 'transparent', + backgroundColor: "transparent", paddingTop: 16, }, header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", paddingHorizontal: CARD_PADDING, marginBottom: 12, }, sectionTitle: { fontFamily: "PlusJS_ExtraBold", fontSize: 20, - fontWeight: '600', + fontWeight: "600", marginVertical: 10, color: Colors.white_80, }, viewAll: { fontSize: 14, color: Colors.blue_60, - fontFamily: 'PlusJS_SemiBold', + fontFamily: "PlusJS_SemiBold", }, listContent: { padding: CARD_PADDING, }, complaintItem: { - backgroundColor: '#ffffff', + backgroundColor: "#ffffff", borderRadius: 8, marginBottom: CARD_MARGIN, - overflow: 'hidden', + overflow: "hidden", borderWidth: 1, - borderColor: '#f0f0f0', + borderColor: "#f0f0f0", }, imageContainer: { width: CARD_WIDTH, height: 160, - position: 'relative', + position: "relative", }, image: { - width: '100%', - height: '100%', + width: "100%", + height: "100%", }, categoryBadge: { - position: 'absolute', + position: "absolute", top: 12, right: 12, padding: 8, borderRadius: 6, - alignItems: 'center', - justifyContent: 'center', + alignItems: "center", + justifyContent: "center", }, contentContainer: { padding: 16, }, complaintTitle: { fontSize: 16, - fontFamily: 'PlusJS_SemiBold', + fontFamily: "PlusJS_SemiBold", marginBottom: 4, }, complaintDesc: { fontSize: 14, - color: '#666', - fontFamily: 'PlusJS_Regular', + color: "#666", + fontFamily: "PlusJS_Regular", lineHeight: 20, marginBottom: 12, }, footer: { - flexDirection: 'row', - alignItems: 'center', + flexDirection: "row", + alignItems: "center", }, location: { fontSize: 12, - color: '#666', + color: "#666", marginLeft: 4, - fontFamily: 'PlusJS_Regular', + fontFamily: "PlusJS_Regular", }, skeletonHeaderTitle: { width: 180, height: 24, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", borderRadius: 4, }, skeletonHeaderButton: { width: 70, height: 20, - backgroundColor: '#f0f0f0', + backgroundColor: "#f0f0f0", borderRadius: 4, }, }); diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..8beb344 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,30 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace +.xcode.env.local + +# Bundle artifacts +*.jsbundle + +# CocoaPods +/Pods/ diff --git a/ios/.xcode.env b/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..d5319be --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,79 @@ +require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") +require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") + +require 'json' +podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} + +ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' +ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] + +use_autolinking_method_symbol = ('use' + '_native' + '_modules!').to_sym +origin_autolinking_method = self.method(use_autolinking_method_symbol) +self.define_singleton_method(use_autolinking_method_symbol) do |*args| + if ENV['EXPO_UNSTABLE_CORE_AUTOLINKING'] == '1' + Pod::UI.puts('Using expo-modules-autolinking as core autolinking source'.green) + config_command = [ + 'node', + '--no-warnings', + '--eval', + 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))', + 'react-native-config', + '--json', + '--platform', + 'ios' + ] + origin_autolinking_method.call(config_command) + else + origin_autolinking_method.call() + end +end + +platform :ios, podfile_properties['ios.deploymentTarget'] || '13.4' +install! 'cocoapods', + :deterministic_uuids => false + +prepare_react_native_project! + +target 'mayllufrontend' do + use_expo_modules! + config = use_native_modules! + + use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] + use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] + + use_react_native!( + :path => config[:reactNativePath], + :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/..", + :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false', + ) + + post_install do |installer| + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true', + ) + + # This is necessary for Xcode 14, because it signs resource bundles by default + # when building for devices. + installer.target_installation_results.pod_target_installation_results + .each do |pod_name, target_installation_result| + target_installation_result.resource_bundle_targets.each do |resource_bundle_target| + resource_bundle_target.build_configurations.each do |config| + config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' + end + end + end + end + + post_integrate do |installer| + begin + expo_patch_react_imports!(installer) + rescue => e + Pod::UI.warn e + end + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..1d623ef --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,1578 @@ +PODS: + - boost (1.83.0) + - DoubleConversion (1.1.6) + - EXConstants (16.0.2): + - ExpoModulesCore + - EXLocation (17.0.1): + - ExpoModulesCore + - Expo (51.0.38): + - ExpoModulesCore + - ExpoAsset (10.0.10): + - ExpoModulesCore + - ExpoBlur (13.0.2): + - ExpoModulesCore + - ExpoFileSystem (17.0.1): + - ExpoModulesCore + - ExpoFont (12.0.10): + - ExpoModulesCore + - ExpoHead (3.5.23): + - ExpoModulesCore + - ExpoKeepAwake (13.0.2): + - ExpoModulesCore + - ExpoLinearGradient (13.0.2): + - ExpoModulesCore + - ExpoModulesCore (1.12.26): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsinspector + - React-NativeModulesApple + - React-RCTAppDelegate + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - EXSplashScreen (0.27.5): + - DoubleConversion + - ExpoModulesCore + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - FBLazyVector (0.74.5) + - fmt (9.1.0) + - glog (0.3.5) + - hermes-engine (0.74.5): + - hermes-engine/Pre-built (= 0.74.5) + - hermes-engine/Pre-built (0.74.5) + - RCT-Folly (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Default (= 2024.01.01.00) + - RCT-Folly/Default (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (2024.01.01.00): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCTDeprecation (0.74.5) + - RCTRequired (0.74.5) + - RCTTypeSafety (0.74.5): + - FBLazyVector (= 0.74.5) + - RCTRequired (= 0.74.5) + - React-Core (= 0.74.5) + - React (0.74.5): + - React-Core (= 0.74.5) + - React-Core/DevSupport (= 0.74.5) + - React-Core/RCTWebSocket (= 0.74.5) + - React-RCTActionSheet (= 0.74.5) + - React-RCTAnimation (= 0.74.5) + - React-RCTBlob (= 0.74.5) + - React-RCTImage (= 0.74.5) + - React-RCTLinking (= 0.74.5) + - React-RCTNetwork (= 0.74.5) + - React-RCTSettings (= 0.74.5) + - React-RCTText (= 0.74.5) + - React-RCTVibration (= 0.74.5) + - React-callinvoker (0.74.5) + - React-Codegen (0.74.5): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.5) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/CoreModulesHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/Default (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/DevSupport (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.5) + - React-Core/RCTWebSocket (= 0.74.5) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTActionSheetHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTAnimationHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTBlobHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTImageHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTLinkingHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTNetworkHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTSettingsHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTTextHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTVibrationHeaders (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-Core/RCTWebSocket (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTDeprecation + - React-Core/Default (= 0.74.5) + - React-cxxreact + - React-featureflags + - React-hermes + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-perflogger + - React-runtimescheduler + - React-utils + - SocketRocket (= 0.7.0) + - Yoga + - React-CoreModules (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety (= 0.74.5) + - React-Codegen + - React-Core/CoreModulesHeaders (= 0.74.5) + - React-jsi (= 0.74.5) + - React-jsinspector + - React-NativeModulesApple + - React-RCTBlob + - React-RCTImage (= 0.74.5) + - ReactCommon + - SocketRocket (= 0.7.0) + - React-cxxreact (0.74.5): + - boost (= 1.83.0) + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.5) + - React-debug (= 0.74.5) + - React-jsi (= 0.74.5) + - React-jsinspector + - React-logger (= 0.74.5) + - React-perflogger (= 0.74.5) + - React-runtimeexecutor (= 0.74.5) + - React-debug (0.74.5) + - React-Fabric (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.74.5) + - React-Fabric/attributedstring (= 0.74.5) + - React-Fabric/componentregistry (= 0.74.5) + - React-Fabric/componentregistrynative (= 0.74.5) + - React-Fabric/components (= 0.74.5) + - React-Fabric/core (= 0.74.5) + - React-Fabric/imagemanager (= 0.74.5) + - React-Fabric/leakchecker (= 0.74.5) + - React-Fabric/mounting (= 0.74.5) + - React-Fabric/scheduler (= 0.74.5) + - React-Fabric/telemetry (= 0.74.5) + - React-Fabric/templateprocessor (= 0.74.5) + - React-Fabric/textlayoutmanager (= 0.74.5) + - React-Fabric/uimanager (= 0.74.5) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/inputaccessory (= 0.74.5) + - React-Fabric/components/legacyviewmanagerinterop (= 0.74.5) + - React-Fabric/components/modal (= 0.74.5) + - React-Fabric/components/rncore (= 0.74.5) + - React-Fabric/components/root (= 0.74.5) + - React-Fabric/components/safeareaview (= 0.74.5) + - React-Fabric/components/scrollview (= 0.74.5) + - React-Fabric/components/text (= 0.74.5) + - React-Fabric/components/textinput (= 0.74.5) + - React-Fabric/components/unimplementedview (= 0.74.5) + - React-Fabric/components/view (= 0.74.5) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/inputaccessory (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/modal (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/rncore (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/safeareaview (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/scrollview (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/text (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/textinput (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/unimplementedview (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/core (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/textlayoutmanager (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricImage (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.74.5) + - RCTTypeSafety (= 0.74.5) + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.74.5) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-featureflags (0.74.5) + - React-graphics (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core/Default (= 0.74.5) + - React-utils + - React-hermes (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.5) + - React-jsi + - React-jsiexecutor (= 0.74.5) + - React-jsinspector + - React-perflogger (= 0.74.5) + - React-runtimeexecutor + - React-ImageManager (0.74.5): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.74.5): + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-debug + - React-jsi + - React-Mapbuffer + - React-jsi (0.74.5): + - boost (= 1.83.0) + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.74.5) + - React-jsi (= 0.74.5) + - React-jsinspector + - React-perflogger (= 0.74.5) + - React-jsinspector (0.74.5): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-runtimeexecutor (= 0.74.5) + - React-jsitracing (0.74.5): + - React-jsi + - React-logger (0.74.5): + - glog + - React-Mapbuffer (0.74.5): + - glog + - React-debug + - react-native-maps (1.14.0): + - React-Core + - react-native-safe-area-context (4.10.5): + - React-Core + - React-nativeconfig (0.74.5) + - React-NativeModulesApple (0.74.5): + - glog + - hermes-engine + - React-callinvoker + - React-Core + - React-cxxreact + - React-jsi + - React-jsinspector + - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-perflogger (0.74.5) + - React-RCTActionSheet (0.74.5): + - React-Core/RCTActionSheetHeaders (= 0.74.5) + - React-RCTAnimation (0.74.5): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTAppDelegate (0.74.5): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-CoreModules + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-nativeconfig + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-RCTNetwork + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-runtimescheduler + - React-utils + - ReactCommon + - React-RCTBlob (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-Codegen + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTFabric (0.74.5): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-jsinspector + - React-nativeconfig + - React-RCTImage + - React-RCTText + - React-rendererdebug + - React-runtimescheduler + - React-utils + - Yoga + - React-RCTImage (0.74.5): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTLinking (0.74.5): + - React-Codegen + - React-Core/RCTLinkingHeaders (= 0.74.5) + - React-jsi (= 0.74.5) + - React-NativeModulesApple + - ReactCommon + - ReactCommon/turbomodule/core (= 0.74.5) + - React-RCTNetwork (0.74.5): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTSettings (0.74.5): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTText (0.74.5): + - React-Core/RCTTextHeaders (= 0.74.5) + - Yoga + - React-RCTVibration (0.74.5): + - RCT-Folly (= 2024.01.01.00) + - React-Codegen + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-rendererdebug (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-rncore (0.74.5) + - React-RuntimeApple (0.74.5): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-callinvoker + - React-Core/Default + - React-CoreModules + - React-cxxreact + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-Mapbuffer + - React-NativeModulesApple + - React-RCTFabric + - React-RuntimeCore + - React-runtimeexecutor + - React-RuntimeHermes + - React-utils + - React-RuntimeCore (0.74.5): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-cxxreact + - React-featureflags + - React-jserrorhandler + - React-jsi + - React-jsiexecutor + - React-jsinspector + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - React-runtimeexecutor (0.74.5): + - React-jsi (= 0.74.5) + - React-RuntimeHermes (0.74.5): + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-featureflags + - React-hermes + - React-jsi + - React-jsinspector + - React-jsitracing + - React-nativeconfig + - React-RuntimeCore + - React-utils + - React-runtimescheduler (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker + - React-cxxreact + - React-debug + - React-featureflags + - React-jsi + - React-rendererdebug + - React-runtimeexecutor + - React-utils + - React-utils (0.74.5): + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-debug + - React-jsi (= 0.74.5) + - ReactCommon (0.74.5): + - ReactCommon/turbomodule (= 0.74.5) + - ReactCommon/turbomodule (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.5) + - React-cxxreact (= 0.74.5) + - React-jsi (= 0.74.5) + - React-logger (= 0.74.5) + - React-perflogger (= 0.74.5) + - ReactCommon/turbomodule/bridging (= 0.74.5) + - ReactCommon/turbomodule/core (= 0.74.5) + - ReactCommon/turbomodule/bridging (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.5) + - React-cxxreact (= 0.74.5) + - React-jsi (= 0.74.5) + - React-logger (= 0.74.5) + - React-perflogger (= 0.74.5) + - ReactCommon/turbomodule/core (0.74.5): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-callinvoker (= 0.74.5) + - React-cxxreact (= 0.74.5) + - React-debug (= 0.74.5) + - React-jsi (= 0.74.5) + - React-logger (= 0.74.5) + - React-perflogger (= 0.74.5) + - React-utils (= 0.74.5) + - RNReanimated (3.10.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.31.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - SocketRocket (0.7.0) + - Yoga (0.0.0) + +DEPENDENCIES: + - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) + - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EXConstants (from `../node_modules/expo-constants/ios`) + - EXLocation (from `../node_modules/expo-location/ios`) + - Expo (from `../node_modules/expo`) + - ExpoAsset (from `../node_modules/expo-asset/ios`) + - ExpoBlur (from `../node_modules/expo-blur/ios`) + - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) + - ExpoFont (from `../node_modules/expo-font/ios`) + - ExpoHead (from `../node_modules/expo-router/ios`) + - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) + - ExpoLinearGradient (from `../node_modules/expo-linear-gradient/ios`) + - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - EXSplashScreen (from `../node_modules/expo-splash-screen/ios`) + - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) + - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) + - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) + - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) + - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../node_modules/react-native/`) + - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) + - React-Core (from `../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../node_modules/react-native/`) + - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) + - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) + - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - react-native-maps (from `../node_modules/react-native-maps`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) + - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) + - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) + - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) + - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) + - React-rncore (from `../node_modules/react-native/ReactCommon`) + - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) + - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) + - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) + - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) + - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + +SPEC REPOS: + trunk: + - SocketRocket + +EXTERNAL SOURCES: + boost: + :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + DoubleConversion: + :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EXConstants: + :path: "../node_modules/expo-constants/ios" + EXLocation: + :path: "../node_modules/expo-location/ios" + Expo: + :path: "../node_modules/expo" + ExpoAsset: + :path: "../node_modules/expo-asset/ios" + ExpoBlur: + :path: "../node_modules/expo-blur/ios" + ExpoFileSystem: + :path: "../node_modules/expo-file-system/ios" + ExpoFont: + :path: "../node_modules/expo-font/ios" + ExpoHead: + :path: "../node_modules/expo-router/ios" + ExpoKeepAwake: + :path: "../node_modules/expo-keep-awake/ios" + ExpoLinearGradient: + :path: "../node_modules/expo-linear-gradient/ios" + ExpoModulesCore: + :path: "../node_modules/expo-modules-core" + EXSplashScreen: + :path: "../node_modules/expo-splash-screen/ios" + FBLazyVector: + :path: "../node_modules/react-native/Libraries/FBLazyVector" + fmt: + :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" + glog: + :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + :tag: hermes-2024-06-28-RNv0.74.3-7bda0c267e76d11b68a585f84cfdd65000babf85 + RCT-Folly: + :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + RCTDeprecation: + :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" + RCTRequired: + :path: "../node_modules/react-native/Libraries/Required" + RCTTypeSafety: + :path: "../node_modules/react-native/Libraries/TypeSafety" + React: + :path: "../node_modules/react-native/" + React-callinvoker: + :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios + React-Core: + :path: "../node_modules/react-native/" + React-CoreModules: + :path: "../node_modules/react-native/React/CoreModules" + React-cxxreact: + :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-debug: + :path: "../node_modules/react-native/ReactCommon/react/debug" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-featureflags: + :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" + React-jsi: + :path: "../node_modules/react-native/ReactCommon/jsi" + React-jsiexecutor: + :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + React-jsinspector: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsitracing: + :path: "../node_modules/react-native/ReactCommon/hermes/executor/" + React-logger: + :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" + react-native-maps: + :path: "../node_modules/react-native-maps" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" + React-nativeconfig: + :path: "../node_modules/react-native/ReactCommon" + React-NativeModulesApple: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-RCTActionSheet: + :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + React-RCTAnimation: + :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" + React-RCTBlob: + :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" + React-RCTImage: + :path: "../node_modules/react-native/Libraries/Image" + React-RCTLinking: + :path: "../node_modules/react-native/Libraries/LinkingIOS" + React-RCTNetwork: + :path: "../node_modules/react-native/Libraries/Network" + React-RCTSettings: + :path: "../node_modules/react-native/Libraries/Settings" + React-RCTText: + :path: "../node_modules/react-native/Libraries/Text" + React-RCTVibration: + :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" + React-rncore: + :path: "../node_modules/react-native/ReactCommon" + React-RuntimeApple: + :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" + React-RuntimeCore: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimeexecutor: + :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + React-RuntimeHermes: + :path: "../node_modules/react-native/ReactCommon/react/runtime" + React-runtimescheduler: + :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-utils: + :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactCommon: + :path: "../node_modules/react-native/ReactCommon" + RNReanimated: + :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" + Yoga: + :path: "../node_modules/react-native/ReactCommon/yoga" + +SPEC CHECKSUMS: + boost: d3f49c53809116a5d38da093a8aa78bf551aed09 + DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 + EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59 + EXLocation: 43e9b582ca63a23c6f0a18d8cbe2145b3a388b55 + Expo: 9b6666ef2fedcfc89c5b9be2aa1ce12b81f9e7f5 + ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875 + ExpoBlur: fa53f874e7b208bc3756d1bf07903c12e790beb1 + ExpoFileSystem: 80bfe850b1f9922c16905822ecbf97acd711dc51 + ExpoFont: 00756e6c796d8f7ee8d211e29c8b619e75cbf238 + ExpoHead: fcb28a68ed4ba28f177394d2dfb8a0a8824cd103 + ExpoKeepAwake: 3b8815d9dd1d419ee474df004021c69fdd316d08 + ExpoLinearGradient: 8cec4a09426d8934c433e83cb36262d72c667fce + ExpoModulesCore: 831ece8311a489418746925820bbffdda587d6f4 + EXSplashScreen: fbf0ec78e9cee911df188bf17b4fe51d15a84b87 + FBLazyVector: ac12dc084d1c8ec4cc4d7b3cf1b0ebda6dab85af + fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 + glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f + hermes-engine: 8c1577f3fdb849cbe7729c2e7b5abc4b845e88f8 + RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 + RCTDeprecation: 3afceddffa65aee666dafd6f0116f1d975db1584 + RCTRequired: ec1239bc9d8bf63e10fb92bd8b26171a9258e0c1 + RCTTypeSafety: f5ecbc86c5c5fa163c05acb7a1c5012e15b5f994 + React: fc9fa7258eff606f44d58c5b233a82dc9cf09018 + React-callinvoker: e3fab14d69607fb7e8e3a57e5a415aed863d3599 + React-Codegen: 6fa87b7c6b8efcd0cef4bfeaec8c8bc8a6abe75a + React-Core: 3a5fd9e781cecf87803e5b091496a606a3df774a + React-CoreModules: cbf4707dafab8f9f826ac0c63a07d0bf5d01e256 + React-cxxreact: 7b188556271e3c7fdf22a04819f6a6225045b9dd + React-debug: d30893c49ae1bce4037ea5cd8bb2511d2a38d057 + React-Fabric: 826729dd2304fda9b89ff0a579f60ba2a470bc26 + React-FabricImage: 2ad1fb8ffa5778eda9ed204a7b3cdd70bc333ce7 + React-featureflags: 4ae83e72d9a92452793601ac9ac7d2280e486089 + React-graphics: 61a026e1c1e7e20d20ac9fec6f6de631732b233d + React-hermes: a7054fbcbda3957e3c5eaad06ef9bf79998d535a + React-ImageManager: 2bbd6eb2e696bc680f76f84563e4b87d241614e1 + React-jserrorhandler: 56fa04d49bfbe54ddfece7916673a73ebfea286b + React-jsi: f3ce1dd2e950b6ad12b65ea3ef89168f1b94c584 + React-jsiexecutor: b4df3a27973d82f9abf3c4bd0f88e042cda25f16 + React-jsinspector: 97ea746c023687de7313ee289817d6991d596c7d + React-jsitracing: 3b6060bbf5317663667e1dd93560c7943ab86ccc + React-logger: 257858bd55f3a4e1bc0cf07ddc8fb9faba6f8c7c + React-Mapbuffer: 6c1cacdbf40b531f549eba249e531a7d0bfd8e7f + react-native-maps: cbf2f03bfeebfd7ec45966b066db13a075fd2af3 + react-native-safe-area-context: a240ad4b683349e48b1d51fed1611138d1bdad97 + React-nativeconfig: ba9a2e54e2f0882cf7882698825052793ed4c851 + React-NativeModulesApple: 8d11ff8955181540585c944cf48e9e7236952697 + React-perflogger: ed4e0c65781521e0424f2e5e40b40cc7879d737e + React-RCTActionSheet: 49d53ff03bb5688ca4606c55859053a0cd129ea5 + React-RCTAnimation: 07b4923885c52c397c4ec103924bf6e53b42c73e + React-RCTAppDelegate: 316e295076734baf9bdf1bfac7d92ab647aed930 + React-RCTBlob: 85c57b0d5e667ff8a472163ba3af0628171a64bb + React-RCTFabric: 97c1465ded4dc92841f5376a39e43e1b2c455f40 + React-RCTImage: b965c85bec820e2a9c154b1fb00a2ecdd59a9c92 + React-RCTLinking: 75f04a5f27c26c4e73a39c50df470820d219df79 + React-RCTNetwork: c1a9143f4d5778efc92da40d83969d03912ccc24 + React-RCTSettings: c6800f91c0ecd48868cd5db754b0b0a7f5ffe039 + React-RCTText: b923e24f9b7250bc4f7ab154c4168ad9f8d8fc9d + React-RCTVibration: 08c4f0c917c435b3619386c25a94ee5d64c250f0 + React-rendererdebug: 3cda04217d9df67b94397ee0ead8ef3d8b7e427b + React-rncore: 4013508a2f3fcf46c961919bbbd4bfdda198977e + React-RuntimeApple: 447844a2bdb0a03ffd24e5b4a4b96cfc50325b88 + React-RuntimeCore: 9b5bffdaccee9b707b1c2694c9044e13ff0bb087 + React-runtimeexecutor: 0e688aefc14c6bc8601f4968d8d01c3fb6446844 + React-RuntimeHermes: 4d6ef6bb0f2b0b40d59143317f6b99c82764c959 + React-runtimescheduler: cfbe85c3510c541ec6dc815c7729b41304b67961 + React-utils: f242eb7e7889419d979ca0e1c02ccc0ea6e43b29 + ReactCommon: f7da14a8827b72704169a48c929bcde802698361 + RNReanimated: 35f9ac9c3ac42d0497ebd1cce5c39d7687a8493e + RNScreens: b32a9ff15bea7fcdbe5dff6477bc503f792b1208 + SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d + Yoga: 950bbfd7e6f04790fdb51149ed51df41f329fcc8 + +PODFILE CHECKSUM: c2638e7251a1c6f277158565b83ad195a0e6e036 + +COCOAPODS: 1.15.2 diff --git a/ios/Podfile.properties.json b/ios/Podfile.properties.json new file mode 100644 index 0000000..de9f7b7 --- /dev/null +++ b/ios/Podfile.properties.json @@ -0,0 +1,4 @@ +{ + "expo.jsEngine": "hermes", + "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" +} diff --git a/ios/mayllufrontend.xcodeproj/project.pbxproj b/ios/mayllufrontend.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ba10587 --- /dev/null +++ b/ios/mayllufrontend.xcodeproj/project.pbxproj @@ -0,0 +1,537 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 6DAC4CEDF98149FCB1B5464F /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA6C59BE1254A20B8201F47 /* noop-file.swift */; }; + 96905EF65AED1B983A6B3ABC /* libPods-mayllufrontend.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-mayllufrontend.a */; }; + B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + F90C4A9391DF67D452D5E071 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 702F65B8E365EC1A374D2BB5 /* PrivacyInfo.xcprivacy */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* mayllufrontend.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mayllufrontend.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = mayllufrontend/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = mayllufrontend/AppDelegate.mm; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = mayllufrontend/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mayllufrontend/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = mayllufrontend/main.m; sourceTree = ""; }; + 4EAA5BA5D9B749E5873428AA /* mayllufrontend-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "mayllufrontend-Bridging-Header.h"; path = "mayllufrontend/mayllufrontend-Bridging-Header.h"; sourceTree = ""; }; + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-mayllufrontend.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-mayllufrontend.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BA6C59BE1254A20B8201F47 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "mayllufrontend/noop-file.swift"; sourceTree = ""; }; + 6C2E3173556A471DD304B334 /* Pods-mayllufrontend.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mayllufrontend.debug.xcconfig"; path = "Target Support Files/Pods-mayllufrontend/Pods-mayllufrontend.debug.xcconfig"; sourceTree = ""; }; + 702F65B8E365EC1A374D2BB5 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = mayllufrontend/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 7A4D352CD337FB3A3BF06240 /* Pods-mayllufrontend.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mayllufrontend.release.xcconfig"; path = "Target Support Files/Pods-mayllufrontend/Pods-mayllufrontend.release.xcconfig"; sourceTree = ""; }; + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = mayllufrontend/SplashScreen.storyboard; sourceTree = ""; }; + BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-mayllufrontend/ExpoModulesProvider.swift"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 96905EF65AED1B983A6B3ABC /* libPods-mayllufrontend.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* mayllufrontend */ = { + isa = PBXGroup; + children = ( + BB2F792B24A3F905000567C9 /* Supporting */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB71A68108700A75B9A /* main.m */, + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, + 5BA6C59BE1254A20B8201F47 /* noop-file.swift */, + 4EAA5BA5D9B749E5873428AA /* mayllufrontend-Bridging-Header.h */, + 702F65B8E365EC1A374D2BB5 /* PrivacyInfo.xcprivacy */, + ); + name = mayllufrontend; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-mayllufrontend.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* mayllufrontend */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + D65327D7A22EEC0BE12398D9 /* Pods */, + D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* mayllufrontend.app */, + ); + name = Products; + sourceTree = ""; + }; + 92DBD88DE9BF7D494EA9DA96 /* mayllufrontend */ = { + isa = PBXGroup; + children = ( + FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, + ); + name = mayllufrontend; + sourceTree = ""; + }; + BB2F792B24A3F905000567C9 /* Supporting */ = { + isa = PBXGroup; + children = ( + BB2F792C24A3F905000567C9 /* Expo.plist */, + ); + name = Supporting; + path = mayllufrontend/Supporting; + sourceTree = ""; + }; + D65327D7A22EEC0BE12398D9 /* Pods */ = { + isa = PBXGroup; + children = ( + 6C2E3173556A471DD304B334 /* Pods-mayllufrontend.debug.xcconfig */, + 7A4D352CD337FB3A3BF06240 /* Pods-mayllufrontend.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { + isa = PBXGroup; + children = ( + 92DBD88DE9BF7D494EA9DA96 /* mayllufrontend */, + ); + name = ExpoModulesProviders; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* mayllufrontend */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "mayllufrontend" */; + buildPhases = ( + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, + AAAE0E1B1DAA40BF4B1FA45A /* [Expo] Configure project */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, + 2191A0F1A3362B2D64119FA1 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = mayllufrontend; + productName = mayllufrontend; + productReference = 13B07F961A680F5B00A75B9A /* mayllufrontend.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1250; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "mayllufrontend" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* mayllufrontend */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, + F90C4A9391DF67D452D5E071 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; + }; + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-mayllufrontend-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 2191A0F1A3362B2D64119FA1 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-mayllufrontend/Pods-mayllufrontend-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-mayllufrontend/Pods-mayllufrontend-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-mayllufrontend/Pods-mayllufrontend-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-mayllufrontend/Pods-mayllufrontend-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + AAAE0E1B1DAA40BF4B1FA45A /* [Expo] Configure project */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "[Expo] Configure project"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-mayllufrontend/expo-configure-project.sh\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, + 6DAC4CEDF98149FCB1B5464F /* noop-file.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-mayllufrontend.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = mayllufrontend/mayllufrontend.entitlements; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_SONARKIT_ENABLED=1", + ); + INFOPLIST_FILE = mayllufrontend/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = "mayllu-frontend"; + PRODUCT_NAME = mayllufrontend; + SWIFT_OBJC_BRIDGING_HEADER = "mayllufrontend/mayllufrontend-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-mayllufrontend.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = mayllufrontend/mayllufrontend.entitlements; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = mayllufrontend/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; + PRODUCT_BUNDLE_IDENTIFIER = "mayllu-frontend"; + PRODUCT_NAME = mayllufrontend; + SWIFT_OBJC_BRIDGING_HEADER = "mayllufrontend/mayllufrontend-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CXX = ""; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD = ""; + LDPLUSPLUS = ""; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CC = ""; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + CXX = ""; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD = ""; + LDPLUSPLUS = ""; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + " ", + ); + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + USE_HERMES = true; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "mayllufrontend" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "mayllufrontend" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/mayllufrontend.xcodeproj/xcshareddata/xcschemes/mayllufrontend.xcscheme b/ios/mayllufrontend.xcodeproj/xcshareddata/xcschemes/mayllufrontend.xcscheme new file mode 100644 index 0000000..51d1f27 --- /dev/null +++ b/ios/mayllufrontend.xcodeproj/xcshareddata/xcschemes/mayllufrontend.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/mayllufrontend.xcworkspace/contents.xcworkspacedata b/ios/mayllufrontend.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..da15c18 --- /dev/null +++ b/ios/mayllufrontend.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/mayllufrontend/AppDelegate.h b/ios/mayllufrontend/AppDelegate.h new file mode 100644 index 0000000..1658a43 --- /dev/null +++ b/ios/mayllufrontend/AppDelegate.h @@ -0,0 +1,7 @@ +#import +#import +#import + +@interface AppDelegate : EXAppDelegateWrapper + +@end diff --git a/ios/mayllufrontend/AppDelegate.mm b/ios/mayllufrontend/AppDelegate.mm new file mode 100644 index 0000000..b27f832 --- /dev/null +++ b/ios/mayllufrontend/AppDelegate.mm @@ -0,0 +1,62 @@ +#import "AppDelegate.h" + +#import +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.moduleName = @"main"; + + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; + + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ + return [self bundleURL]; +} + +- (NSURL *)bundleURL +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +// Linking API +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { + return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; +} + +// Universal Links +- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { + BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; + return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken +{ + return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error +{ + return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler +{ + return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; +} + +@end diff --git a/ios/mayllufrontend/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png b/ios/mayllufrontend/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..911eb3eb948319f851bc81d2f60bca3860d6640a GIT binary patch literal 42472 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 Q0tz#Dy85}Sb4q9e0EL(iEdT%j literal 0 HcmV?d00001 diff --git a/ios/mayllufrontend/Info.plist b/ios/mayllufrontend/Info.plist new file mode 100644 index 0000000..f2f6b29 --- /dev/null +++ b/ios/mayllufrontend/Info.plist @@ -0,0 +1,87 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + mayllu-frontend + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLSchemes + + mayllu + mayllu-frontend + + + + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSLocationAlwaysAndWhenInUseUsageDescription + Allow $(PRODUCT_NAME) to use your location. + NSLocationAlwaysUsageDescription + Allow $(PRODUCT_NAME) to access your location + NSLocationWhenInUseUsageDescription + Allow $(PRODUCT_NAME) to use your location while the app is in use. + NSUserActivityTypes + + $(PRODUCT_BUNDLE_IDENTIFIER).expo.index_route + + UIBackgroundModes + + location + + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + arm64 + + UIRequiresFullScreen + + UIStatusBarStyle + UIStatusBarStyleDefault + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Light + UIViewControllerBasedStatusBarAppearance + + + \ No newline at end of file diff --git a/ios/mayllufrontend/PrivacyInfo.xcprivacy b/ios/mayllufrontend/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..5bb83c5 --- /dev/null +++ b/ios/mayllufrontend/PrivacyInfo.xcprivacy @@ -0,0 +1,48 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + 0A2A.1 + 3B52.1 + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + 85F4.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/ios/mayllufrontend/SplashScreen.storyboard b/ios/mayllufrontend/SplashScreen.storyboard new file mode 100644 index 0000000..ed03a52 --- /dev/null +++ b/ios/mayllufrontend/SplashScreen.storyboard @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ios/mayllufrontend/Supporting/Expo.plist b/ios/mayllufrontend/Supporting/Expo.plist new file mode 100644 index 0000000..750be02 --- /dev/null +++ b/ios/mayllufrontend/Supporting/Expo.plist @@ -0,0 +1,12 @@ + + + + + EXUpdatesCheckOnLaunch + ALWAYS + EXUpdatesEnabled + + EXUpdatesLaunchWaitMs + 0 + + \ No newline at end of file diff --git a/ios/mayllufrontend/main.m b/ios/mayllufrontend/main.m new file mode 100644 index 0000000..25181b6 --- /dev/null +++ b/ios/mayllufrontend/main.m @@ -0,0 +1,10 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} + diff --git a/ios/mayllufrontend/mayllufrontend-Bridging-Header.h b/ios/mayllufrontend/mayllufrontend-Bridging-Header.h new file mode 100644 index 0000000..e11d920 --- /dev/null +++ b/ios/mayllufrontend/mayllufrontend-Bridging-Header.h @@ -0,0 +1,3 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// diff --git a/ios/mayllufrontend/mayllufrontend.entitlements b/ios/mayllufrontend/mayllufrontend.entitlements new file mode 100644 index 0000000..f683276 --- /dev/null +++ b/ios/mayllufrontend/mayllufrontend.entitlements @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ios/mayllufrontend/noop-file.swift b/ios/mayllufrontend/noop-file.swift new file mode 100644 index 0000000..b2ffafb --- /dev/null +++ b/ios/mayllufrontend/noop-file.swift @@ -0,0 +1,4 @@ +// +// @generated +// A blank Swift file must be created for native modules with Swift files to work correctly. +// diff --git a/package.json b/package.json index 4f91860..7ab7cbb 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "main": "expo-router/entry", "scripts": { "start": "expo start", - "android": "expo start --android", - "ios": "expo start --ios", + "android": "expo run:android", + "ios": "expo run:ios", "web": "expo start --web", "lint": "eslint ." }, diff --git a/pages/HomePage.tsx b/pages/HomePage.tsx index c86f7c9..f555e66 100644 --- a/pages/HomePage.tsx +++ b/pages/HomePage.tsx @@ -11,15 +11,16 @@ import { fetchComplaints } from "@/api/complaints"; const HomePage = () => { const headerHeight = useHeaderHeight(); const pageStyle = CreatePageStyle(headerHeight); - const [originLocation, setOriginLocation] = useState(null); + const [originLocation, setOriginLocation] = + useState(null); const [complaints, setComplaints] = useState([]); const [isLoading, setIsLoading] = useState(false); useEffect(() => { const getPermissions = async () => { - let { status } = await Location.requestForegroundPermissionsAsync(); - if (status != 'granted') { - alert('Permission to access location was denied'); + let { status } = await Location.requestForegroundPermissionsAsync(); + if (status != "granted") { + alert("Permission to access location was denied"); return; } @@ -37,21 +38,14 @@ const HomePage = () => { getPermissions(); loadComplaints(); - }, []) + }, []); return ( - - + + ); }; export default HomePage; - diff --git a/types/ComplaintPoint.ts b/types/ComplaintPoint.ts index 2a6f5df..221a896 100644 --- a/types/ComplaintPoint.ts +++ b/types/ComplaintPoint.ts @@ -1,10 +1,32 @@ export interface ComplaintPointInterface { - userId: string; - image: string; + id: number; title: string; description: string; - latitude: string; - longitude: string; - categoryId: number; - districtId: number; -}; + ubication: { + x: number; + y: number; + }; + created_at: string; + updated_at: string; + user: { + dni: string; + name: string; + lastname: string; + email: string; + password: string; + image_url: string; + created_at: string; + updated_at: string; + }; + category: { + id: number; + name: string; + icon: string; + }; + district: { + name: string; + }; + complaints_image: any[]; // Puedes especificar el tipo si tienes más detalles de esta estructura + comments: any[]; // Igualmente, ajusta si tienes el tipo específico + complaintState: any[]; // Ajusta según el tipo específico de los estados de queja +} diff --git a/types/index.ts b/types/index.ts index 025fce1..2e4a0fd 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,2 +1,2 @@ -export * from './NotificationItem'; -export * from './ComplaintPoint'; +export * from "./NotificationItem"; +export * from "./ComplaintPoint";