├── assets ├── icon.png ├── favicon.png ├── splash.png ├── soundBar.gif ├── adaptive-icon.png └── fonts │ └── poppins.ttf ├── screenshots ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg ├── 5.jpg ├── 6.png ├── feature.png └── splashscreen.png ├── .gitattributes ├── contexts └── DContexts.js ├── ios ├── Podfile.properties.json ├── feelio │ ├── Images.xcassets │ │ ├── Contents.json │ │ ├── SplashScreen.imageset │ │ │ ├── image.png │ │ │ └── Contents.json │ │ ├── SplashScreenBackground.imageset │ │ │ ├── image.png │ │ │ └── Contents.json │ │ └── AppIcon.appiconset │ │ │ ├── App-Icon-1024x1024@1x.png │ │ │ └── Contents.json │ ├── feelio-Bridging-Header.h │ ├── noop-file.swift │ ├── AppDelegate.h │ ├── main.m │ ├── feelio.entitlements │ ├── Supporting │ │ └── Expo.plist │ ├── AppDelegate.mm │ ├── Info.plist │ └── SplashScreen.storyboard ├── feelio.xcworkspace │ └── contents.xcworkspacedata ├── .gitignore ├── .xcode.env ├── Podfile ├── feelio.xcodeproj │ ├── xcshareddata │ │ └── xcschemes │ │ │ └── feelio.xcscheme │ └── project.pbxproj └── Podfile.lock ├── babel.config.js ├── .gitignore ├── api └── weatherAPI.js ├── utils └── location.js ├── components ├── NoResultComponent.js ├── AddTopBar.js ├── Yearbtn.js ├── ChipNav.js ├── EditTopBar.js ├── DialPad.js ├── CircularChip.js ├── DiaryTopBar.js ├── DiaryList.js ├── Tabs.js ├── Dashboard.js └── Voice.js ├── app.json ├── constants ├── styles.js ├── SecureStoreModel.js └── Database.js ├── package.json ├── README.md ├── screens ├── CreatePin.js ├── EditUsername.js ├── Diary.js ├── EditPin.js ├── ValidatePin.js ├── Edit.js ├── Settings.js ├── Add.js └── Home.js └── App.js /assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/assets/icon.png -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/assets/favicon.png -------------------------------------------------------------------------------- /assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/assets/splash.png -------------------------------------------------------------------------------- /screenshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/1.jpg -------------------------------------------------------------------------------- /screenshots/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/2.jpg -------------------------------------------------------------------------------- /screenshots/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/3.jpg -------------------------------------------------------------------------------- /screenshots/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/4.jpg -------------------------------------------------------------------------------- /screenshots/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/5.jpg -------------------------------------------------------------------------------- /screenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/6.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /assets/soundBar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/assets/soundBar.gif -------------------------------------------------------------------------------- /screenshots/feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/feature.png -------------------------------------------------------------------------------- /assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/assets/adaptive-icon.png -------------------------------------------------------------------------------- /assets/fonts/poppins.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/assets/fonts/poppins.ttf -------------------------------------------------------------------------------- /screenshots/splashscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/screenshots/splashscreen.png -------------------------------------------------------------------------------- /contexts/DContexts.js: -------------------------------------------------------------------------------- 1 | import { createContext } from "react"; 2 | export const DContexts = createContext({}); 3 | -------------------------------------------------------------------------------- /ios/Podfile.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo.jsEngine": "hermes", 3 | "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" 4 | } 5 | -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "expo" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function(api) { 2 | api.cache(true); 3 | return { 4 | presets: ['babel-preset-expo'], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /ios/feelio/feelio-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | -------------------------------------------------------------------------------- /ios/feelio/noop-file.swift: -------------------------------------------------------------------------------- 1 | // 2 | // @generated 3 | // A blank Swift file must be created for native modules with Swift files to work correctly. 4 | // 5 | -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/SplashScreen.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/ios/feelio/Images.xcassets/SplashScreen.imageset/image.png -------------------------------------------------------------------------------- /ios/feelio/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @interface AppDelegate : EXAppDelegateWrapper 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/SplashScreenBackground.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/ios/feelio/Images.xcassets/SplashScreenBackground.imageset/image.png -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/baqx/feelio/HEAD/ios/feelio/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/feelio/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /ios/feelio/feelio.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | -------------------------------------------------------------------------------- /ios/feelio.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "filename": "App-Icon-1024x1024@1x.png", 5 | "idiom": "universal", 6 | "platform": "ios", 7 | "size": "1024x1024" 8 | } 9 | ], 10 | "info": { 11 | "version": 1, 12 | "author": "expo" 13 | } 14 | } -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/SplashScreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /ios/feelio/Images.xcassets/SplashScreenBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | .xcode.env.local 25 | 26 | # Bundle artifacts 27 | *.jsbundle 28 | 29 | # CocoaPods 30 | /Pods/ 31 | -------------------------------------------------------------------------------- /ios/feelio/Supporting/Expo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EXUpdatesCheckOnLaunch 6 | ALWAYS 7 | EXUpdatesEnabled 8 | 9 | EXUpdatesLaunchWaitMs 10 | 0 11 | EXUpdatesSDKVersion 12 | 50.0.0 13 | 14 | -------------------------------------------------------------------------------- /ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files 2 | 3 | # dependencies 4 | node_modules/ 5 | 6 | # Expo 7 | .expo/ 8 | dist/ 9 | web-build/ 10 | 11 | # Native 12 | *.orig.* 13 | *.jks 14 | *.p8 15 | *.p12 16 | *.key 17 | *.mobileprovision 18 | 19 | # Metro 20 | .metro-health-check* 21 | 22 | # debug 23 | npm-debug.* 24 | yarn-debug.* 25 | yarn-error.* 26 | 27 | # macOS 28 | .DS_Store 29 | *.pem 30 | 31 | # local env files 32 | .env*.local 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | -------------------------------------------------------------------------------- /api/weatherAPI.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | export const fetchWeatherData = async (latitude, longitude) => { 4 | try { 5 | const apiKey = "YOUR_KEY"; // Replace with your API key 6 | const response = await axios.get( 7 | `https://api.weatherapi.com/v1/current.json`, 8 | { 9 | params: { 10 | key: apiKey, 11 | q: `Lagos`, 12 | }, 13 | } 14 | ); 15 | return response.data; 16 | } catch (error) { 17 | console.log("Error fetching weather data:", error); 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /utils/location.js: -------------------------------------------------------------------------------- 1 | import * as Location from "expo-location"; 2 | 3 | export const getCurrentLocation = async () => { 4 | const { status } = await Location.requestForegroundPermissionsAsync(); 5 | if (status !== "granted") { 6 | throw new Error("Permission to access location was denied"); 7 | } 8 | 9 | const location = await Location.getCurrentPositionAsync({ 10 | accuracy: Location.Accuracy.High, 11 | }); 12 | 13 | return { 14 | latitude: location.coords.latitude, 15 | longitude: location.coords.longitude, 16 | }; 17 | }; 18 | -------------------------------------------------------------------------------- /components/NoResultComponent.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { View, Text } from "react-native"; 3 | import useStyles from "../constants/styles"; 4 | import { Ionicons } from "@expo/vector-icons"; 5 | import { DContexts } from "../contexts/DContexts"; 6 | export default function NoResultComponent() { 7 | css = useStyles(); 8 | const { primarycolor } = useContext(DContexts); 9 | return ( 10 | 11 | 17 | There are no diaries yet! 18 | 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "feelio", 4 | "slug": "feelio", 5 | "version": "1.0.0", 6 | "orientation": "portrait", 7 | "icon": "./assets/icon.png", 8 | "userInterfaceStyle": "light", 9 | "splash": { 10 | "image": "./assets/splash.png", 11 | "resizeMode": "contain", 12 | "backgroundColor": "#FFF9E9" 13 | }, 14 | "assetBundlePatterns": [ 15 | "**/*" 16 | ], 17 | "ios": { 18 | "supportsTablet": true, 19 | "bundleIdentifier": "y" 20 | }, 21 | "android": { 22 | "adaptiveIcon": { 23 | "foregroundImage": "./assets/adaptive-icon.png", 24 | "backgroundColor": "#FFF9E9" 25 | } 26 | }, 27 | "web": { 28 | "favicon": "./assets/favicon.png" 29 | }, 30 | "plugins": [ 31 | "expo-secure-store", 32 | [ 33 | "expo-font", 34 | { 35 | "fonts": [ 36 | "./assets/fonts/poppins.ttf" 37 | ] 38 | } 39 | ] 40 | ] 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /constants/styles.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { StyleSheet } from "react-native"; 3 | import { DContexts } from "../contexts/DContexts"; 4 | 5 | const useStyles = () => { 6 | const { bgcolor } = useContext(DContexts); 7 | const { txtcolor } = useContext(DContexts); 8 | 9 | return StyleSheet.create({ 10 | container: { 11 | flex: 1, 12 | flexGrow: 1, 13 | backgroundColor: bgcolor, 14 | paddingTop: 15, 15 | }, 16 | greytext: { 17 | color: "grey", 18 | fontSize: 13, 19 | margin: 5, 20 | }, 21 | txt: { 22 | color: txtcolor, 23 | }, 24 | pagetitle: { 25 | margin: 10, 26 | marginRight: 25, 27 | marginTop: 25, 28 | fontSize: 26, 29 | color: txtcolor, 30 | fontWeight: "bold", 31 | }, 32 | greytext2: { 33 | color: "grey", 34 | fontSize: 16, 35 | margin: 5, 36 | }, 37 | noresdiv: { 38 | margin: 4, 39 | backgroundColor: bgcolor, 40 | padding: 8, 41 | justifyContent: "center", 42 | alignItems: "center", 43 | }, 44 | noresdiv_err: { 45 | margin: 5, 46 | color: txtcolor, 47 | }, 48 | }); 49 | }; 50 | 51 | export default useStyles; 52 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "feelio", 3 | "version": "1.0.0", 4 | "main": "node_modules/expo/AppEntry.js", 5 | "scripts": { 6 | "start": "expo start", 7 | "android": "expo run:android", 8 | "ios": "expo run:ios", 9 | "web": "expo start --web" 10 | }, 11 | "dependencies": { 12 | "@expo/config-plugins": "^8.0.7", 13 | "@expo/vector-icons": "^14.0.2", 14 | "@react-native-voice/voice": "^3.2.4", 15 | "@react-navigation/bottom-tabs": "^6.6.0", 16 | "@react-navigation/native": "^6.1.17", 17 | "@react-navigation/native-stack": "^6.10.0", 18 | "axios": "^1.7.4", 19 | "expo": "^51.0.0", 20 | "expo-font": "~12.0.7", 21 | "expo-linear-gradient": "~13.0.2", 22 | "expo-location": "~17.0.1", 23 | "expo-secure-store": "~13.0.2", 24 | "expo-splash-screen": "~0.27.5", 25 | "expo-sqlite": "~13.4.0", 26 | "expo-status-bar": "~1.12.1", 27 | "react": "18.2.0", 28 | "react-native": "0.74.3", 29 | "react-native-safe-area-context": "4.10.1", 30 | "react-native-screens": "3.31.1", 31 | "react-native-shimmer-placeholder": "^2.0.9", 32 | "react-native-voice": "^0.3.0" 33 | }, 34 | "devDependencies": { 35 | "@babel/core": "^7.24.0" 36 | }, 37 | "private": true 38 | } 39 | -------------------------------------------------------------------------------- /components/AddTopBar.js: -------------------------------------------------------------------------------- 1 | import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; 2 | import React, { useContext } from "react"; 3 | import { DContexts } from "../contexts/DContexts"; 4 | import useStyles from "../constants/styles"; 5 | export default function AddTopBar({ acton }) { 6 | const { primarycolor } = useContext(DContexts); 7 | css = useStyles(); 8 | return ( 9 | 10 | 11 | 12 | New Diary 13 | 14 | 15 | 16 | 17 | Save 18 | 19 | 20 | 21 | 22 | ); 23 | } 24 | const styles = StyleSheet.create({ 25 | AddTopBar: { 26 | margin: 10, 27 | marginTop: 20, 28 | padding: 10, 29 | flexDirection: "row", 30 | justifyContent: "space-between", 31 | }, 32 | atp_icon_text1: { 33 | fontWeight: "bold", 34 | fontSize: 17, 35 | }, 36 | atp_icon_text: { 37 | fontWeight: "400", 38 | 39 | fontSize: 17, 40 | margin: 5, 41 | }, 42 | atp_icon: { 43 | margin: 5, 44 | }, 45 | }); 46 | -------------------------------------------------------------------------------- /components/Yearbtn.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { View, Text, StyleSheet } from "react-native"; 3 | import { DContexts } from "../contexts/DContexts"; 4 | export default function Yearbtn({ year, active }) { 5 | const { primarycolor } = useContext(DContexts); 6 | const { opacitycolor } = useContext(DContexts); 7 | return ( 8 | 15 | {year} 16 | See memories 17 | 18 | ); 19 | } 20 | const styles = StyleSheet.create({ 21 | yrbtn: { 22 | padding: 15, 23 | margin: 5, 24 | marginTop: 5, 25 | borderRadius: 15, 26 | color: "white", 27 | justifyContent: "space-between", 28 | elevation: 7, 29 | maxHeight: 80, 30 | }, 31 | yrbtn_o: { 32 | padding: 15, 33 | margin: 5, 34 | marginTop: 2, 35 | borderRadius: 15, 36 | color: "white", 37 | justifyContent: "space-between", 38 | 39 | maxHeight: 80, 40 | }, 41 | yrbtn_yr: { 42 | color: "#fff", 43 | fontSize: 18, 44 | fontWeight: "bold", 45 | }, 46 | yrbtn_mem: { 47 | color: "#f2f2f2", 48 | fontSize: 13, 49 | fontWeight: "300", 50 | }, 51 | }); 52 | -------------------------------------------------------------------------------- /components/ChipNav.js: -------------------------------------------------------------------------------- 1 | import { View, Text, StyleSheet } from "react-native"; 2 | import { DContexts } from "../contexts/DContexts"; 3 | import React, { useContext } from "react"; 4 | export default function ChipNav({ name, active }) { 5 | const { primarycolor } = useContext(DContexts); 6 | const { opacitycolor } = useContext(DContexts); 7 | return ( 8 | 15 | {name} 16 | 17 | ); 18 | } 19 | const styles = StyleSheet.create({ 20 | activeButton: { 21 | padding: 8, 22 | paddingHorizontal: 20, 23 | margin: 5, 24 | marginTop: 5, 25 | borderRadius: 15, 26 | color: "white", 27 | justifyContent: "space-between", 28 | alignItems: "center", 29 | elevation: 5, 30 | maxHeight: 80, 31 | minWidth: 90, 32 | }, 33 | mtbtn: { 34 | padding: 8, 35 | paddingHorizontal: 20, 36 | margin: 5, 37 | marginTop: 5, 38 | borderRadius: 15, 39 | color: "white", 40 | justifyContent: "space-between", 41 | alignItems: "center", 42 | maxHeight: 80, 43 | maxHeight: 80, 44 | minWidth: 90, 45 | }, 46 | 47 | month_name: { 48 | color: "#fff", 49 | justifyContent: "center", 50 | alignItems: "center", 51 | }, 52 | }); 53 | -------------------------------------------------------------------------------- /components/EditTopBar.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; 3 | import { Ionicons } from "@expo/vector-icons"; 4 | import { useNavigation } from "@react-navigation/native"; 5 | import { DContexts } from "../contexts/DContexts"; 6 | import useStyles from "../constants/styles"; 7 | export default function EditTopBar({ acton }) { 8 | const { primarycolor } = useContext(DContexts); 9 | const navigation = useNavigation(); 10 | css = useStyles(); 11 | 12 | return ( 13 | 14 | navigation.goBack()} 16 | style={styles.atp_icon} 17 | > 18 | 19 | 20 | 21 | Edit 22 | 23 | 24 | 25 | 26 | Finish 27 | 28 | 29 | 30 | 31 | ); 32 | } 33 | const styles = StyleSheet.create({ 34 | AddTopBar: { 35 | margin: 10, 36 | marginTop: 20, 37 | padding: 10, 38 | flexDirection: "row", 39 | justifyContent: "space-between", 40 | }, 41 | atp_icon_text1: { 42 | fontWeight: "bold", 43 | fontSize: 20, 44 | }, 45 | atp_icon_text: { 46 | fontWeight: "600", 47 | fontSize: 20, 48 | margin: 5, 49 | }, 50 | atp_icon: { 51 | margin: 5, 52 | }, 53 | }); 54 | -------------------------------------------------------------------------------- /constants/SecureStoreModel.js: -------------------------------------------------------------------------------- 1 | import * as SecureStore from "expo-secure-store"; 2 | 3 | class SecureStoreModel { 4 | // Save a key-value pair 5 | static async saveItem(key, value) { 6 | try { 7 | await SecureStore.setItemAsync(key, value); 8 | console.log(`Saved key "${key}" with value "${value}".`); 9 | } catch (error) { 10 | console.error(`Failed to save item: ${error}`); 11 | } 12 | } 13 | 14 | // Update a key-value pair 15 | static async updateItem(key, value) { 16 | try { 17 | await SecureStore.setItemAsync(key, value); 18 | console.log(`Updated key "${key}" with new value "${value}".`); 19 | } catch (error) { 20 | console.error(`Failed to update item: ${error}`); 21 | } 22 | } 23 | 24 | // Check if a key exists 25 | static async itemExists(key) { 26 | try { 27 | const value = await SecureStore.getItemAsync(key); 28 | return value !== null; // Return true if the key exists and has a value 29 | } catch (error) { 30 | console.error(`Failed to check if item exists: ${error}`); 31 | return false; 32 | } 33 | } 34 | 35 | // Retrieve a key-value pair 36 | static async getItem(key) { 37 | try { 38 | const value = await SecureStore.getItemAsync(key); 39 | if (value !== null) { 40 | console.log(`Retrieved key "${key}" with value "${value}".`); 41 | } else { 42 | console.log(`Key "${key}" does not exist.`); 43 | } 44 | return value; 45 | } catch (error) { 46 | console.error(`Failed to retrieve item: ${error}`); 47 | return null; 48 | } 49 | } 50 | } 51 | 52 | // Export the SecureStoreModel class 53 | export default SecureStoreModel; 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Feelio

2 | 3 |

4 | 5 |

6 | 7 |

8 | 9 | 10 | rn version 11 | 12 | 13 | ## Introduction 14 | 15 | Feelio - Your Private Space 16 | 17 | Write your thoughts, feelings, and stories in a safe and beautiful digital diary. Express yourself freely, reflect on your journey, and grow with Feelio. 18 | Start writing your story today! 19 | 20 | ## Requirements 21 | 22 | - NPM (Node Package Manager) 23 | - React-Native 24 | - Expo 25 | 26 | ## Features 27 | 28 | - Lock your diary with a password 29 | - Customize your interface with colors 30 | - Organize your thoughts 31 | - Access your diary anywhere, anytime 32 | 33 | ## Setup 34 | 35 | Install all packages 36 | 37 | > npm install 38 | 39 | Get your weatherapi.com api key and put it in api/weatherAPI.js 40 | 41 | > const apiKey = "YOUR_KEY"; // Replace with your API key 42 | 43 | ## Screenshots 44 | 45 |

46 | 47 |     48 | 49 | 50 | 51 |

52 |

53 | 54 | 55 | 56 |

57 |

58 | 59 | 60 | 61 |

62 |

63 | 64 |     65 |     66 | 67 | 68 |

69 | 70 | 71 | -------------------------------------------------------------------------------- /screens/CreatePin.js: -------------------------------------------------------------------------------- 1 | import React, { useContext, useState } from "react"; 2 | import { View, Text, StyleSheet, StatusBar } from "react-native"; 3 | import DialPad from "../components/DialPad"; 4 | import SecureStoreModel from "../constants/SecureStoreModel"; 5 | import { DContexts } from "../contexts/DContexts"; 6 | import useStyles from "../constants/styles"; 7 | const CreatePin = () => { 8 | const [pin, setPin] = useState(""); 9 | const { setPinSet } = useContext(DContexts); 10 | const css = useStyles(); 11 | const { bgcolor } = useContext(DContexts); 12 | const { primarycolor } = useContext(DContexts); 13 | // Handle button press 14 | const handlePress = (value) => { 15 | if (value === "backspace") { 16 | // Handle backspace press 17 | setPin((prevPin) => prevPin.slice(0, -1)); 18 | } else { 19 | // Handle number press 20 | if (pin.length < 4) { 21 | const newPin = pin + value.toString(); 22 | setPin(newPin); 23 | 24 | // If the new pin length is exactly 4, automatically authenticate 25 | if (newPin.length === 4) { 26 | authenticatePin(newPin); 27 | } 28 | } 29 | } 30 | }; 31 | 32 | // Function to authenticate the PIN 33 | const authenticatePin = (pin) => { 34 | // Replace the following logic with your actual authentication logic 35 | 36 | SecureStoreModel.saveItem("pin", pin); 37 | setPin(""); 38 | setPinSet(true); 39 | }; 40 | 41 | return ( 42 | <> 43 | 48 | 49 | 50 | Create a 4-digit PIN for Feelio: 51 | 52 | 53 | {"*".repeat(pin.length)} 54 | 55 | 56 | 57 | 58 | ); 59 | }; 60 | 61 | const styles = StyleSheet.create({ 62 | container: { 63 | flex: 1, 64 | justifyContent: "center", 65 | alignItems: "center", 66 | }, 67 | inputText: { 68 | fontSize: 20, 69 | marginBottom: 20, 70 | }, 71 | pin: { 72 | fontSize: 24, 73 | marginBottom: 20, 74 | }, 75 | }); 76 | 77 | export default CreatePin; 78 | -------------------------------------------------------------------------------- /screens/EditUsername.js: -------------------------------------------------------------------------------- 1 | import React, { useContext, useEffect, useState } from "react"; 2 | import { 3 | View, 4 | Text, 5 | StyleSheet, 6 | TextInput, 7 | TouchableOpacity, 8 | StatusBar, 9 | } from "react-native"; 10 | import SecureStoreModel from "../constants/SecureStoreModel"; 11 | import { DContexts } from "../contexts/DContexts"; 12 | import useStyles from "../constants/styles"; 13 | const EditUsername = () => { 14 | const { setUnameSet } = useContext(DContexts); 15 | const { isUnameSet } = useContext(DContexts); 16 | const [uname, setUname] = React.useState(""); 17 | const css = useStyles(); 18 | const { txtcolor } = useContext(DContexts); 19 | const { primarycolor } = useContext(DContexts); 20 | const { setMyUname } = useContext(DContexts); 21 | const handlePress = () => { 22 | SecureStoreModel.saveItem("username", uname); 23 | setMyUname(uname); 24 | setUnameSet(true); 25 | }; 26 | 27 | return ( 28 | <> 29 | 34 | 35 | Enter a nickname 36 | 37 | You can only change this one time! 38 | 39 | 47 | 48 | Proceed 49 | 50 | 51 | 52 | ); 53 | }; 54 | 55 | const styles = StyleSheet.create({ 56 | container: { 57 | flex: 1, 58 | 59 | margin: 20, 60 | paddingTop: 20, 61 | }, 62 | input: { 63 | fontSize: 17, 64 | marginTop: 30, 65 | marginBottom: 20, 66 | padding: 10, 67 | backgroundColor: "#f5f5f5", 68 | borderRadius: 10, 69 | }, 70 | 71 | btn: { 72 | padding: 20, 73 | backgroundColor: "#7856FF", 74 | margin: 10, 75 | alignItems: "center", 76 | borderRadius: 20, 77 | }, 78 | }); 79 | 80 | export default EditUsername; 81 | -------------------------------------------------------------------------------- /components/DialPad.js: -------------------------------------------------------------------------------- 1 | import { Ionicons } from "@expo/vector-icons"; 2 | import React, { useContext } from "react"; 3 | import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; 4 | import { DContexts } from "../contexts/DContexts"; 5 | const DialPad = ({ onPress }) => { 6 | const { bgcolor } = useContext(DContexts); 7 | 8 | const renderButton = (number) => { 9 | return ( 10 | onPress(number)} 14 | > 15 | {number} 16 | 17 | ); 18 | }; 19 | 20 | return ( 21 | 22 | 23 | {renderButton(1)} 24 | {renderButton(2)} 25 | {renderButton(3)} 26 | 27 | 28 | {renderButton(4)} 29 | {renderButton(5)} 30 | {renderButton(6)} 31 | 32 | 33 | {renderButton(7)} 34 | {renderButton(8)} 35 | {renderButton(9)} 36 | 37 | 38 | onPress("backspace")} 41 | > 42 | 43 | 44 | {renderButton(0)} 45 | 46 | 47 | 48 | ); 49 | }; 50 | 51 | const styles = StyleSheet.create({ 52 | container: { 53 | flexDirection: "column", 54 | justifyContent: "center", 55 | alignItems: "center", 56 | }, 57 | row: { 58 | flexDirection: "row", 59 | justifyContent: "center", 60 | alignItems: "center", 61 | maxWidth: "100%", 62 | }, 63 | button: { 64 | margin: 10, 65 | padding: 20, 66 | borderRadius: 30, 67 | backgroundColor: "#d5d5d5", 68 | alignItems: "center", 69 | justifyContent: "center", 70 | width: 60, 71 | height: 60, 72 | }, 73 | text: { 74 | color: "black", 75 | fontSize: 17, 76 | fontWeight: "bold", 77 | }, 78 | emptyButton: { 79 | width: 60, 80 | margin: 10, 81 | padding: 20, 82 | borderRadius: 30, 83 | height: 60, 84 | }, 85 | }); 86 | 87 | export default DialPad; 88 | -------------------------------------------------------------------------------- /components/CircularChip.js: -------------------------------------------------------------------------------- 1 | import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; 2 | import { Fontisto, Ionicons } from "@expo/vector-icons"; 3 | import react, { useContext } from "react"; 4 | import { DContexts } from "../contexts/DContexts"; 5 | 6 | import SecureStoreModel from "../constants/SecureStoreModel"; 7 | export default function CircularChip({ 8 | name, 9 | backcolor, 10 | color, 11 | 12 | type, 13 | opacity, 14 | }) { 15 | const { setOpacityColor } = useContext(DContexts); 16 | const { setPrimaryColor } = useContext(DContexts); 17 | const { setbgColor } = useContext(DContexts); 18 | const { setCardColor } = useContext(DContexts); 19 | const { settxtColor } = useContext(DContexts); 20 | const changeColor = () => { 21 | setPrimaryColor(backcolor); 22 | setOpacityColor(opacity); 23 | SecureStoreModel.saveItem("primarycolor", backcolor); 24 | SecureStoreModel.saveItem("opacitycolor", opacity); 25 | }; 26 | const changeTheme = () => { 27 | setbgColor(backcolor); 28 | 29 | SecureStoreModel.saveItem("bgcolor", backcolor); 30 | 31 | if (name == "Dark") { 32 | setCardColor("#273340"); 33 | settxtColor("white"); 34 | SecureStoreModel.saveItem("cardcolor", "#273340"); 35 | SecureStoreModel.saveItem("textcolor", "white"); 36 | } else if (name == "Light") { 37 | setCardColor("white"); 38 | settxtColor("black"); 39 | SecureStoreModel.saveItem("cardcolor", "white"); 40 | SecureStoreModel.saveItem("textcolor", "black"); 41 | } 42 | }; 43 | if (type == "theme") { 44 | return ( 45 | 49 | {name} 50 | 51 | ); 52 | } else if (type == "color") { 53 | return ( 54 | 58 | ); 59 | } 60 | } 61 | 62 | const styles = StyleSheet.create({ 63 | circle: { 64 | width: 70, 65 | height: 70, 66 | borderRadius: 50, 67 | margin: 5, 68 | justifyContent: "center", 69 | alignItems: "center", 70 | elevation: 10, 71 | }, 72 | dlistTop: { 73 | color: "grey", 74 | fontSize: 13, 75 | letterSpacing: 3, 76 | }, 77 | dlistMain: { 78 | fontWeight: "bold", 79 | fontSize: 19, 80 | }, 81 | }); 82 | -------------------------------------------------------------------------------- /screens/Diary.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect, useContext } from "react"; 2 | import { 3 | View, 4 | Text, 5 | ScrollView, 6 | SafeAreaView, 7 | TextInput, 8 | StyleSheet, 9 | } from "react-native"; 10 | import useStyles from "../constants/styles"; 11 | import DiaryTopBar from "../components/DiaryTopBar"; 12 | import { useNavigation, useRoute } from "@react-navigation/native"; 13 | import { getDiary } from "../constants/Database"; 14 | import { DContexts } from "../contexts/DContexts"; 15 | export default function Diary() { 16 | const navigation = useNavigation(); 17 | const route = useRoute(); 18 | const diaryid = route.params.id; 19 | console.log(diaryid); 20 | const [diary, setDiary] = useState([]); 21 | const [title, setTitle] = useState(""); 22 | const [content, setContent] = useState(""); 23 | const [day, setDay] = useState(null); 24 | const [month, setMonth] = useState(null); 25 | const [year, setYear] = useState(null); 26 | 27 | const { changedsomething } = useContext(DContexts); 28 | const { setChangedSomething } = useContext(DContexts); 29 | 30 | css = useStyles(); 31 | useEffect(() => { 32 | getDiary(diaryid) 33 | .then((data) => { 34 | if (data[0]) { 35 | setTitle(data[0].title); 36 | setContent(data[0].content); 37 | setDay(data[0].day); 38 | setMonth(data[0].monthname); 39 | setYear(data[0].year); 40 | setDiary(data); 41 | } 42 | }) 43 | .catch((error) => { 44 | console.error("Failed to get diaries:", error); 45 | }); 46 | }, [changedsomething]); 47 | 48 | const goToEdit = (did) => { 49 | navigation.navigate("Edit", { id: did }); 50 | }; 51 | return ( 52 | 53 | 54 | goToEdit(diaryid)} diaryid={diaryid} /> 55 | 56 | 57 | {day}, {month} {year} 58 | 59 | {title} 60 | {content} 61 | 62 | 63 | 64 | ); 65 | } 66 | const styles = StyleSheet.create({ 67 | title: { 68 | margin: 10, 69 | marginLeft: 0, 70 | marginTop: 1, 71 | padding: 5, 72 | fontSize: 28, 73 | fontWeight: "600", 74 | letterSpacing: 1, 75 | }, 76 | content: { 77 | fontSize: 16, 78 | lineHeight: 16, 79 | margin: 5, 80 | }, 81 | }); 82 | -------------------------------------------------------------------------------- /screens/EditPin.js: -------------------------------------------------------------------------------- 1 | import React, { useContext, useState } from "react"; 2 | import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; 3 | import DialPad from "../components/DialPad"; 4 | import SecureStoreModel from "../constants/SecureStoreModel"; 5 | import { DContexts } from "../contexts/DContexts"; 6 | import { useNavigation } from "@react-navigation/native"; 7 | import { Ionicons } from "@expo/vector-icons"; 8 | import useStyles from "../constants/styles"; 9 | const EditPin = () => { 10 | const [pin, setPin] = useState(""); 11 | const { primarycolor } = useContext(DContexts); 12 | const css = useStyles(); 13 | const { bgcolor } = useContext(DContexts); 14 | const navigation = useNavigation(); 15 | // Handle button press 16 | const handlePress = (value) => { 17 | if (value === "backspace") { 18 | // Handle backspace press 19 | setPin((prevPin) => prevPin.slice(0, -1)); 20 | } else { 21 | // Handle number press 22 | if (pin.length < 4) { 23 | const newPin = pin + value.toString(); 24 | setPin(newPin); 25 | 26 | // If the new pin length is exactly 4, automatically authenticate 27 | if (newPin.length === 4) { 28 | authenticatePin(newPin); 29 | } 30 | } 31 | } 32 | }; 33 | 34 | // Function to authenticate the PIN 35 | const authenticatePin = (pin) => { 36 | // Replace the following logic with your actual authentication logic 37 | setPin(""); 38 | SecureStoreModel.updateItem("pin", pin); 39 | 40 | navigation.navigate("Home"); 41 | alert("You have changed your pin successfully!"); 42 | }; 43 | 44 | return ( 45 | 46 | navigation.navigate("Home")} 49 | > 50 | 51 | 52 | 53 | 54 | Update your feelio pin: 55 | 56 | 57 | {"*".repeat(pin.length)} 58 | 59 | 60 | 61 | ); 62 | }; 63 | 64 | const styles = StyleSheet.create({ 65 | container: { 66 | flex: 1, 67 | justifyContent: "center", 68 | alignItems: "center", 69 | }, 70 | inputText: { 71 | fontSize: 20, 72 | marginBottom: 20, 73 | }, 74 | pin: { 75 | fontSize: 24, 76 | marginBottom: 20, 77 | }, 78 | }); 79 | 80 | export default EditPin; 81 | -------------------------------------------------------------------------------- /components/DiaryTopBar.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { View, Text, StyleSheet, TouchableOpacity, Alert } from "react-native"; 3 | import { Ionicons } from "@expo/vector-icons"; 4 | import { useNavigation } from "@react-navigation/native"; 5 | import { deleteDiaryById } from "../constants/Database"; 6 | import { DContexts } from "../contexts/DContexts"; 7 | import useStyles from "../constants/styles"; 8 | export default function DiaryTopBar({ acton, diaryid }) { 9 | const navigation = useNavigation(); 10 | const { setChangedSomething } = useContext(DContexts); 11 | 12 | const { primarycolor } = useContext(DContexts); 13 | css = useStyles(); 14 | const delDiary = async () => { 15 | console.log(diaryid); 16 | try { 17 | await deleteDiaryById(diaryid); 18 | 19 | setChangedSomething(Math.floor(Math.random() * (5000 - 0 + 1)) + 0); 20 | 21 | navigation.navigate("Home"); 22 | } catch (error) { 23 | console.error("Failed to delete Diary:", error); 24 | } 25 | }; 26 | const showAlert = () => 27 | Alert.alert( 28 | "Delete Diary", 29 | "Are you sure you want to delete?", 30 | [ 31 | { 32 | text: "Cancel", 33 | style: "cancel", 34 | }, 35 | { text: "Yes", onPress: delDiary }, 36 | ], 37 | { 38 | cancelable: true, 39 | } 40 | ); 41 | return ( 42 | 43 | navigation.goBack()} 46 | > 47 | 48 | 49 | 50 | Diary 51 | 52 | 53 | 54 | 55 | 56 | Edit 57 | 58 | 59 | 60 | 61 | 67 | 68 | 69 | 70 | ); 71 | } 72 | const styles = StyleSheet.create({ 73 | AddTopBar: { 74 | margin: 10, 75 | marginTop: 20, 76 | padding: 10, 77 | flexDirection: "row", 78 | justifyContent: "space-between", 79 | }, 80 | atp_icon_text1: { 81 | fontWeight: "700", 82 | fontSize: 18, 83 | margin: 3, 84 | }, 85 | atp_icon_text: { 86 | fontWeight: "600", 87 | fontSize: 16, 88 | margin: 3, 89 | }, 90 | atp_icon: { 91 | margin: 3, 92 | }, 93 | }); 94 | -------------------------------------------------------------------------------- /screens/ValidatePin.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState, useContext } from "react"; 2 | import { View, Text, StyleSheet, Alert, StatusBar } from "react-native"; 3 | import DialPad from "../components/DialPad"; 4 | import SecureStoreModel from "../constants/SecureStoreModel"; 5 | import { useNavigation } from "@react-navigation/native"; 6 | import useStyles from "../constants/styles"; 7 | import { DContexts } from "../contexts/DContexts"; 8 | 9 | const ValidatePin = () => { 10 | const navigation = useNavigation(); 11 | const [pin, setPin] = useState(""); 12 | const [mypin, setMyPin] = useState(""); 13 | const css = useStyles(); 14 | const { bgcolor } = useContext(DContexts); 15 | const { primarycolor } = useContext(DContexts); 16 | useEffect(() => { 17 | const fetchPin = async () => { 18 | const mpin = await SecureStoreModel.getItem("pin"); 19 | if (mpin !== null) { 20 | setMyPin(mpin); 21 | } 22 | }; 23 | fetchPin(); 24 | }, []); 25 | // Handle button press 26 | const handlePress = (value) => { 27 | if (value === "backspace") { 28 | // Handle backspace press 29 | setPin((prevPin) => prevPin.slice(0, -1)); 30 | } else { 31 | // Handle number press 32 | if (pin.length < 4) { 33 | const newPin = pin + value.toString(); 34 | setPin(newPin); 35 | 36 | // If the new pin length is exactly 4, automatically authenticate 37 | if (newPin.length === 4) { 38 | authenticatePin(newPin); 39 | } 40 | } 41 | } 42 | }; 43 | 44 | // Function to authenticate the PIN 45 | const authenticatePin = (pin) => { 46 | // Replace the following logic with your actual authentication logic 47 | if (pin === mypin) { 48 | // Example PIN for demonstration purposes 49 | navigation.navigate("HomeTabs"); 50 | } else { 51 | Alert.alert("Failure", "Invalid PIN. Try again."); 52 | // Clear the PIN after unsuccessful authentication 53 | setPin(""); 54 | } 55 | }; 56 | 57 | return ( 58 | <> 59 | 64 | 65 | 66 | Enter your 4-digit Feelio PIN: 67 | 68 | 69 | {"*".repeat(pin.length)} 70 | 71 | 72 | 73 | 74 | ); 75 | }; 76 | 77 | const styles = StyleSheet.create({ 78 | container: { 79 | flex: 1, 80 | justifyContent: "center", 81 | alignItems: "center", 82 | }, 83 | inputText: { 84 | fontSize: 20, 85 | marginBottom: 20, 86 | }, 87 | pin: { 88 | fontSize: 24, 89 | marginBottom: 20, 90 | }, 91 | }); 92 | 93 | export default ValidatePin; 94 | -------------------------------------------------------------------------------- /ios/feelio/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | #import 4 | #import 5 | 6 | @implementation AppDelegate 7 | 8 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 9 | { 10 | self.moduleName = @"main"; 11 | 12 | // You can add your custom initial props in the dictionary below. 13 | // They will be passed down to the ViewController used by React Native. 14 | self.initialProps = @{}; 15 | 16 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 17 | } 18 | 19 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 20 | { 21 | return [self getBundleURL]; 22 | } 23 | 24 | - (NSURL *)getBundleURL 25 | { 26 | #if DEBUG 27 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"]; 28 | #else 29 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 30 | #endif 31 | } 32 | 33 | // Linking API 34 | - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { 35 | return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; 36 | } 37 | 38 | // Universal Links 39 | - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { 40 | BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; 41 | return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; 42 | } 43 | 44 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 45 | - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 46 | { 47 | return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 48 | } 49 | 50 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 51 | - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 52 | { 53 | return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; 54 | } 55 | 56 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 57 | - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 58 | { 59 | return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; 60 | } 61 | 62 | @end 63 | -------------------------------------------------------------------------------- /components/DiaryList.js: -------------------------------------------------------------------------------- 1 | import { View, Text, StyleSheet, TouchableOpacity } from "react-native"; 2 | import { Ionicons } from "@expo/vector-icons"; 3 | import { useNavigation } from "@react-navigation/native"; 4 | import { DContexts } from "../contexts/DContexts"; 5 | import React, { useContext } from "react"; 6 | import useStyles from "../constants/styles"; 7 | 8 | export default function ({ id, title, timestamp }) { 9 | const navigation = useNavigation(); 10 | const { primarycolor } = useContext(DContexts); 11 | const { txtcolor } = useContext(DContexts); 12 | const { cardcolor } = useContext(DContexts); 13 | 14 | css = useStyles(); 15 | const goToDiary = (did) => { 16 | navigation.navigate("Diary", { id: did }); 17 | }; 18 | 19 | const date = new Date(timestamp * 1000); 20 | 21 | const day = date.getDate(); 22 | const monthIndex = date.getMonth(); 23 | const year = date.getFullYear(); 24 | 25 | // Map month index to month name 26 | const monthNames = [ 27 | "January", 28 | "February", 29 | "March", 30 | "April", 31 | "May", 32 | "June", 33 | "July", 34 | "August", 35 | "September", 36 | "October", 37 | "November", 38 | "December", 39 | ]; 40 | const month = monthNames[monthIndex]; 41 | 42 | // Extract hour and minute 43 | let hour = date.getHours(); // Hour in 24-hour format (0-23) 44 | const minute = date.getMinutes(); // Minute (0-59) 45 | 46 | // Determine AM/PM and convert hour to 12-hour format 47 | const amPm = hour >= 12 ? "PM" : "AM"; 48 | hour = hour % 12; 49 | if (hour === 0) { 50 | hour = 12; // Adjust for 12-hour format (12 instead of 0) 51 | } 52 | 53 | // Format minute to always display two digits 54 | const formattedMinute = minute < 10 ? `0${minute}` : minute; 55 | 56 | return ( 57 | goToDiary(id)} 59 | style={{ backgroundColor: cardcolor, ...styles.dlist }} 60 | > 61 | 62 | 63 | 64 | 65 | 66 | {hour}:{formattedMinute} {amPm} {day},{month} {year} 67 | 68 | {title} 69 | 70 | 71 | 72 | 73 | 74 | 75 | ); 76 | } 77 | 78 | const styles = StyleSheet.create({ 79 | dlist: { 80 | margin: 14, 81 | padding: 15, 82 | marginBottom: 5, 83 | borderRadius: 20, 84 | flexDirection: "row", 85 | justifyContent: "space-between", 86 | }, 87 | dlistTop: { 88 | color: "grey", 89 | fontSize: 13, 90 | letterSpacing: 1, 91 | fontFamily: "Poppins", 92 | }, 93 | dlistMain: { 94 | fontWeight: "600", 95 | fontSize: 17, 96 | }, 97 | }); 98 | -------------------------------------------------------------------------------- /ios/feelio/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSSpeechRecognitionUsageDescription 6 | We use speech recognition to enhance user experience by allowing voice input. 7 | 8 | CADisableMinimumFrameDurationOnPhone 9 | 10 | CFBundleDevelopmentRegion 11 | $(DEVELOPMENT_LANGUAGE) 12 | CFBundleDisplayName 13 | feelio 14 | CFBundleExecutable 15 | $(EXECUTABLE_NAME) 16 | CFBundleIdentifier 17 | $(PRODUCT_BUNDLE_IDENTIFIER) 18 | CFBundleInfoDictionaryVersion 19 | 6.0 20 | CFBundleName 21 | $(PRODUCT_NAME) 22 | CFBundlePackageType 23 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 24 | CFBundleShortVersionString 25 | 1.0.0 26 | CFBundleSignature 27 | ???? 28 | CFBundleURLTypes 29 | 30 | 31 | CFBundleURLSchemes 32 | 33 | y 34 | 35 | 36 | 37 | CFBundleVersion 38 | 1 39 | LSRequiresIPhoneOS 40 | 41 | NSAppTransportSecurity 42 | 43 | NSAllowsArbitraryLoads 44 | 45 | NSAllowsLocalNetworking 46 | 47 | 48 | NSFaceIDUsageDescription 49 | Allow $(PRODUCT_NAME) to access your Face ID biometric data. 50 | NSLocationAlwaysAndWhenInUseUsageDescription 51 | Allow $(PRODUCT_NAME) to access your location 52 | NSLocationAlwaysUsageDescription 53 | Allow $(PRODUCT_NAME) to access your location 54 | NSLocationWhenInUseUsageDescription 55 | Allow $(PRODUCT_NAME) to access your location 56 | UIAppFonts 57 | 58 | poppins.ttf 59 | 60 | UILaunchStoryboardName 61 | SplashScreen 62 | UIRequiredDeviceCapabilities 63 | 64 | armv7 65 | 66 | UIRequiresFullScreen 67 | 68 | UIStatusBarStyle 69 | UIStatusBarStyleDefault 70 | UISupportedInterfaceOrientations 71 | 72 | UIInterfaceOrientationPortrait 73 | UIInterfaceOrientationPortraitUpsideDown 74 | 75 | UISupportedInterfaceOrientations~ipad 76 | 77 | UIInterfaceOrientationPortrait 78 | UIInterfaceOrientationPortraitUpsideDown 79 | UIInterfaceOrientationLandscapeLeft 80 | UIInterfaceOrientationLandscapeRight 81 | 82 | UIUserInterfaceStyle 83 | Light 84 | UIViewControllerBasedStatusBarAppearance 85 | 86 | 87 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") 2 | require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") 3 | 4 | require 'json' 5 | podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} 6 | 7 | ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' 8 | ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] 9 | 10 | platform :ios, podfile_properties['ios.deploymentTarget'] || '13.4' 11 | install! 'cocoapods', 12 | :deterministic_uuids => false 13 | 14 | prepare_react_native_project! 15 | 16 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 17 | # because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this, 18 | # you can also exclude `react-native-flipper` in `react-native.config.js` 19 | # 20 | # ```js 21 | # module.exports = { 22 | # dependencies: { 23 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 24 | # } 25 | # } 26 | # ``` 27 | flipper_config = FlipperConfiguration.disabled 28 | if ENV['NO_FLIPPER'] == '1' then 29 | # Explicitly disabled through environment variables 30 | flipper_config = FlipperConfiguration.disabled 31 | elsif podfile_properties.key?('ios.flipper') then 32 | # Configure Flipper in Podfile.properties.json 33 | if podfile_properties['ios.flipper'] == 'true' then 34 | flipper_config = FlipperConfiguration.enabled(["Debug", "Release"]) 35 | elsif podfile_properties['ios.flipper'] != 'false' then 36 | flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] }) 37 | end 38 | end 39 | 40 | target 'feelio' do 41 | use_expo_modules! 42 | config = use_native_modules! 43 | 44 | use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] 45 | use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] 46 | 47 | use_react_native!( 48 | :path => config[:reactNativePath], 49 | :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', 50 | # An absolute path to your application root. 51 | :app_path => "#{Pod::Config.instance.installation_root}/..", 52 | # Note that if you have use_frameworks! enabled, Flipper will not work if enabled 53 | :flipper_configuration => flipper_config 54 | ) 55 | 56 | post_install do |installer| 57 | react_native_post_install( 58 | installer, 59 | config[:reactNativePath], 60 | :mac_catalyst_enabled => false 61 | ) 62 | 63 | # This is necessary for Xcode 14, because it signs resource bundles by default 64 | # when building for devices. 65 | installer.target_installation_results.pod_target_installation_results 66 | .each do |pod_name, target_installation_result| 67 | target_installation_result.resource_bundle_targets.each do |resource_bundle_target| 68 | resource_bundle_target.build_configurations.each do |config| 69 | config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' 70 | end 71 | end 72 | end 73 | end 74 | 75 | post_integrate do |installer| 76 | begin 77 | expo_patch_react_imports!(installer) 78 | rescue => e 79 | Pod::UI.warn e 80 | end 81 | end 82 | end 83 | -------------------------------------------------------------------------------- /screens/Edit.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect, useContext } from "react"; 2 | import { 3 | View, 4 | Text, 5 | ScrollView, 6 | SafeAreaView, 7 | TextInput, 8 | StyleSheet, 9 | } from "react-native"; 10 | import useStyles from "../constants/styles"; 11 | import EditTopBar from "../components/EditTopBar"; 12 | import { useRoute, useNavigation } from "@react-navigation/native"; 13 | import { getDiary, updateDiary } from "../constants/Database"; 14 | import { DContexts } from "../contexts/DContexts"; 15 | 16 | export default function Edit() { 17 | const css = useStyles(); 18 | const route = useRoute(); 19 | const navigation = useNavigation(); 20 | const diaryid = route.params.id; 21 | const [text, onChangeTitle] = React.useState(""); 22 | const [value, onChangeText] = React.useState(""); 23 | const [diary, setDiary] = useState([]); 24 | const [title, setTitle] = useState(""); 25 | const [content, setContent] = useState(""); 26 | const [day, setDay] = useState(null); 27 | const [month, setMonth] = useState(null); 28 | const [year, setYear] = useState(null); 29 | const { changedsomething } = useContext(DContexts); 30 | const { setChangedSomething } = useContext(DContexts); 31 | const { txtcolor } = useContext(DContexts); 32 | useEffect(() => { 33 | getDiary(diaryid) 34 | .then((data) => { 35 | onChangeTitle(data[0].title); 36 | onChangeText(data[0].content); 37 | setDay(data[0].day); 38 | setMonth(data[0].monthname); 39 | setYear(data[0].year); 40 | setDiary(data); 41 | }) 42 | .catch((error) => { 43 | console.error("Failed to get diaries:", error); 44 | }); 45 | }, []); 46 | 47 | const editDiary = async () => { 48 | try { 49 | await updateDiary(diaryid, text, value); 50 | console.log(value); 51 | console.log("Diary Updated Successfully"); 52 | setChangedSomething(Math.floor(Math.random() * (5000 - 0 + 1)) + 0); 53 | 54 | navigation.navigate("Diary", { id: diaryid }); 55 | } catch (error) { 56 | console.error("Failed to insert Diary:", error); 57 | } 58 | }; 59 | 60 | return ( 61 | 62 | 63 | 64 | 65 | Title 66 | 73 | Text 74 | 75 | onChangeText(text)} 82 | value={value} 83 | style={{ ...css.txt, padding: 15 }} 84 | textAlignVertical="top" 85 | autoFocus={true} 86 | placeholderTextColor={txtcolor} 87 | /> 88 | 89 | 90 | 91 | 92 | ); 93 | } 94 | const styles = StyleSheet.create({ 95 | title_input: { 96 | margin: 15, 97 | padding: 5, 98 | fontSize: 17, 99 | }, 100 | }); 101 | -------------------------------------------------------------------------------- /screens/Settings.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { 3 | View, 4 | Text, 5 | ScrollView, 6 | SafeAreaView, 7 | StyleSheet, 8 | TouchableOpacity, 9 | } from "react-native"; 10 | import useStyles from "../constants/styles"; 11 | import CircularChip from "../components/CircularChip"; 12 | import { useNavigation } from "@react-navigation/native"; 13 | import { DContexts } from "../contexts/DContexts"; 14 | export default function Settings() { 15 | const css = useStyles(); 16 | const { primarycolor } = useContext(DContexts); 17 | const navigation = useNavigation(); 18 | return ( 19 | 20 | 21 | Settings 22 | 23 | Theme 24 | 25 | 30 | 36 | 42 | 43 | 44 | Color 45 | 46 | 51 | 58 | 59 | 66 | 73 | 80 | 87 | 88 | navigation.navigate("EditPin")}> 89 | 90 | 91 | Change Pin 92 | 93 | 94 | 95 | 96 | 97 | ); 98 | } 99 | const styles = StyleSheet.create({ 100 | chsroll: { 101 | padding: 10, 102 | }, 103 | cta: { 104 | margin: 15, 105 | justifyContent: "center", 106 | alignItems: "center", 107 | 108 | color: "#fff", 109 | padding: 20, 110 | borderRadius: 15, 111 | }, 112 | }); 113 | -------------------------------------------------------------------------------- /components/Tabs.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from "react"; 2 | import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; 3 | import Home from "../screens/Home"; 4 | import Add from "../screens/Add"; 5 | import Settings from "../screens/Settings"; 6 | import { Feather, Ionicons } from "@expo/vector-icons"; 7 | import { View } from "react-native"; 8 | import { DContexts } from "../contexts/DContexts"; 9 | 10 | const Tab = createBottomTabNavigator(); 11 | export default function HomeTabs() { 12 | const { primarycolor } = useContext(DContexts); 13 | const { bgcolor } = useContext(DContexts); 14 | const { cardcolor } = useContext(DContexts); 15 | return ( 16 | 17 | 36 | ( 42 | 43 | ), 44 | }} 45 | /> 46 | ( 52 | 64 | 65 | 66 | ), 67 | }} 68 | /> 69 | ( 75 | 87 | 88 | 89 | ), 90 | }} 91 | /> 92 | 93 | ( 99 | 100 | ), 101 | }} 102 | /> 103 | 104 | 105 | ); 106 | } 107 | -------------------------------------------------------------------------------- /ios/feelio.xcodeproj/xcshareddata/xcschemes/feelio.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /components/Dashboard.js: -------------------------------------------------------------------------------- 1 | import React, { useContext, useEffect, useState } from "react"; 2 | import { View, Text, StyleSheet } from "react-native"; 3 | import ShimmerPlaceholder from "react-native-shimmer-placeholder"; 4 | import { fetchWeatherData } from "../api/weatherAPI"; 5 | import { getCurrentLocation } from "../utils/location"; 6 | import { DContexts } from "../contexts/DContexts"; 7 | import { LinearGradient } from "expo-linear-gradient"; 8 | const Dashboard = () => { 9 | const [weatherData, setWeatherData] = useState(null); 10 | const [locationData, setLocationData] = useState(null); 11 | const [isLoading, setIsLoading] = useState(true); 12 | const { primarycolor, opacitycolor } = useContext(DContexts); 13 | 14 | // useEffect(() => { 15 | // getCurrentLocation() 16 | // .then(({ latitude, longitude }) => { 17 | // fetchWeatherData(latitude, longitude) 18 | // .then((data) => { 19 | // setWeatherData(data.current); 20 | // setLocationData(data.location); 21 | // setIsLoading(false); // Data has loaded, stop loading 22 | // }) 23 | // .catch((error) => { 24 | // console.error("Error fetching weather data:", error); 25 | // setIsLoading(false); // Stop loading on error 26 | // }); 27 | // }) 28 | // .catch((error) => { 29 | // console.error("Error getting current location:", error); 30 | // setIsLoading(false); // Stop loading on error 31 | // }); 32 | // }, []); 33 | 34 | return ( 35 | 40 | 41 | 42 | Today 43 | {isLoading ? ( 44 | 45 | ) : ( 46 | 47 | {/* {locationData.localtime.split(" ")[0]} */} 48 | 49 | )} 50 | 51 | 52 | {isLoading ? ( 53 | 54 | ) : ( 55 | 56 | {/* {weatherData.temp_c}°C */} 57 | 58 | )} 59 | 60 | 67 | {isLoading ? ( 68 | 69 | ) : ( 70 | 71 | {locationData.name}, {locationData.region}, {locationData.country} 72 | 73 | )} 74 | 75 | 76 | 77 | ); 78 | }; 79 | 80 | const styles = StyleSheet.create({ 81 | dashboard: { 82 | padding: 5, 83 | margin: 10, 84 | marginTop: 10, 85 | borderRadius: 10, 86 | color: "white", 87 | justifyContent: "space-between", 88 | elevation: 10, 89 | }, 90 | dashboard_up: { 91 | flexDirection: "row", 92 | justifyContent: "space-between", 93 | }, 94 | dashboard_up_text1: { 95 | color: "#f2f2f2", 96 | fontSize: 17, 97 | fontWeight: "bold", 98 | margin: 5, 99 | }, 100 | dashboard_up_text2: { 101 | color: "#f2f2f2", 102 | fontSize: 12, 103 | margin: 3, 104 | }, 105 | dashboard_temp: { 106 | fontSize: 35, 107 | fontWeight: "bold", 108 | margin: 3, 109 | color: "#ffffff", 110 | }, 111 | shimmerText: { 112 | width: "30%", 113 | height: 18, 114 | borderRadius: 5, 115 | marginVertical: 5, 116 | opacity: 6, 117 | }, 118 | }); 119 | 120 | export default Dashboard; 121 | -------------------------------------------------------------------------------- /components/Voice.js: -------------------------------------------------------------------------------- 1 | import React, { useContext, useEffect, useState } from "react"; 2 | import { 3 | StyleSheet, 4 | Image, 5 | Pressable, 6 | View, 7 | Text, 8 | ScrollView, 9 | } from "react-native"; 10 | import Voice from "@react-native-voice/voice"; 11 | import { SafeAreaView } from "react-native-safe-area-context"; 12 | import { DContexts } from "../contexts/DContexts"; 13 | 14 | export default function SpeechToText() { 15 | const [speechStarted, setSpeechStarted] = useState(false); 16 | const [results, setResults] = useState([]); 17 | const [date, setDate] = useState(""); 18 | const [addedNote, setAddedNote] = useState(false); 19 | const { setChangedSomething } = useContext(DContexts); 20 | 21 | useEffect(() => { 22 | if (results) { 23 | setChangedSomething(results); 24 | } 25 | }, [results]); 26 | const startSpeech = async () => { 27 | try { 28 | await Voice.start("en-US"); 29 | setSpeechStarted(true); 30 | const today = new Date(); 31 | setDate(today.toLocaleDateString()); 32 | } catch (error) { 33 | console.error("Error starting speech recognition: ", error); 34 | } 35 | }; 36 | 37 | const handleStop = async () => { 38 | try { 39 | await Voice.stop(); 40 | setSpeechStarted(false); 41 | setDate(""); 42 | setResults([]); 43 | } catch (error) { 44 | console.error("Error stopping speech recognition: ", error); 45 | } 46 | }; 47 | 48 | const onSpeechResults = (event) => { 49 | setResults(event.value); 50 | }; 51 | const onSpeechError = (event) => { 52 | console.error("Speech recognition error: ", event.error); 53 | setSpeechStarted(false); 54 | setDate(""); 55 | setResults([]); 56 | }; 57 | 58 | useEffect(() => { 59 | Voice.onSpeechResults = onSpeechResults; 60 | Voice.onSpeechError = onSpeechError; 61 | return () => { 62 | Voice.destroy().then(Voice.removeAllListeners); 63 | }; 64 | }, []); 65 | 66 | return ( 67 | 68 | Save and Organize your notes 69 | 70 | Today's notes:{" "} 71 | 72 | 73 | 74 | {date ? Date: {date} : null} 75 | 76 | {results.map((result, index) => ( 77 | {result} 78 | ))} 79 | 80 | 81 | 82 | 83 | {!speechStarted ? ( 84 | 85 | {/* */} 89 | Start 90 | 91 | ) : ( 92 | 93 | {/* */} 97 | stop 98 | 99 | )} 100 | {/* */} 101 | 102 | 103 | ); 104 | } 105 | 106 | const styles = StyleSheet.create({ 107 | container: { 108 | flex: 1, 109 | alignItems: "center", 110 | justifyContent: "center", 111 | }, 112 | card: { 113 | flex: 1, 114 | alignItems: "center", 115 | justifyContent: "center", 116 | marginTop: 20, 117 | backgroundColor: "white", 118 | borderWidth: 1, 119 | borderColor: "grey", 120 | width: "80%", 121 | paddingHorizontal: 40, 122 | paddingBottom: 20, 123 | borderRadius: 10, 124 | maxHeight: 200, 125 | minHeight: 200, 126 | overflow: "hidden", 127 | }, 128 | heading: { 129 | color: "red", 130 | marginBottom: 10, 131 | }, 132 | scrollView: { 133 | width: "100%", 134 | marginTop: 10, 135 | }, 136 | buttonContainer: { 137 | justifyContent: "center", 138 | alignItems: "center", 139 | marginVertical: 20, 140 | }, 141 | buttonImage: { 142 | width: 50, 143 | height: 50, 144 | }, 145 | title: { 146 | gap: 8, 147 | marginBottom: 8, 148 | fontWeight: "bold", 149 | fontSize: 24, 150 | paddingHorizontal: 20, 151 | }, 152 | }); 153 | -------------------------------------------------------------------------------- /constants/Database.js: -------------------------------------------------------------------------------- 1 | import * as SQLite from "expo-sqlite"; 2 | 3 | // Open or create the database (db will be created if it doesn't exist) 4 | const db = SQLite.openDatabase("feelio.db"); 5 | 6 | // Function to initialize the database (e.g., create tables) 7 | const initializeDatabase = () => { 8 | db.transaction((tx) => { 9 | tx.executeSql( 10 | `CREATE TABLE IF NOT EXISTS diary ( 11 | id INTEGER PRIMARY KEY AUTOINCREMENT, 12 | title TEXT, 13 | content TEXT, 14 | year INTEGER, 15 | month INTEGER, 16 | day INTEGER, 17 | hour INTEGER, 18 | minute INTEGER, 19 | monthname TEXT, 20 | timestamp TEXT 21 | );` 22 | ); 23 | }); 24 | }; 25 | 26 | // Function to insert a diary into the database 27 | const insertDiary = ( 28 | title, 29 | content, 30 | year, 31 | month, 32 | day, 33 | hour, 34 | minute, 35 | monthname, 36 | timestamp 37 | ) => { 38 | return new Promise((resolve, reject) => { 39 | db.transaction((tx) => { 40 | tx.executeSql( 41 | "INSERT INTO diary (title, content, year, month, day,hour,minute,monthname,timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", 42 | [title, content, year, month, day, hour, minute, monthname, timestamp], 43 | (_, results) => { 44 | resolve(results); 45 | }, 46 | (_, error) => { 47 | reject(error); 48 | } 49 | ); 50 | }); 51 | }); 52 | }; 53 | 54 | const updateDiary = (id, title, content) => { 55 | return new Promise((resolve, reject) => { 56 | db.transaction((tx) => { 57 | tx.executeSql( 58 | "UPDATE diary SET title=?,content=? WHERE id=?", 59 | [title, content, id], 60 | (_, results) => { 61 | resolve(results); 62 | }, 63 | (_, error) => { 64 | reject(error); 65 | } 66 | ); 67 | }); 68 | }); 69 | }; 70 | 71 | // Function to query all diaries from the database 72 | const getAllDiaries = (year, month) => { 73 | return new Promise((resolve, reject) => { 74 | db.transaction((tx) => { 75 | tx.executeSql( 76 | "SELECT * FROM diary WHERE year=? AND monthname=? ORDER BY id DESC", 77 | [year, month], 78 | (_, results) => { 79 | const rows = results.rows; 80 | const diaries = []; 81 | for (let i = 0; i < rows.length; i++) { 82 | diaries.push(rows.item(i)); 83 | } 84 | resolve(diaries); 85 | }, 86 | (_, error) => { 87 | reject(error); 88 | } 89 | ); 90 | }); 91 | }); 92 | }; 93 | 94 | //getDiary 95 | const getDiary = (id) => { 96 | return new Promise((resolve, reject) => { 97 | db.transaction((tx) => { 98 | tx.executeSql( 99 | "SELECT * FROM diary WHERE id=?", 100 | [id], 101 | (_, results) => { 102 | const rows = results.rows; 103 | const diaries = []; 104 | for (let i = 0; i < rows.length; i++) { 105 | diaries.push(rows.item(i)); 106 | } 107 | resolve(diaries); 108 | }, 109 | (_, error) => { 110 | reject(error); 111 | } 112 | ); 113 | }); 114 | }); 115 | }; 116 | 117 | // Function to delete a diary from the database by ID 118 | const deleteDiaryById = (id) => { 119 | return new Promise((resolve, reject) => { 120 | db.transaction((tx) => { 121 | tx.executeSql( 122 | "DELETE FROM diary WHERE id = ?", 123 | [id], 124 | (_, results) => { 125 | resolve(results); 126 | }, 127 | (_, error) => { 128 | reject(error); 129 | } 130 | ); 131 | }); 132 | }); 133 | }; 134 | const clearTable = (tableName) => { 135 | return new Promise((resolve, reject) => { 136 | db.transaction((tx) => { 137 | tx.executeSql( 138 | `DELETE FROM ${tableName}`, 139 | [], 140 | (_, results) => { 141 | // Resolve the promise when the query is successful 142 | resolve(results); 143 | }, 144 | (_, error) => { 145 | // Reject the promise if an error occurs 146 | reject(error); 147 | } 148 | ); 149 | }); 150 | }); 151 | }; 152 | 153 | // Export the functions for use in other files 154 | export { 155 | initializeDatabase, 156 | insertDiary, 157 | getAllDiaries, 158 | deleteDiaryById, 159 | clearTable, 160 | getDiary, 161 | updateDiary, 162 | }; 163 | -------------------------------------------------------------------------------- /screens/Add.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState, useContext } from "react"; 2 | import { 3 | View, 4 | Text, 5 | ScrollView, 6 | SafeAreaView, 7 | TextInput, 8 | StyleSheet, 9 | Image 10 | } from "react-native"; 11 | import useStyles from "../constants/styles"; 12 | import AddTopBar from "../components/AddTopBar"; 13 | import { insertDiary } from "../constants/Database"; 14 | import { useNavigation } from "@react-navigation/native"; 15 | import { DContexts } from "../contexts/DContexts"; 16 | import SecureStoreModel from "../constants/SecureStoreModel"; 17 | import SpeechToText from "../components/Voice"; 18 | export default function Add() { 19 | SecureStoreModel.itemExists("myKey").then((exists) => { 20 | console.log(`Does "myKey" exist? ${exists}`); 21 | }); 22 | const css = useStyles(); 23 | //Voice boolean state 24 | const [voiceMode,setVoiceMode]=useState(false) 25 | const navigation = useNavigation(); 26 | const [text, onChangeTitle] = React.useState(""); 27 | const [value, onChangeText] = React.useState(""); 28 | const { changedsomething } = useContext(DContexts); 29 | const { setChangedSomething } = useContext(DContexts); 30 | const { txtcolor } = useContext(DContexts); 31 | 32 | const date = new Date(); 33 | const day = date.getDate(); 34 | const month = date.getMonth() + 1; 35 | const monthIndex = date.getMonth(); 36 | const monthNames = [ 37 | "January", 38 | "February", 39 | "March", 40 | "April", 41 | "May", 42 | "June", 43 | "July", 44 | "August", 45 | "September", 46 | "October", 47 | "November", 48 | "December", 49 | ]; 50 | const monthName = monthNames[monthIndex]; 51 | const year = date.getFullYear(); 52 | const unixTimestampMillis = date.getTime(); 53 | const unixTimestampSeconds = Math.floor(unixTimestampMillis / 1000); 54 | const hour = date.getHours(); 55 | const minute = date.getMinutes(); 56 | const submitDiary = async () => { 57 | try { 58 | await insertDiary( 59 | text, 60 | value, 61 | year, 62 | month, 63 | day, 64 | hour, 65 | minute, 66 | monthName, 67 | unixTimestampSeconds 68 | ); 69 | 70 | setChangedSomething(Math.floor(Math.random() * (5000 - 0 + 1)) + 0); 71 | onChangeText(""); 72 | onChangeTitle(""); 73 | navigation.navigate("Home"); 74 | } catch (error) { 75 | console.error("Failed to insert Diary:", error); 76 | } 77 | }; 78 | const navigationState = navigation.getState(); 79 | const routeName = navigationState.routes[navigationState.index].name; 80 | useEffect(()=>{ 81 | //Checking Tab 82 | if(routeName=='mic'){ 83 | setVoiceMode(true) 84 | 85 | } 86 | 87 | },[]) 88 | useEffect(()=>{ 89 | if(changedsomething){ 90 | console.log("CHANGES ",changedsomething) 91 | onChangeText(changedsomething.toString()) 92 | 93 | } 94 | },[changedsomething]) 95 | return ( 96 | 97 | 98 | 99 | {/* Adding new view when Voice is present */} 100 | {!voiceMode? 101 | 102 | Title 103 | 111 | Text 112 | 113 | onChangeText(text)} 120 | value={value} 121 | style={{ ...css.txt, padding: 15 }} 122 | textAlignVertical="top" 123 | placeholderTextColor={txtcolor} 124 | /> 125 | 126 | : 127 | <> 128 | 129 | 130 | 131 | 133 | 134 | 135 | 136 | 137 | } 138 | 139 | 140 | ); 141 | } 142 | const styles = StyleSheet.create({ 143 | title_input: { 144 | margin: 15, 145 | padding: 5, 146 | fontSize: 17, 147 | }, 148 | }); 149 | -------------------------------------------------------------------------------- /ios/feelio/SplashScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /screens/Home.js: -------------------------------------------------------------------------------- 1 | import { 2 | ImageBackground, 3 | StyleSheet, 4 | Text, 5 | View, 6 | ScrollView, 7 | TouchableOpacity, 8 | StatusBar, 9 | } from "react-native"; 10 | import { Fontisto, Ionicons } from "@expo/vector-icons"; 11 | 12 | import SecureStoreModel from "../constants/SecureStoreModel"; 13 | import Yearbtn from "../components/Yearbtn"; 14 | import ChipNav from "../components/ChipNav"; 15 | import DiaryList from "../components/DiaryList"; 16 | import { initializeDatabase, getAllDiaries } from "../constants/Database"; 17 | import { DContexts } from "../contexts/DContexts"; 18 | import { useState, useEffect, useContext } from "react"; 19 | import NoResultComponent from "../components/NoResultComponent"; 20 | import useStyles from "../constants/styles"; 21 | import Dashboard from "../components/Dashboard"; 22 | export default function Home() { 23 | const date = new Date(); 24 | const monthIndex = date.getMonth(); 25 | const css = useStyles(); 26 | const monthNames = [ 27 | "January", 28 | "February", 29 | "March", 30 | "April", 31 | "May", 32 | "June", 33 | "July", 34 | "August", 35 | "September", 36 | "October", 37 | "November", 38 | "December", 39 | ]; 40 | const monthName = monthNames[monthIndex]; 41 | const currentMonthIndex = monthNames.indexOf(monthName); 42 | 43 | // Create a new array with the current month and year first 44 | const rearrangedMonths = [ 45 | ...monthNames.slice(currentMonthIndex), 46 | ...monthNames.slice(0, currentMonthIndex), 47 | ]; 48 | const currentYear = date.getFullYear(); 49 | const pastTenYears = []; 50 | for (let i = 0; i < 10; i++) { 51 | pastTenYears.push(currentYear - i); 52 | } 53 | // States 54 | 55 | const [yearfilter, setyearfilter] = useState(currentYear); 56 | const [monthfilter, setmonthfilter] = useState(monthName); 57 | const [diaries, setDiaries] = useState([]); 58 | const { changedsomething } = useContext(DContexts); 59 | const { primarycolor } = useContext(DContexts); 60 | const { myuname } = useContext(DContexts); 61 | const { bgcolor } = useContext(DContexts); 62 | 63 | const { setbgColor } = useContext(DContexts); 64 | const { setCardColor } = useContext(DContexts); 65 | const { settxtColor } = useContext(DContexts); 66 | useEffect(() => { 67 | getAllDiaries(yearfilter, monthfilter) 68 | .then((diary) => { 69 | setDiaries(diary); 70 | }) 71 | .catch((error) => { 72 | console.error("Failed to get diaries:", error); 73 | }); 74 | }, [yearfilter, monthfilter, changedsomething]); 75 | if (bgcolor == "#f5f5f5") { 76 | lightmode = true; 77 | } else { 78 | lightmode = false; 79 | } 80 | const changeTheme = () => { 81 | if (lightmode) { 82 | setbgColor("#15202B"); 83 | 84 | SecureStoreModel.saveItem("bgcolor", "#15202B"); 85 | 86 | setCardColor("#273340"); 87 | settxtColor("white"); 88 | SecureStoreModel.saveItem("cardcolor", "#273340"); 89 | SecureStoreModel.saveItem("textcolor", "white"); 90 | } else { 91 | setbgColor("#f5f5f5"); 92 | 93 | SecureStoreModel.saveItem("bgcolor", "#f5f5f5"); 94 | 95 | setCardColor("white"); 96 | settxtColor("black"); 97 | SecureStoreModel.saveItem("cardcolor", "white"); 98 | SecureStoreModel.saveItem("textcolor", "black"); 99 | } 100 | }; 101 | return ( 102 | <> 103 | 108 | 109 | 110 | 111 | Good day! 112 | {myuname} 113 | 114 | {lightmode ? ( 115 | 116 | 121 | 122 | ) : ( 123 | 124 | 130 | 131 | )} 132 | 133 | 134 | 135 | 136 | 137 | 142 | 143 | {pastTenYears.map((year) => ( 144 | setyearfilter(year)} key={year}> 145 | 146 | 147 | ))} 148 | 149 | 150 | 151 | 152 | 157 | 158 | {rearrangedMonths.map((month) => ( 159 | setmonthfilter(month)} 162 | > 163 | 164 | 165 | ))} 166 | 167 | 168 | {diaries.length > 0 ? ( 169 | diaries.map((diary, index) => ( 170 | // Assign a unique key prop to each DiaryList component 171 | 178 | )) 179 | ) : ( 180 | // Render another component if the array has no value 181 | // Replace NoResultsComponent with your component 182 | )} 183 | 184 | 185 | ); 186 | } 187 | 188 | const styles = StyleSheet.create({ 189 | topnav: { 190 | padding: 5, 191 | borderRadius: 10, 192 | margin: 10, 193 | marginTop: 10, 194 | marginBottom: 3, 195 | flexDirection: "row", 196 | justifyContent: "space-between", 197 | }, 198 | 199 | tpn2: { 200 | fontSize: 24, 201 | fontWeight: "bold", 202 | }, 203 | }); 204 | -------------------------------------------------------------------------------- /App.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from "react"; 2 | import { NavigationContainer } from "@react-navigation/native"; 3 | import { createNativeStackNavigator } from "@react-navigation/native-stack"; 4 | import { Platform, StatusBar } from "react-native"; 5 | import HomeTabs from "./components/Tabs"; 6 | import Diary from "./screens/Diary"; 7 | import Edit from "./screens/Edit"; 8 | import { DContexts } from "./contexts/DContexts"; 9 | import CreatePin from "./screens/CreatePin"; 10 | import { initializeDatabase } from "./constants/Database"; 11 | import SecureStoreModel from "./constants/SecureStoreModel"; 12 | import * as SplashScreen from "expo-splash-screen"; 13 | import * as SecureStore from "expo-secure-store"; 14 | import ValidatePin from "./screens/ValidatePin"; 15 | import EditUsername from "./screens/EditUsername"; 16 | import EditPin from "./screens/EditPin"; 17 | import { useFonts } from "expo-font"; 18 | const Stack = createNativeStackNavigator(); 19 | SplashScreen.preventAutoHideAsync(); 20 | export default function App() { 21 | const [changedsomething, setChangedSomething] = useState(""); 22 | const [primarycolor, setPrimaryColor] = useState("#7856FF"); 23 | const [opacitycolor, setOpacityColor] = useState("#a089ff"); 24 | const [bgcolor, setbgColor] = useState("#f5f5f5"); 25 | const [cardcolor, setCardColor] = useState("white"); 26 | const [txtcolor, settxtColor] = useState("black"); 27 | const [isPinSet, setPinSet] = useState(false); 28 | const [isUnameSet, setUnameSet] = useState(false); 29 | const [myuname, setMyUname] = useState(""); 30 | const [fontsLoaded, fontError] = useFonts({ 31 | Poppins: require("./assets/fonts/poppins.ttf"), 32 | }); 33 | // Load colors and hide splash screen 34 | useEffect(() => { 35 | const loadColors = async () => { 36 | try { 37 | // Define default colors 38 | const Deafaults = { 39 | primaryColor: "#7856FF", 40 | opacityColor: "#a089ff", 41 | bgColor: "#f5f5f5", 42 | cardColor: "white", 43 | textColor: "black", 44 | }; 45 | 46 | const loadedPrimaryColor = await SecureStore.getItemAsync( 47 | "primarycolor" 48 | ); 49 | const loadedOpacityColor = await SecureStore.getItemAsync( 50 | "opacitycolor" 51 | ); 52 | const loadedBgColor = await SecureStore.getItemAsync("bgcolor"); 53 | const loadedCardColor = await SecureStore.getItemAsync("cardcolor"); 54 | const loadedTextColor = await SecureStore.getItemAsync("textcolor"); 55 | const loadedUsername = await SecureStore.getItemAsync("username"); 56 | if (loadedUsername !== "") { 57 | setMyUname(loadedUsername); 58 | } 59 | // Check and save colors if they don't exist 60 | if (loadedPrimaryColor === null) { 61 | await SecureStore.setItemAsync( 62 | "primarycolor", 63 | Deafaults.primaryColor 64 | ); 65 | setPrimaryColor(Deafaults.primaryColor); 66 | } else { 67 | setPrimaryColor(loadedPrimaryColor); 68 | } 69 | 70 | if (loadedOpacityColor === null) { 71 | await SecureStore.setItemAsync( 72 | "opacitycolor", 73 | Deafaults.opacityColor 74 | ); 75 | setOpacityColor(Deafaults.opacityColor); 76 | } else { 77 | setOpacityColor(loadedOpacityColor); 78 | } 79 | 80 | if (loadedBgColor === null) { 81 | await SecureStore.setItemAsync("bgcolor", Deafaults.bgColor); 82 | setbgColor(Deafaults.bgColor); 83 | } else { 84 | setbgColor(loadedBgColor); 85 | } 86 | 87 | if (loadedCardColor === null) { 88 | await SecureStore.setItemAsync("cardcolor", Deafaults.cardColor); 89 | setCardColor(Deafaults.cardColor); 90 | } else { 91 | setCardColor(loadedCardColor); 92 | } 93 | 94 | if (loadedTextColor === null) { 95 | await SecureStore.setItemAsync("textcolor", Deafaults.textColor); 96 | settxtColor(Deafaults.textColor); 97 | } else { 98 | settxtColor(loadedTextColor); 99 | } 100 | } catch (error) { 101 | console.error("Error loading variables from Secure Store:", error); 102 | } finally { 103 | // Hide the splash screen after loading 104 | 105 | SplashScreen.hideAsync(); 106 | } 107 | }; 108 | initializeDatabase(); 109 | loadColors(); 110 | }, []); 111 | useEffect(() => { 112 | SecureStoreModel.itemExists("pin").then((exists) => { 113 | if (exists) { 114 | setPinSet(true); 115 | } 116 | }); 117 | }, [isPinSet]); 118 | useEffect(() => { 119 | SecureStoreModel.itemExists("username").then((exists) => { 120 | if (exists) { 121 | setUnameSet(true); 122 | } 123 | }); 124 | }, [isUnameSet]); 125 | if (isUnameSet) { 126 | if (isPinSet) { 127 | return ( 128 | 146 | 147 | 155 | 160 | 165 | 166 | 171 | 176 | 181 | 182 | 183 | 184 | ); 185 | } else { 186 | return ( 187 | 195 | 196 | 197 | 202 | 203 | 204 | 205 | ); 206 | } 207 | } else { 208 | return ( 209 | 219 | 220 | 221 | 226 | 227 | 228 | 229 | ); 230 | } 231 | } 232 | -------------------------------------------------------------------------------- /ios/feelio.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 11 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 12 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 14 | 650CBE58AD13443991D8A546 /* poppins.ttf in Resources */ = {isa = PBXBuildFile; fileRef = AE7164DCC142481ABA9D993B /* poppins.ttf */; }; 15 | 96905EF65AED1B983A6B3ABC /* libPods-feelio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-feelio.a */; }; 16 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; 17 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; 18 | E8E8AA7D64584E5E83C3514A /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07870A76F3C24B46AC49E55F /* noop-file.swift */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXFileReference section */ 22 | 07870A76F3C24B46AC49E55F /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "feelio/noop-file.swift"; sourceTree = ""; }; 23 | 13B07F961A680F5B00A75B9A /* feelio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = feelio.app; sourceTree = BUILT_PRODUCTS_DIR; }; 24 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = feelio/AppDelegate.h; sourceTree = ""; }; 25 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = feelio/AppDelegate.mm; sourceTree = ""; }; 26 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = feelio/Images.xcassets; sourceTree = ""; }; 27 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = feelio/Info.plist; sourceTree = ""; }; 28 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = feelio/main.m; sourceTree = ""; }; 29 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-feelio.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-feelio.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 30 | 6C2E3173556A471DD304B334 /* Pods-feelio.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-feelio.debug.xcconfig"; path = "Target Support Files/Pods-feelio/Pods-feelio.debug.xcconfig"; sourceTree = ""; }; 31 | 7A4D352CD337FB3A3BF06240 /* Pods-feelio.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-feelio.release.xcconfig"; path = "Target Support Files/Pods-feelio/Pods-feelio.release.xcconfig"; sourceTree = ""; }; 32 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = feelio/SplashScreen.storyboard; sourceTree = ""; }; 33 | AE7164DCC142481ABA9D993B /* poppins.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = undefined; includeInIndex = 0; lastKnownFileType = unknown; name = poppins.ttf; path = ../assets/fonts/poppins.ttf; sourceTree = ""; }; 34 | BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; 35 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 36 | EDD80D18BA134D77AE421F82 /* feelio-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "feelio-Bridging-Header.h"; path = "feelio/feelio-Bridging-Header.h"; sourceTree = ""; }; 37 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-feelio/ExpoModulesProvider.swift"; sourceTree = ""; }; 38 | /* End PBXFileReference section */ 39 | 40 | /* Begin PBXFrameworksBuildPhase section */ 41 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 42 | isa = PBXFrameworksBuildPhase; 43 | buildActionMask = 2147483647; 44 | files = ( 45 | 96905EF65AED1B983A6B3ABC /* libPods-feelio.a in Frameworks */, 46 | ); 47 | runOnlyForDeploymentPostprocessing = 0; 48 | }; 49 | /* End PBXFrameworksBuildPhase section */ 50 | 51 | /* Begin PBXGroup section */ 52 | 13B07FAE1A68108700A75B9A /* feelio */ = { 53 | isa = PBXGroup; 54 | children = ( 55 | BB2F792B24A3F905000567C9 /* Supporting */, 56 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 57 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 58 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 59 | 13B07FB61A68108700A75B9A /* Info.plist */, 60 | 13B07FB71A68108700A75B9A /* main.m */, 61 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, 62 | 07870A76F3C24B46AC49E55F /* noop-file.swift */, 63 | EDD80D18BA134D77AE421F82 /* feelio-Bridging-Header.h */, 64 | ); 65 | name = feelio; 66 | sourceTree = ""; 67 | }; 68 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 69 | isa = PBXGroup; 70 | children = ( 71 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 72 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-feelio.a */, 73 | ); 74 | name = Frameworks; 75 | sourceTree = ""; 76 | }; 77 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | ); 81 | name = Libraries; 82 | sourceTree = ""; 83 | }; 84 | 83CBB9F61A601CBA00E9B192 = { 85 | isa = PBXGroup; 86 | children = ( 87 | 13B07FAE1A68108700A75B9A /* feelio */, 88 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 89 | 83CBBA001A601CBA00E9B192 /* Products */, 90 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 91 | D65327D7A22EEC0BE12398D9 /* Pods */, 92 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, 93 | F09FEAE4579D4B18B6C653CB /* Resources */, 94 | ); 95 | indentWidth = 2; 96 | sourceTree = ""; 97 | tabWidth = 2; 98 | usesTabs = 0; 99 | }; 100 | 83CBBA001A601CBA00E9B192 /* Products */ = { 101 | isa = PBXGroup; 102 | children = ( 103 | 13B07F961A680F5B00A75B9A /* feelio.app */, 104 | ); 105 | name = Products; 106 | sourceTree = ""; 107 | }; 108 | 92DBD88DE9BF7D494EA9DA96 /* feelio */ = { 109 | isa = PBXGroup; 110 | children = ( 111 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, 112 | ); 113 | name = feelio; 114 | sourceTree = ""; 115 | }; 116 | BB2F792B24A3F905000567C9 /* Supporting */ = { 117 | isa = PBXGroup; 118 | children = ( 119 | BB2F792C24A3F905000567C9 /* Expo.plist */, 120 | ); 121 | name = Supporting; 122 | path = feelio/Supporting; 123 | sourceTree = ""; 124 | }; 125 | D65327D7A22EEC0BE12398D9 /* Pods */ = { 126 | isa = PBXGroup; 127 | children = ( 128 | 6C2E3173556A471DD304B334 /* Pods-feelio.debug.xcconfig */, 129 | 7A4D352CD337FB3A3BF06240 /* Pods-feelio.release.xcconfig */, 130 | ); 131 | path = Pods; 132 | sourceTree = ""; 133 | }; 134 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { 135 | isa = PBXGroup; 136 | children = ( 137 | 92DBD88DE9BF7D494EA9DA96 /* feelio */, 138 | ); 139 | name = ExpoModulesProviders; 140 | sourceTree = ""; 141 | }; 142 | F09FEAE4579D4B18B6C653CB /* Resources */ = { 143 | isa = PBXGroup; 144 | children = ( 145 | AE7164DCC142481ABA9D993B /* poppins.ttf */, 146 | ); 147 | name = Resources; 148 | path = ""; 149 | sourceTree = ""; 150 | }; 151 | /* End PBXGroup section */ 152 | 153 | /* Begin PBXNativeTarget section */ 154 | 13B07F861A680F5B00A75B9A /* feelio */ = { 155 | isa = PBXNativeTarget; 156 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "feelio" */; 157 | buildPhases = ( 158 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, 159 | D32010ECB95BD1BA47F6A448 /* [Expo] Configure project */, 160 | 13B07F871A680F5B00A75B9A /* Sources */, 161 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 162 | 13B07F8E1A680F5B00A75B9A /* Resources */, 163 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 164 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, 165 | 8B0F6DC86AC771383A076895 /* [CP] Embed Pods Frameworks */, 166 | ); 167 | buildRules = ( 168 | ); 169 | dependencies = ( 170 | ); 171 | name = feelio; 172 | productName = feelio; 173 | productReference = 13B07F961A680F5B00A75B9A /* feelio.app */; 174 | productType = "com.apple.product-type.application"; 175 | }; 176 | /* End PBXNativeTarget section */ 177 | 178 | /* Begin PBXProject section */ 179 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 180 | isa = PBXProject; 181 | attributes = { 182 | LastUpgradeCheck = 1130; 183 | TargetAttributes = { 184 | 13B07F861A680F5B00A75B9A = { 185 | LastSwiftMigration = 1250; 186 | }; 187 | }; 188 | }; 189 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "feelio" */; 190 | compatibilityVersion = "Xcode 3.2"; 191 | developmentRegion = en; 192 | hasScannedForEncodings = 0; 193 | knownRegions = ( 194 | en, 195 | Base, 196 | ); 197 | mainGroup = 83CBB9F61A601CBA00E9B192; 198 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 199 | projectDirPath = ""; 200 | projectRoot = ""; 201 | targets = ( 202 | 13B07F861A680F5B00A75B9A /* feelio */, 203 | ); 204 | }; 205 | /* End PBXProject section */ 206 | 207 | /* Begin PBXResourcesBuildPhase section */ 208 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 209 | isa = PBXResourcesBuildPhase; 210 | buildActionMask = 2147483647; 211 | files = ( 212 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 213 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 214 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 215 | 650CBE58AD13443991D8A546 /* poppins.ttf in Resources */, 216 | ); 217 | runOnlyForDeploymentPostprocessing = 0; 218 | }; 219 | /* End PBXResourcesBuildPhase section */ 220 | 221 | /* Begin PBXShellScriptBuildPhase section */ 222 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 223 | isa = PBXShellScriptBuildPhase; 224 | alwaysOutOfDate = 1; 225 | buildActionMask = 2147483647; 226 | files = ( 227 | ); 228 | inputPaths = ( 229 | ); 230 | name = "Bundle React Native code and images"; 231 | outputPaths = ( 232 | ); 233 | runOnlyForDeploymentPostprocessing = 0; 234 | shellPath = /bin/sh; 235 | 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 relative | 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"; 236 | }; 237 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { 238 | isa = PBXShellScriptBuildPhase; 239 | buildActionMask = 2147483647; 240 | files = ( 241 | ); 242 | inputFileListPaths = ( 243 | ); 244 | inputPaths = ( 245 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 246 | "${PODS_ROOT}/Manifest.lock", 247 | ); 248 | name = "[CP] Check Pods Manifest.lock"; 249 | outputFileListPaths = ( 250 | ); 251 | outputPaths = ( 252 | "$(DERIVED_FILE_DIR)/Pods-feelio-checkManifestLockResult.txt", 253 | ); 254 | runOnlyForDeploymentPostprocessing = 0; 255 | shellPath = /bin/sh; 256 | 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"; 257 | showEnvVarsInLog = 0; 258 | }; 259 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { 260 | isa = PBXShellScriptBuildPhase; 261 | buildActionMask = 2147483647; 262 | files = ( 263 | ); 264 | inputPaths = ( 265 | "${PODS_ROOT}/Target Support Files/Pods-feelio/Pods-feelio-resources.sh", 266 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", 267 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/ExpoConstants_privacy.bundle", 268 | "${PODS_CONFIGURATION_BUILD_DIR}/ExpoFileSystem/ExpoFileSystem_privacy.bundle", 269 | "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", 270 | ); 271 | name = "[CP] Copy Pods Resources"; 272 | outputPaths = ( 273 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", 274 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoConstants_privacy.bundle", 275 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/ExpoFileSystem_privacy.bundle", 276 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", 277 | ); 278 | runOnlyForDeploymentPostprocessing = 0; 279 | shellPath = /bin/sh; 280 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-feelio/Pods-feelio-resources.sh\"\n"; 281 | showEnvVarsInLog = 0; 282 | }; 283 | 8B0F6DC86AC771383A076895 /* [CP] Embed Pods Frameworks */ = { 284 | isa = PBXShellScriptBuildPhase; 285 | buildActionMask = 2147483647; 286 | files = ( 287 | ); 288 | inputPaths = ( 289 | "${PODS_ROOT}/Target Support Files/Pods-feelio/Pods-feelio-frameworks.sh", 290 | "${PODS_XCFRAMEWORKS_BUILD_DIR}/ExpoSQLite/crsqlite.framework/crsqlite", 291 | "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", 292 | ); 293 | name = "[CP] Embed Pods Frameworks"; 294 | outputPaths = ( 295 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/crsqlite.framework", 296 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", 297 | ); 298 | runOnlyForDeploymentPostprocessing = 0; 299 | shellPath = /bin/sh; 300 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-feelio/Pods-feelio-frameworks.sh\"\n"; 301 | showEnvVarsInLog = 0; 302 | }; 303 | D32010ECB95BD1BA47F6A448 /* [Expo] Configure project */ = { 304 | isa = PBXShellScriptBuildPhase; 305 | alwaysOutOfDate = 1; 306 | buildActionMask = 2147483647; 307 | files = ( 308 | ); 309 | inputFileListPaths = ( 310 | ); 311 | inputPaths = ( 312 | ); 313 | name = "[Expo] Configure project"; 314 | outputFileListPaths = ( 315 | ); 316 | outputPaths = ( 317 | ); 318 | runOnlyForDeploymentPostprocessing = 0; 319 | shellPath = /bin/sh; 320 | shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-feelio/expo-configure-project.sh\"\n"; 321 | }; 322 | /* End PBXShellScriptBuildPhase section */ 323 | 324 | /* Begin PBXSourcesBuildPhase section */ 325 | 13B07F871A680F5B00A75B9A /* Sources */ = { 326 | isa = PBXSourcesBuildPhase; 327 | buildActionMask = 2147483647; 328 | files = ( 329 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 330 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 331 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, 332 | E8E8AA7D64584E5E83C3514A /* noop-file.swift in Sources */, 333 | ); 334 | runOnlyForDeploymentPostprocessing = 0; 335 | }; 336 | /* End PBXSourcesBuildPhase section */ 337 | 338 | /* Begin XCBuildConfiguration section */ 339 | 13B07F941A680F5B00A75B9A /* Debug */ = { 340 | isa = XCBuildConfiguration; 341 | baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-feelio.debug.xcconfig */; 342 | buildSettings = { 343 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 344 | CLANG_ENABLE_MODULES = YES; 345 | CODE_SIGN_ENTITLEMENTS = feelio/feelio.entitlements; 346 | CURRENT_PROJECT_VERSION = 1; 347 | ENABLE_BITCODE = NO; 348 | GCC_PREPROCESSOR_DEFINITIONS = ( 349 | "$(inherited)", 350 | "FB_SONARKIT_ENABLED=1", 351 | ); 352 | INFOPLIST_FILE = feelio/Info.plist; 353 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 354 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 355 | MARKETING_VERSION = 1.0; 356 | OTHER_LDFLAGS = ( 357 | "$(inherited)", 358 | "-ObjC", 359 | "-lc++", 360 | ); 361 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; 362 | PRODUCT_BUNDLE_IDENTIFIER = y; 363 | PRODUCT_NAME = feelio; 364 | SWIFT_OBJC_BRIDGING_HEADER = "feelio/feelio-Bridging-Header.h"; 365 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 366 | SWIFT_VERSION = 5.0; 367 | TARGETED_DEVICE_FAMILY = "1,2"; 368 | VERSIONING_SYSTEM = "apple-generic"; 369 | }; 370 | name = Debug; 371 | }; 372 | 13B07F951A680F5B00A75B9A /* Release */ = { 373 | isa = XCBuildConfiguration; 374 | baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-feelio.release.xcconfig */; 375 | buildSettings = { 376 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 377 | CLANG_ENABLE_MODULES = YES; 378 | CODE_SIGN_ENTITLEMENTS = feelio/feelio.entitlements; 379 | CURRENT_PROJECT_VERSION = 1; 380 | INFOPLIST_FILE = feelio/Info.plist; 381 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 382 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 383 | MARKETING_VERSION = 1.0; 384 | OTHER_LDFLAGS = ( 385 | "$(inherited)", 386 | "-ObjC", 387 | "-lc++", 388 | ); 389 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; 390 | PRODUCT_BUNDLE_IDENTIFIER = y; 391 | PRODUCT_NAME = feelio; 392 | SWIFT_OBJC_BRIDGING_HEADER = "feelio/feelio-Bridging-Header.h"; 393 | SWIFT_VERSION = 5.0; 394 | TARGETED_DEVICE_FAMILY = "1,2"; 395 | VERSIONING_SYSTEM = "apple-generic"; 396 | }; 397 | name = Release; 398 | }; 399 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 400 | isa = XCBuildConfiguration; 401 | buildSettings = { 402 | ALWAYS_SEARCH_USER_PATHS = NO; 403 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 404 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 405 | CLANG_CXX_LIBRARY = "libc++"; 406 | CLANG_ENABLE_MODULES = YES; 407 | CLANG_ENABLE_OBJC_ARC = YES; 408 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 409 | CLANG_WARN_BOOL_CONVERSION = YES; 410 | CLANG_WARN_COMMA = YES; 411 | CLANG_WARN_CONSTANT_CONVERSION = YES; 412 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 413 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 414 | CLANG_WARN_EMPTY_BODY = YES; 415 | CLANG_WARN_ENUM_CONVERSION = YES; 416 | CLANG_WARN_INFINITE_RECURSION = YES; 417 | CLANG_WARN_INT_CONVERSION = YES; 418 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 419 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 420 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 421 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 422 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 423 | CLANG_WARN_STRICT_PROTOTYPES = YES; 424 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 425 | CLANG_WARN_UNREACHABLE_CODE = YES; 426 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 427 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 428 | COPY_PHASE_STRIP = NO; 429 | ENABLE_STRICT_OBJC_MSGSEND = YES; 430 | ENABLE_TESTABILITY = YES; 431 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 432 | GCC_C_LANGUAGE_STANDARD = gnu99; 433 | GCC_DYNAMIC_NO_PIC = NO; 434 | GCC_NO_COMMON_BLOCKS = YES; 435 | GCC_OPTIMIZATION_LEVEL = 0; 436 | GCC_PREPROCESSOR_DEFINITIONS = ( 437 | "DEBUG=1", 438 | "$(inherited)", 439 | ); 440 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 441 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 442 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 443 | GCC_WARN_UNDECLARED_SELECTOR = YES; 444 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 445 | GCC_WARN_UNUSED_FUNCTION = YES; 446 | GCC_WARN_UNUSED_VARIABLE = YES; 447 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 448 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 449 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 450 | MTL_ENABLE_DEBUG_INFO = YES; 451 | ONLY_ACTIVE_ARCH = YES; 452 | OTHER_CFLAGS = "$(inherited)"; 453 | OTHER_CPLUSPLUSFLAGS = "$(inherited)"; 454 | OTHER_LDFLAGS = ( 455 | "$(inherited)", 456 | " ", 457 | ); 458 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 459 | SDKROOT = iphoneos; 460 | USE_HERMES = true; 461 | }; 462 | name = Debug; 463 | }; 464 | 83CBBA211A601CBA00E9B192 /* Release */ = { 465 | isa = XCBuildConfiguration; 466 | buildSettings = { 467 | ALWAYS_SEARCH_USER_PATHS = NO; 468 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 469 | CLANG_CXX_LANGUAGE_STANDARD = "c++20"; 470 | CLANG_CXX_LIBRARY = "libc++"; 471 | CLANG_ENABLE_MODULES = YES; 472 | CLANG_ENABLE_OBJC_ARC = YES; 473 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 474 | CLANG_WARN_BOOL_CONVERSION = YES; 475 | CLANG_WARN_COMMA = YES; 476 | CLANG_WARN_CONSTANT_CONVERSION = YES; 477 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 478 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 479 | CLANG_WARN_EMPTY_BODY = YES; 480 | CLANG_WARN_ENUM_CONVERSION = YES; 481 | CLANG_WARN_INFINITE_RECURSION = YES; 482 | CLANG_WARN_INT_CONVERSION = YES; 483 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 484 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 485 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 486 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 487 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 488 | CLANG_WARN_STRICT_PROTOTYPES = YES; 489 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 490 | CLANG_WARN_UNREACHABLE_CODE = YES; 491 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 492 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 493 | COPY_PHASE_STRIP = YES; 494 | ENABLE_NS_ASSERTIONS = NO; 495 | ENABLE_STRICT_OBJC_MSGSEND = YES; 496 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 497 | GCC_C_LANGUAGE_STANDARD = gnu99; 498 | GCC_NO_COMMON_BLOCKS = YES; 499 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 500 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 501 | GCC_WARN_UNDECLARED_SELECTOR = YES; 502 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 503 | GCC_WARN_UNUSED_FUNCTION = YES; 504 | GCC_WARN_UNUSED_VARIABLE = YES; 505 | IPHONEOS_DEPLOYMENT_TARGET = 13.4; 506 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 507 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 508 | MTL_ENABLE_DEBUG_INFO = NO; 509 | OTHER_CFLAGS = "$(inherited)"; 510 | OTHER_CPLUSPLUSFLAGS = "$(inherited)"; 511 | OTHER_LDFLAGS = ( 512 | "$(inherited)", 513 | " ", 514 | ); 515 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 516 | SDKROOT = iphoneos; 517 | USE_HERMES = true; 518 | VALIDATE_PRODUCT = YES; 519 | }; 520 | name = Release; 521 | }; 522 | /* End XCBuildConfiguration section */ 523 | 524 | /* Begin XCConfigurationList section */ 525 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "feelio" */ = { 526 | isa = XCConfigurationList; 527 | buildConfigurations = ( 528 | 13B07F941A680F5B00A75B9A /* Debug */, 529 | 13B07F951A680F5B00A75B9A /* Release */, 530 | ); 531 | defaultConfigurationIsVisible = 0; 532 | defaultConfigurationName = Release; 533 | }; 534 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "feelio" */ = { 535 | isa = XCConfigurationList; 536 | buildConfigurations = ( 537 | 83CBBA201A601CBA00E9B192 /* Debug */, 538 | 83CBBA211A601CBA00E9B192 /* Release */, 539 | ); 540 | defaultConfigurationIsVisible = 0; 541 | defaultConfigurationName = Release; 542 | }; 543 | /* End XCConfigurationList section */ 544 | }; 545 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 546 | } 547 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.83.0) 3 | - DoubleConversion (1.1.6) 4 | - EXConstants (15.4.6): 5 | - ExpoModulesCore 6 | - EXFont (11.10.3): 7 | - ExpoModulesCore 8 | - EXLocation (16.5.5): 9 | - ExpoModulesCore 10 | - Expo (50.0.17): 11 | - ExpoModulesCore 12 | - ExpoFileSystem (16.0.9): 13 | - ExpoModulesCore 14 | - ExpoKeepAwake (12.8.2): 15 | - ExpoModulesCore 16 | - ExpoLinearGradient (12.7.2): 17 | - ExpoModulesCore 18 | - ExpoModulesCore (1.11.13): 19 | - glog 20 | - RCT-Folly (= 2022.05.16.00) 21 | - React-Core 22 | - React-NativeModulesApple 23 | - React-RCTAppDelegate 24 | - ReactCommon/turbomodule/core 25 | - ExpoSecureStore (12.8.1): 26 | - ExpoModulesCore 27 | - ExpoSQLite (13.4.0): 28 | - ExpoModulesCore 29 | - sqlite3 (~> 3.42.0) 30 | - sqlite3/fts (~> 3.42.0) 31 | - sqlite3/fts5 (~> 3.42.0) 32 | - EXSplashScreen (0.26.5): 33 | - ExpoModulesCore 34 | - glog 35 | - RCT-Folly (= 2022.05.16.00) 36 | - React-Core 37 | - FBLazyVector (0.73.6) 38 | - FBReactNativeSpec (0.73.6): 39 | - RCT-Folly (= 2022.05.16.00) 40 | - RCTRequired (= 0.73.6) 41 | - RCTTypeSafety (= 0.73.6) 42 | - React-Core (= 0.73.6) 43 | - React-jsi (= 0.73.6) 44 | - ReactCommon/turbomodule/core (= 0.73.6) 45 | - fmt (6.2.1) 46 | - glog (0.3.5) 47 | - hermes-engine (0.73.6): 48 | - hermes-engine/Pre-built (= 0.73.6) 49 | - hermes-engine/Pre-built (0.73.6) 50 | - libevent (2.1.12) 51 | - RCT-Folly (2022.05.16.00): 52 | - boost 53 | - DoubleConversion 54 | - fmt (~> 6.2.1) 55 | - glog 56 | - RCT-Folly/Default (= 2022.05.16.00) 57 | - RCT-Folly/Default (2022.05.16.00): 58 | - boost 59 | - DoubleConversion 60 | - fmt (~> 6.2.1) 61 | - glog 62 | - RCT-Folly/Fabric (2022.05.16.00): 63 | - boost 64 | - DoubleConversion 65 | - fmt (~> 6.2.1) 66 | - glog 67 | - RCT-Folly/Futures (2022.05.16.00): 68 | - boost 69 | - DoubleConversion 70 | - fmt (~> 6.2.1) 71 | - glog 72 | - libevent 73 | - RCTRequired (0.73.6) 74 | - RCTTypeSafety (0.73.6): 75 | - FBLazyVector (= 0.73.6) 76 | - RCTRequired (= 0.73.6) 77 | - React-Core (= 0.73.6) 78 | - React (0.73.6): 79 | - React-Core (= 0.73.6) 80 | - React-Core/DevSupport (= 0.73.6) 81 | - React-Core/RCTWebSocket (= 0.73.6) 82 | - React-RCTActionSheet (= 0.73.6) 83 | - React-RCTAnimation (= 0.73.6) 84 | - React-RCTBlob (= 0.73.6) 85 | - React-RCTImage (= 0.73.6) 86 | - React-RCTLinking (= 0.73.6) 87 | - React-RCTNetwork (= 0.73.6) 88 | - React-RCTSettings (= 0.73.6) 89 | - React-RCTText (= 0.73.6) 90 | - React-RCTVibration (= 0.73.6) 91 | - React-callinvoker (0.73.6) 92 | - React-Codegen (0.73.6): 93 | - DoubleConversion 94 | - FBReactNativeSpec 95 | - glog 96 | - hermes-engine 97 | - RCT-Folly 98 | - RCTRequired 99 | - RCTTypeSafety 100 | - React-Core 101 | - React-jsi 102 | - React-jsiexecutor 103 | - React-NativeModulesApple 104 | - React-rncore 105 | - ReactCommon/turbomodule/bridging 106 | - ReactCommon/turbomodule/core 107 | - React-Core (0.73.6): 108 | - glog 109 | - hermes-engine 110 | - RCT-Folly (= 2022.05.16.00) 111 | - React-Core/Default (= 0.73.6) 112 | - React-cxxreact 113 | - React-hermes 114 | - React-jsi 115 | - React-jsiexecutor 116 | - React-perflogger 117 | - React-runtimescheduler 118 | - React-utils 119 | - SocketRocket (= 0.6.1) 120 | - Yoga 121 | - React-Core/CoreModulesHeaders (0.73.6): 122 | - glog 123 | - hermes-engine 124 | - RCT-Folly (= 2022.05.16.00) 125 | - React-Core/Default 126 | - React-cxxreact 127 | - React-hermes 128 | - React-jsi 129 | - React-jsiexecutor 130 | - React-perflogger 131 | - React-runtimescheduler 132 | - React-utils 133 | - SocketRocket (= 0.6.1) 134 | - Yoga 135 | - React-Core/Default (0.73.6): 136 | - glog 137 | - hermes-engine 138 | - RCT-Folly (= 2022.05.16.00) 139 | - React-cxxreact 140 | - React-hermes 141 | - React-jsi 142 | - React-jsiexecutor 143 | - React-perflogger 144 | - React-runtimescheduler 145 | - React-utils 146 | - SocketRocket (= 0.6.1) 147 | - Yoga 148 | - React-Core/DevSupport (0.73.6): 149 | - glog 150 | - hermes-engine 151 | - RCT-Folly (= 2022.05.16.00) 152 | - React-Core/Default (= 0.73.6) 153 | - React-Core/RCTWebSocket (= 0.73.6) 154 | - React-cxxreact 155 | - React-hermes 156 | - React-jsi 157 | - React-jsiexecutor 158 | - React-jsinspector (= 0.73.6) 159 | - React-perflogger 160 | - React-runtimescheduler 161 | - React-utils 162 | - SocketRocket (= 0.6.1) 163 | - Yoga 164 | - React-Core/RCTActionSheetHeaders (0.73.6): 165 | - glog 166 | - hermes-engine 167 | - RCT-Folly (= 2022.05.16.00) 168 | - React-Core/Default 169 | - React-cxxreact 170 | - React-hermes 171 | - React-jsi 172 | - React-jsiexecutor 173 | - React-perflogger 174 | - React-runtimescheduler 175 | - React-utils 176 | - SocketRocket (= 0.6.1) 177 | - Yoga 178 | - React-Core/RCTAnimationHeaders (0.73.6): 179 | - glog 180 | - hermes-engine 181 | - RCT-Folly (= 2022.05.16.00) 182 | - React-Core/Default 183 | - React-cxxreact 184 | - React-hermes 185 | - React-jsi 186 | - React-jsiexecutor 187 | - React-perflogger 188 | - React-runtimescheduler 189 | - React-utils 190 | - SocketRocket (= 0.6.1) 191 | - Yoga 192 | - React-Core/RCTBlobHeaders (0.73.6): 193 | - glog 194 | - hermes-engine 195 | - RCT-Folly (= 2022.05.16.00) 196 | - React-Core/Default 197 | - React-cxxreact 198 | - React-hermes 199 | - React-jsi 200 | - React-jsiexecutor 201 | - React-perflogger 202 | - React-runtimescheduler 203 | - React-utils 204 | - SocketRocket (= 0.6.1) 205 | - Yoga 206 | - React-Core/RCTImageHeaders (0.73.6): 207 | - glog 208 | - hermes-engine 209 | - RCT-Folly (= 2022.05.16.00) 210 | - React-Core/Default 211 | - React-cxxreact 212 | - React-hermes 213 | - React-jsi 214 | - React-jsiexecutor 215 | - React-perflogger 216 | - React-runtimescheduler 217 | - React-utils 218 | - SocketRocket (= 0.6.1) 219 | - Yoga 220 | - React-Core/RCTLinkingHeaders (0.73.6): 221 | - glog 222 | - hermes-engine 223 | - RCT-Folly (= 2022.05.16.00) 224 | - React-Core/Default 225 | - React-cxxreact 226 | - React-hermes 227 | - React-jsi 228 | - React-jsiexecutor 229 | - React-perflogger 230 | - React-runtimescheduler 231 | - React-utils 232 | - SocketRocket (= 0.6.1) 233 | - Yoga 234 | - React-Core/RCTNetworkHeaders (0.73.6): 235 | - glog 236 | - hermes-engine 237 | - RCT-Folly (= 2022.05.16.00) 238 | - React-Core/Default 239 | - React-cxxreact 240 | - React-hermes 241 | - React-jsi 242 | - React-jsiexecutor 243 | - React-perflogger 244 | - React-runtimescheduler 245 | - React-utils 246 | - SocketRocket (= 0.6.1) 247 | - Yoga 248 | - React-Core/RCTSettingsHeaders (0.73.6): 249 | - glog 250 | - hermes-engine 251 | - RCT-Folly (= 2022.05.16.00) 252 | - React-Core/Default 253 | - React-cxxreact 254 | - React-hermes 255 | - React-jsi 256 | - React-jsiexecutor 257 | - React-perflogger 258 | - React-runtimescheduler 259 | - React-utils 260 | - SocketRocket (= 0.6.1) 261 | - Yoga 262 | - React-Core/RCTTextHeaders (0.73.6): 263 | - glog 264 | - hermes-engine 265 | - RCT-Folly (= 2022.05.16.00) 266 | - React-Core/Default 267 | - React-cxxreact 268 | - React-hermes 269 | - React-jsi 270 | - React-jsiexecutor 271 | - React-perflogger 272 | - React-runtimescheduler 273 | - React-utils 274 | - SocketRocket (= 0.6.1) 275 | - Yoga 276 | - React-Core/RCTVibrationHeaders (0.73.6): 277 | - glog 278 | - hermes-engine 279 | - RCT-Folly (= 2022.05.16.00) 280 | - React-Core/Default 281 | - React-cxxreact 282 | - React-hermes 283 | - React-jsi 284 | - React-jsiexecutor 285 | - React-perflogger 286 | - React-runtimescheduler 287 | - React-utils 288 | - SocketRocket (= 0.6.1) 289 | - Yoga 290 | - React-Core/RCTWebSocket (0.73.6): 291 | - glog 292 | - hermes-engine 293 | - RCT-Folly (= 2022.05.16.00) 294 | - React-Core/Default (= 0.73.6) 295 | - React-cxxreact 296 | - React-hermes 297 | - React-jsi 298 | - React-jsiexecutor 299 | - React-perflogger 300 | - React-runtimescheduler 301 | - React-utils 302 | - SocketRocket (= 0.6.1) 303 | - Yoga 304 | - React-CoreModules (0.73.6): 305 | - RCT-Folly (= 2022.05.16.00) 306 | - RCTTypeSafety (= 0.73.6) 307 | - React-Codegen 308 | - React-Core/CoreModulesHeaders (= 0.73.6) 309 | - React-jsi (= 0.73.6) 310 | - React-NativeModulesApple 311 | - React-RCTBlob 312 | - React-RCTImage (= 0.73.6) 313 | - ReactCommon 314 | - SocketRocket (= 0.6.1) 315 | - React-cxxreact (0.73.6): 316 | - boost (= 1.83.0) 317 | - DoubleConversion 318 | - fmt (~> 6.2.1) 319 | - glog 320 | - hermes-engine 321 | - RCT-Folly (= 2022.05.16.00) 322 | - React-callinvoker (= 0.73.6) 323 | - React-debug (= 0.73.6) 324 | - React-jsi (= 0.73.6) 325 | - React-jsinspector (= 0.73.6) 326 | - React-logger (= 0.73.6) 327 | - React-perflogger (= 0.73.6) 328 | - React-runtimeexecutor (= 0.73.6) 329 | - React-debug (0.73.6) 330 | - React-Fabric (0.73.6): 331 | - DoubleConversion 332 | - fmt (~> 6.2.1) 333 | - glog 334 | - hermes-engine 335 | - RCT-Folly/Fabric (= 2022.05.16.00) 336 | - RCTRequired 337 | - RCTTypeSafety 338 | - React-Core 339 | - React-cxxreact 340 | - React-debug 341 | - React-Fabric/animations (= 0.73.6) 342 | - React-Fabric/attributedstring (= 0.73.6) 343 | - React-Fabric/componentregistry (= 0.73.6) 344 | - React-Fabric/componentregistrynative (= 0.73.6) 345 | - React-Fabric/components (= 0.73.6) 346 | - React-Fabric/core (= 0.73.6) 347 | - React-Fabric/imagemanager (= 0.73.6) 348 | - React-Fabric/leakchecker (= 0.73.6) 349 | - React-Fabric/mounting (= 0.73.6) 350 | - React-Fabric/scheduler (= 0.73.6) 351 | - React-Fabric/telemetry (= 0.73.6) 352 | - React-Fabric/templateprocessor (= 0.73.6) 353 | - React-Fabric/textlayoutmanager (= 0.73.6) 354 | - React-Fabric/uimanager (= 0.73.6) 355 | - React-graphics 356 | - React-jsi 357 | - React-jsiexecutor 358 | - React-logger 359 | - React-rendererdebug 360 | - React-runtimescheduler 361 | - React-utils 362 | - ReactCommon/turbomodule/core 363 | - React-Fabric/animations (0.73.6): 364 | - DoubleConversion 365 | - fmt (~> 6.2.1) 366 | - glog 367 | - hermes-engine 368 | - RCT-Folly/Fabric (= 2022.05.16.00) 369 | - RCTRequired 370 | - RCTTypeSafety 371 | - React-Core 372 | - React-cxxreact 373 | - React-debug 374 | - React-graphics 375 | - React-jsi 376 | - React-jsiexecutor 377 | - React-logger 378 | - React-rendererdebug 379 | - React-runtimescheduler 380 | - React-utils 381 | - ReactCommon/turbomodule/core 382 | - React-Fabric/attributedstring (0.73.6): 383 | - DoubleConversion 384 | - fmt (~> 6.2.1) 385 | - glog 386 | - hermes-engine 387 | - RCT-Folly/Fabric (= 2022.05.16.00) 388 | - RCTRequired 389 | - RCTTypeSafety 390 | - React-Core 391 | - React-cxxreact 392 | - React-debug 393 | - React-graphics 394 | - React-jsi 395 | - React-jsiexecutor 396 | - React-logger 397 | - React-rendererdebug 398 | - React-runtimescheduler 399 | - React-utils 400 | - ReactCommon/turbomodule/core 401 | - React-Fabric/componentregistry (0.73.6): 402 | - DoubleConversion 403 | - fmt (~> 6.2.1) 404 | - glog 405 | - hermes-engine 406 | - RCT-Folly/Fabric (= 2022.05.16.00) 407 | - RCTRequired 408 | - RCTTypeSafety 409 | - React-Core 410 | - React-cxxreact 411 | - React-debug 412 | - React-graphics 413 | - React-jsi 414 | - React-jsiexecutor 415 | - React-logger 416 | - React-rendererdebug 417 | - React-runtimescheduler 418 | - React-utils 419 | - ReactCommon/turbomodule/core 420 | - React-Fabric/componentregistrynative (0.73.6): 421 | - DoubleConversion 422 | - fmt (~> 6.2.1) 423 | - glog 424 | - hermes-engine 425 | - RCT-Folly/Fabric (= 2022.05.16.00) 426 | - RCTRequired 427 | - RCTTypeSafety 428 | - React-Core 429 | - React-cxxreact 430 | - React-debug 431 | - React-graphics 432 | - React-jsi 433 | - React-jsiexecutor 434 | - React-logger 435 | - React-rendererdebug 436 | - React-runtimescheduler 437 | - React-utils 438 | - ReactCommon/turbomodule/core 439 | - React-Fabric/components (0.73.6): 440 | - DoubleConversion 441 | - fmt (~> 6.2.1) 442 | - glog 443 | - hermes-engine 444 | - RCT-Folly/Fabric (= 2022.05.16.00) 445 | - RCTRequired 446 | - RCTTypeSafety 447 | - React-Core 448 | - React-cxxreact 449 | - React-debug 450 | - React-Fabric/components/inputaccessory (= 0.73.6) 451 | - React-Fabric/components/legacyviewmanagerinterop (= 0.73.6) 452 | - React-Fabric/components/modal (= 0.73.6) 453 | - React-Fabric/components/rncore (= 0.73.6) 454 | - React-Fabric/components/root (= 0.73.6) 455 | - React-Fabric/components/safeareaview (= 0.73.6) 456 | - React-Fabric/components/scrollview (= 0.73.6) 457 | - React-Fabric/components/text (= 0.73.6) 458 | - React-Fabric/components/textinput (= 0.73.6) 459 | - React-Fabric/components/unimplementedview (= 0.73.6) 460 | - React-Fabric/components/view (= 0.73.6) 461 | - React-graphics 462 | - React-jsi 463 | - React-jsiexecutor 464 | - React-logger 465 | - React-rendererdebug 466 | - React-runtimescheduler 467 | - React-utils 468 | - ReactCommon/turbomodule/core 469 | - React-Fabric/components/inputaccessory (0.73.6): 470 | - DoubleConversion 471 | - fmt (~> 6.2.1) 472 | - glog 473 | - hermes-engine 474 | - RCT-Folly/Fabric (= 2022.05.16.00) 475 | - RCTRequired 476 | - RCTTypeSafety 477 | - React-Core 478 | - React-cxxreact 479 | - React-debug 480 | - React-graphics 481 | - React-jsi 482 | - React-jsiexecutor 483 | - React-logger 484 | - React-rendererdebug 485 | - React-runtimescheduler 486 | - React-utils 487 | - ReactCommon/turbomodule/core 488 | - React-Fabric/components/legacyviewmanagerinterop (0.73.6): 489 | - DoubleConversion 490 | - fmt (~> 6.2.1) 491 | - glog 492 | - hermes-engine 493 | - RCT-Folly/Fabric (= 2022.05.16.00) 494 | - RCTRequired 495 | - RCTTypeSafety 496 | - React-Core 497 | - React-cxxreact 498 | - React-debug 499 | - React-graphics 500 | - React-jsi 501 | - React-jsiexecutor 502 | - React-logger 503 | - React-rendererdebug 504 | - React-runtimescheduler 505 | - React-utils 506 | - ReactCommon/turbomodule/core 507 | - React-Fabric/components/modal (0.73.6): 508 | - DoubleConversion 509 | - fmt (~> 6.2.1) 510 | - glog 511 | - hermes-engine 512 | - RCT-Folly/Fabric (= 2022.05.16.00) 513 | - RCTRequired 514 | - RCTTypeSafety 515 | - React-Core 516 | - React-cxxreact 517 | - React-debug 518 | - React-graphics 519 | - React-jsi 520 | - React-jsiexecutor 521 | - React-logger 522 | - React-rendererdebug 523 | - React-runtimescheduler 524 | - React-utils 525 | - ReactCommon/turbomodule/core 526 | - React-Fabric/components/rncore (0.73.6): 527 | - DoubleConversion 528 | - fmt (~> 6.2.1) 529 | - glog 530 | - hermes-engine 531 | - RCT-Folly/Fabric (= 2022.05.16.00) 532 | - RCTRequired 533 | - RCTTypeSafety 534 | - React-Core 535 | - React-cxxreact 536 | - React-debug 537 | - React-graphics 538 | - React-jsi 539 | - React-jsiexecutor 540 | - React-logger 541 | - React-rendererdebug 542 | - React-runtimescheduler 543 | - React-utils 544 | - ReactCommon/turbomodule/core 545 | - React-Fabric/components/root (0.73.6): 546 | - DoubleConversion 547 | - fmt (~> 6.2.1) 548 | - glog 549 | - hermes-engine 550 | - RCT-Folly/Fabric (= 2022.05.16.00) 551 | - RCTRequired 552 | - RCTTypeSafety 553 | - React-Core 554 | - React-cxxreact 555 | - React-debug 556 | - React-graphics 557 | - React-jsi 558 | - React-jsiexecutor 559 | - React-logger 560 | - React-rendererdebug 561 | - React-runtimescheduler 562 | - React-utils 563 | - ReactCommon/turbomodule/core 564 | - React-Fabric/components/safeareaview (0.73.6): 565 | - DoubleConversion 566 | - fmt (~> 6.2.1) 567 | - glog 568 | - hermes-engine 569 | - RCT-Folly/Fabric (= 2022.05.16.00) 570 | - RCTRequired 571 | - RCTTypeSafety 572 | - React-Core 573 | - React-cxxreact 574 | - React-debug 575 | - React-graphics 576 | - React-jsi 577 | - React-jsiexecutor 578 | - React-logger 579 | - React-rendererdebug 580 | - React-runtimescheduler 581 | - React-utils 582 | - ReactCommon/turbomodule/core 583 | - React-Fabric/components/scrollview (0.73.6): 584 | - DoubleConversion 585 | - fmt (~> 6.2.1) 586 | - glog 587 | - hermes-engine 588 | - RCT-Folly/Fabric (= 2022.05.16.00) 589 | - RCTRequired 590 | - RCTTypeSafety 591 | - React-Core 592 | - React-cxxreact 593 | - React-debug 594 | - React-graphics 595 | - React-jsi 596 | - React-jsiexecutor 597 | - React-logger 598 | - React-rendererdebug 599 | - React-runtimescheduler 600 | - React-utils 601 | - ReactCommon/turbomodule/core 602 | - React-Fabric/components/text (0.73.6): 603 | - DoubleConversion 604 | - fmt (~> 6.2.1) 605 | - glog 606 | - hermes-engine 607 | - RCT-Folly/Fabric (= 2022.05.16.00) 608 | - RCTRequired 609 | - RCTTypeSafety 610 | - React-Core 611 | - React-cxxreact 612 | - React-debug 613 | - React-graphics 614 | - React-jsi 615 | - React-jsiexecutor 616 | - React-logger 617 | - React-rendererdebug 618 | - React-runtimescheduler 619 | - React-utils 620 | - ReactCommon/turbomodule/core 621 | - React-Fabric/components/textinput (0.73.6): 622 | - DoubleConversion 623 | - fmt (~> 6.2.1) 624 | - glog 625 | - hermes-engine 626 | - RCT-Folly/Fabric (= 2022.05.16.00) 627 | - RCTRequired 628 | - RCTTypeSafety 629 | - React-Core 630 | - React-cxxreact 631 | - React-debug 632 | - React-graphics 633 | - React-jsi 634 | - React-jsiexecutor 635 | - React-logger 636 | - React-rendererdebug 637 | - React-runtimescheduler 638 | - React-utils 639 | - ReactCommon/turbomodule/core 640 | - React-Fabric/components/unimplementedview (0.73.6): 641 | - DoubleConversion 642 | - fmt (~> 6.2.1) 643 | - glog 644 | - hermes-engine 645 | - RCT-Folly/Fabric (= 2022.05.16.00) 646 | - RCTRequired 647 | - RCTTypeSafety 648 | - React-Core 649 | - React-cxxreact 650 | - React-debug 651 | - React-graphics 652 | - React-jsi 653 | - React-jsiexecutor 654 | - React-logger 655 | - React-rendererdebug 656 | - React-runtimescheduler 657 | - React-utils 658 | - ReactCommon/turbomodule/core 659 | - React-Fabric/components/view (0.73.6): 660 | - DoubleConversion 661 | - fmt (~> 6.2.1) 662 | - glog 663 | - hermes-engine 664 | - RCT-Folly/Fabric (= 2022.05.16.00) 665 | - RCTRequired 666 | - RCTTypeSafety 667 | - React-Core 668 | - React-cxxreact 669 | - React-debug 670 | - React-graphics 671 | - React-jsi 672 | - React-jsiexecutor 673 | - React-logger 674 | - React-rendererdebug 675 | - React-runtimescheduler 676 | - React-utils 677 | - ReactCommon/turbomodule/core 678 | - Yoga 679 | - React-Fabric/core (0.73.6): 680 | - DoubleConversion 681 | - fmt (~> 6.2.1) 682 | - glog 683 | - hermes-engine 684 | - RCT-Folly/Fabric (= 2022.05.16.00) 685 | - RCTRequired 686 | - RCTTypeSafety 687 | - React-Core 688 | - React-cxxreact 689 | - React-debug 690 | - React-graphics 691 | - React-jsi 692 | - React-jsiexecutor 693 | - React-logger 694 | - React-rendererdebug 695 | - React-runtimescheduler 696 | - React-utils 697 | - ReactCommon/turbomodule/core 698 | - React-Fabric/imagemanager (0.73.6): 699 | - DoubleConversion 700 | - fmt (~> 6.2.1) 701 | - glog 702 | - hermes-engine 703 | - RCT-Folly/Fabric (= 2022.05.16.00) 704 | - RCTRequired 705 | - RCTTypeSafety 706 | - React-Core 707 | - React-cxxreact 708 | - React-debug 709 | - React-graphics 710 | - React-jsi 711 | - React-jsiexecutor 712 | - React-logger 713 | - React-rendererdebug 714 | - React-runtimescheduler 715 | - React-utils 716 | - ReactCommon/turbomodule/core 717 | - React-Fabric/leakchecker (0.73.6): 718 | - DoubleConversion 719 | - fmt (~> 6.2.1) 720 | - glog 721 | - hermes-engine 722 | - RCT-Folly/Fabric (= 2022.05.16.00) 723 | - RCTRequired 724 | - RCTTypeSafety 725 | - React-Core 726 | - React-cxxreact 727 | - React-debug 728 | - React-graphics 729 | - React-jsi 730 | - React-jsiexecutor 731 | - React-logger 732 | - React-rendererdebug 733 | - React-runtimescheduler 734 | - React-utils 735 | - ReactCommon/turbomodule/core 736 | - React-Fabric/mounting (0.73.6): 737 | - DoubleConversion 738 | - fmt (~> 6.2.1) 739 | - glog 740 | - hermes-engine 741 | - RCT-Folly/Fabric (= 2022.05.16.00) 742 | - RCTRequired 743 | - RCTTypeSafety 744 | - React-Core 745 | - React-cxxreact 746 | - React-debug 747 | - React-graphics 748 | - React-jsi 749 | - React-jsiexecutor 750 | - React-logger 751 | - React-rendererdebug 752 | - React-runtimescheduler 753 | - React-utils 754 | - ReactCommon/turbomodule/core 755 | - React-Fabric/scheduler (0.73.6): 756 | - DoubleConversion 757 | - fmt (~> 6.2.1) 758 | - glog 759 | - hermes-engine 760 | - RCT-Folly/Fabric (= 2022.05.16.00) 761 | - RCTRequired 762 | - RCTTypeSafety 763 | - React-Core 764 | - React-cxxreact 765 | - React-debug 766 | - React-graphics 767 | - React-jsi 768 | - React-jsiexecutor 769 | - React-logger 770 | - React-rendererdebug 771 | - React-runtimescheduler 772 | - React-utils 773 | - ReactCommon/turbomodule/core 774 | - React-Fabric/telemetry (0.73.6): 775 | - DoubleConversion 776 | - fmt (~> 6.2.1) 777 | - glog 778 | - hermes-engine 779 | - RCT-Folly/Fabric (= 2022.05.16.00) 780 | - RCTRequired 781 | - RCTTypeSafety 782 | - React-Core 783 | - React-cxxreact 784 | - React-debug 785 | - React-graphics 786 | - React-jsi 787 | - React-jsiexecutor 788 | - React-logger 789 | - React-rendererdebug 790 | - React-runtimescheduler 791 | - React-utils 792 | - ReactCommon/turbomodule/core 793 | - React-Fabric/templateprocessor (0.73.6): 794 | - DoubleConversion 795 | - fmt (~> 6.2.1) 796 | - glog 797 | - hermes-engine 798 | - RCT-Folly/Fabric (= 2022.05.16.00) 799 | - RCTRequired 800 | - RCTTypeSafety 801 | - React-Core 802 | - React-cxxreact 803 | - React-debug 804 | - React-graphics 805 | - React-jsi 806 | - React-jsiexecutor 807 | - React-logger 808 | - React-rendererdebug 809 | - React-runtimescheduler 810 | - React-utils 811 | - ReactCommon/turbomodule/core 812 | - React-Fabric/textlayoutmanager (0.73.6): 813 | - DoubleConversion 814 | - fmt (~> 6.2.1) 815 | - glog 816 | - hermes-engine 817 | - RCT-Folly/Fabric (= 2022.05.16.00) 818 | - RCTRequired 819 | - RCTTypeSafety 820 | - React-Core 821 | - React-cxxreact 822 | - React-debug 823 | - React-Fabric/uimanager 824 | - React-graphics 825 | - React-jsi 826 | - React-jsiexecutor 827 | - React-logger 828 | - React-rendererdebug 829 | - React-runtimescheduler 830 | - React-utils 831 | - ReactCommon/turbomodule/core 832 | - React-Fabric/uimanager (0.73.6): 833 | - DoubleConversion 834 | - fmt (~> 6.2.1) 835 | - glog 836 | - hermes-engine 837 | - RCT-Folly/Fabric (= 2022.05.16.00) 838 | - RCTRequired 839 | - RCTTypeSafety 840 | - React-Core 841 | - React-cxxreact 842 | - React-debug 843 | - React-graphics 844 | - React-jsi 845 | - React-jsiexecutor 846 | - React-logger 847 | - React-rendererdebug 848 | - React-runtimescheduler 849 | - React-utils 850 | - ReactCommon/turbomodule/core 851 | - React-FabricImage (0.73.6): 852 | - DoubleConversion 853 | - fmt (~> 6.2.1) 854 | - glog 855 | - hermes-engine 856 | - RCT-Folly/Fabric (= 2022.05.16.00) 857 | - RCTRequired (= 0.73.6) 858 | - RCTTypeSafety (= 0.73.6) 859 | - React-Fabric 860 | - React-graphics 861 | - React-ImageManager 862 | - React-jsi 863 | - React-jsiexecutor (= 0.73.6) 864 | - React-logger 865 | - React-rendererdebug 866 | - React-utils 867 | - ReactCommon 868 | - Yoga 869 | - React-graphics (0.73.6): 870 | - glog 871 | - RCT-Folly/Fabric (= 2022.05.16.00) 872 | - React-Core/Default (= 0.73.6) 873 | - React-utils 874 | - React-hermes (0.73.6): 875 | - DoubleConversion 876 | - fmt (~> 6.2.1) 877 | - glog 878 | - hermes-engine 879 | - RCT-Folly (= 2022.05.16.00) 880 | - RCT-Folly/Futures (= 2022.05.16.00) 881 | - React-cxxreact (= 0.73.6) 882 | - React-jsi 883 | - React-jsiexecutor (= 0.73.6) 884 | - React-jsinspector (= 0.73.6) 885 | - React-perflogger (= 0.73.6) 886 | - React-ImageManager (0.73.6): 887 | - glog 888 | - RCT-Folly/Fabric 889 | - React-Core/Default 890 | - React-debug 891 | - React-Fabric 892 | - React-graphics 893 | - React-rendererdebug 894 | - React-utils 895 | - React-jserrorhandler (0.73.6): 896 | - RCT-Folly/Fabric (= 2022.05.16.00) 897 | - React-debug 898 | - React-jsi 899 | - React-Mapbuffer 900 | - React-jsi (0.73.6): 901 | - boost (= 1.83.0) 902 | - DoubleConversion 903 | - fmt (~> 6.2.1) 904 | - glog 905 | - hermes-engine 906 | - RCT-Folly (= 2022.05.16.00) 907 | - React-jsiexecutor (0.73.6): 908 | - DoubleConversion 909 | - fmt (~> 6.2.1) 910 | - glog 911 | - hermes-engine 912 | - RCT-Folly (= 2022.05.16.00) 913 | - React-cxxreact (= 0.73.6) 914 | - React-jsi (= 0.73.6) 915 | - React-perflogger (= 0.73.6) 916 | - React-jsinspector (0.73.6) 917 | - React-logger (0.73.6): 918 | - glog 919 | - React-Mapbuffer (0.73.6): 920 | - glog 921 | - React-debug 922 | - react-native-safe-area-context (4.10.1): 923 | - React-Core 924 | - react-native-voice (3.2.4): 925 | - React-Core 926 | - React-nativeconfig (0.73.6) 927 | - React-NativeModulesApple (0.73.6): 928 | - glog 929 | - hermes-engine 930 | - React-callinvoker 931 | - React-Core 932 | - React-cxxreact 933 | - React-jsi 934 | - React-runtimeexecutor 935 | - ReactCommon/turbomodule/bridging 936 | - ReactCommon/turbomodule/core 937 | - React-perflogger (0.73.6) 938 | - React-RCTActionSheet (0.73.6): 939 | - React-Core/RCTActionSheetHeaders (= 0.73.6) 940 | - React-RCTAnimation (0.73.6): 941 | - RCT-Folly (= 2022.05.16.00) 942 | - RCTTypeSafety 943 | - React-Codegen 944 | - React-Core/RCTAnimationHeaders 945 | - React-jsi 946 | - React-NativeModulesApple 947 | - ReactCommon 948 | - React-RCTAppDelegate (0.73.6): 949 | - RCT-Folly 950 | - RCTRequired 951 | - RCTTypeSafety 952 | - React-Core 953 | - React-CoreModules 954 | - React-hermes 955 | - React-nativeconfig 956 | - React-NativeModulesApple 957 | - React-RCTFabric 958 | - React-RCTImage 959 | - React-RCTNetwork 960 | - React-runtimescheduler 961 | - ReactCommon 962 | - React-RCTBlob (0.73.6): 963 | - hermes-engine 964 | - RCT-Folly (= 2022.05.16.00) 965 | - React-Codegen 966 | - React-Core/RCTBlobHeaders 967 | - React-Core/RCTWebSocket 968 | - React-jsi 969 | - React-NativeModulesApple 970 | - React-RCTNetwork 971 | - ReactCommon 972 | - React-RCTFabric (0.73.6): 973 | - glog 974 | - hermes-engine 975 | - RCT-Folly/Fabric (= 2022.05.16.00) 976 | - React-Core 977 | - React-debug 978 | - React-Fabric 979 | - React-FabricImage 980 | - React-graphics 981 | - React-ImageManager 982 | - React-jsi 983 | - React-nativeconfig 984 | - React-RCTImage 985 | - React-RCTText 986 | - React-rendererdebug 987 | - React-runtimescheduler 988 | - React-utils 989 | - Yoga 990 | - React-RCTImage (0.73.6): 991 | - RCT-Folly (= 2022.05.16.00) 992 | - RCTTypeSafety 993 | - React-Codegen 994 | - React-Core/RCTImageHeaders 995 | - React-jsi 996 | - React-NativeModulesApple 997 | - React-RCTNetwork 998 | - ReactCommon 999 | - React-RCTLinking (0.73.6): 1000 | - React-Codegen 1001 | - React-Core/RCTLinkingHeaders (= 0.73.6) 1002 | - React-jsi (= 0.73.6) 1003 | - React-NativeModulesApple 1004 | - ReactCommon 1005 | - ReactCommon/turbomodule/core (= 0.73.6) 1006 | - React-RCTNetwork (0.73.6): 1007 | - RCT-Folly (= 2022.05.16.00) 1008 | - RCTTypeSafety 1009 | - React-Codegen 1010 | - React-Core/RCTNetworkHeaders 1011 | - React-jsi 1012 | - React-NativeModulesApple 1013 | - ReactCommon 1014 | - React-RCTSettings (0.73.6): 1015 | - RCT-Folly (= 2022.05.16.00) 1016 | - RCTTypeSafety 1017 | - React-Codegen 1018 | - React-Core/RCTSettingsHeaders 1019 | - React-jsi 1020 | - React-NativeModulesApple 1021 | - ReactCommon 1022 | - React-RCTText (0.73.6): 1023 | - React-Core/RCTTextHeaders (= 0.73.6) 1024 | - Yoga 1025 | - React-RCTVibration (0.73.6): 1026 | - RCT-Folly (= 2022.05.16.00) 1027 | - React-Codegen 1028 | - React-Core/RCTVibrationHeaders 1029 | - React-jsi 1030 | - React-NativeModulesApple 1031 | - ReactCommon 1032 | - React-rendererdebug (0.73.6): 1033 | - DoubleConversion 1034 | - fmt (~> 6.2.1) 1035 | - RCT-Folly (= 2022.05.16.00) 1036 | - React-debug 1037 | - React-rncore (0.73.6) 1038 | - React-runtimeexecutor (0.73.6): 1039 | - React-jsi (= 0.73.6) 1040 | - React-runtimescheduler (0.73.6): 1041 | - glog 1042 | - hermes-engine 1043 | - RCT-Folly (= 2022.05.16.00) 1044 | - React-callinvoker 1045 | - React-cxxreact 1046 | - React-debug 1047 | - React-jsi 1048 | - React-rendererdebug 1049 | - React-runtimeexecutor 1050 | - React-utils 1051 | - React-utils (0.73.6): 1052 | - glog 1053 | - RCT-Folly (= 2022.05.16.00) 1054 | - React-debug 1055 | - ReactCommon (0.73.6): 1056 | - React-logger (= 0.73.6) 1057 | - ReactCommon/turbomodule (= 0.73.6) 1058 | - ReactCommon/turbomodule (0.73.6): 1059 | - DoubleConversion 1060 | - fmt (~> 6.2.1) 1061 | - glog 1062 | - hermes-engine 1063 | - RCT-Folly (= 2022.05.16.00) 1064 | - React-callinvoker (= 0.73.6) 1065 | - React-cxxreact (= 0.73.6) 1066 | - React-jsi (= 0.73.6) 1067 | - React-logger (= 0.73.6) 1068 | - React-perflogger (= 0.73.6) 1069 | - ReactCommon/turbomodule/bridging (= 0.73.6) 1070 | - ReactCommon/turbomodule/core (= 0.73.6) 1071 | - ReactCommon/turbomodule/bridging (0.73.6): 1072 | - DoubleConversion 1073 | - fmt (~> 6.2.1) 1074 | - glog 1075 | - hermes-engine 1076 | - RCT-Folly (= 2022.05.16.00) 1077 | - React-callinvoker (= 0.73.6) 1078 | - React-cxxreact (= 0.73.6) 1079 | - React-jsi (= 0.73.6) 1080 | - React-logger (= 0.73.6) 1081 | - React-perflogger (= 0.73.6) 1082 | - ReactCommon/turbomodule/core (0.73.6): 1083 | - DoubleConversion 1084 | - fmt (~> 6.2.1) 1085 | - glog 1086 | - hermes-engine 1087 | - RCT-Folly (= 2022.05.16.00) 1088 | - React-callinvoker (= 0.73.6) 1089 | - React-cxxreact (= 0.73.6) 1090 | - React-jsi (= 0.73.6) 1091 | - React-logger (= 0.73.6) 1092 | - React-perflogger (= 0.73.6) 1093 | - RNScreens (3.31.1): 1094 | - glog 1095 | - RCT-Folly (= 2022.05.16.00) 1096 | - React-Core 1097 | - React-RCTImage 1098 | - SocketRocket (0.6.1) 1099 | - sqlite3 (3.42.0): 1100 | - sqlite3/common (= 3.42.0) 1101 | - sqlite3/common (3.42.0) 1102 | - sqlite3/fts (3.42.0): 1103 | - sqlite3/common 1104 | - sqlite3/fts5 (3.42.0): 1105 | - sqlite3/common 1106 | - Yoga (1.14.0) 1107 | 1108 | DEPENDENCIES: 1109 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 1110 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 1111 | - EXConstants (from `../node_modules/expo-constants/ios`) 1112 | - EXFont (from `../node_modules/expo-font/ios`) 1113 | - EXLocation (from `../node_modules/expo-location/ios`) 1114 | - Expo (from `../node_modules/expo`) 1115 | - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) 1116 | - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) 1117 | - ExpoLinearGradient (from `../node_modules/expo-linear-gradient/ios`) 1118 | - ExpoModulesCore (from `../node_modules/expo-modules-core`) 1119 | - ExpoSecureStore (from `../node_modules/expo-secure-store/ios`) 1120 | - ExpoSQLite (from `../node_modules/expo-sqlite/ios`) 1121 | - EXSplashScreen (from `../node_modules/expo-splash-screen/ios`) 1122 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 1123 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 1124 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 1125 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) 1126 | - libevent (~> 2.1.12) 1127 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1128 | - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 1129 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 1130 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 1131 | - React (from `../node_modules/react-native/`) 1132 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 1133 | - React-Codegen (from `build/generated/ios`) 1134 | - React-Core (from `../node_modules/react-native/`) 1135 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 1136 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 1137 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 1138 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 1139 | - React-Fabric (from `../node_modules/react-native/ReactCommon`) 1140 | - React-FabricImage (from `../node_modules/react-native/ReactCommon`) 1141 | - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) 1142 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) 1143 | - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) 1144 | - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) 1145 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 1146 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 1147 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) 1148 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 1149 | - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) 1150 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) 1151 | - "react-native-voice (from `../node_modules/@react-native-voice/voice`)" 1152 | - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) 1153 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 1154 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 1155 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 1156 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 1157 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 1158 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 1159 | - React-RCTFabric (from `../node_modules/react-native/React`) 1160 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 1161 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 1162 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 1163 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 1164 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 1165 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 1166 | - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) 1167 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 1168 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 1169 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 1170 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 1171 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 1172 | - RNScreens (from `../node_modules/react-native-screens`) 1173 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 1174 | 1175 | SPEC REPOS: 1176 | trunk: 1177 | - fmt 1178 | - libevent 1179 | - SocketRocket 1180 | - sqlite3 1181 | 1182 | EXTERNAL SOURCES: 1183 | boost: 1184 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 1185 | DoubleConversion: 1186 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 1187 | EXConstants: 1188 | :path: "../node_modules/expo-constants/ios" 1189 | EXFont: 1190 | :path: "../node_modules/expo-font/ios" 1191 | EXLocation: 1192 | :path: "../node_modules/expo-location/ios" 1193 | Expo: 1194 | :path: "../node_modules/expo" 1195 | ExpoFileSystem: 1196 | :path: "../node_modules/expo-file-system/ios" 1197 | ExpoKeepAwake: 1198 | :path: "../node_modules/expo-keep-awake/ios" 1199 | ExpoLinearGradient: 1200 | :path: "../node_modules/expo-linear-gradient/ios" 1201 | ExpoModulesCore: 1202 | :path: "../node_modules/expo-modules-core" 1203 | ExpoSecureStore: 1204 | :path: "../node_modules/expo-secure-store/ios" 1205 | ExpoSQLite: 1206 | :path: "../node_modules/expo-sqlite/ios" 1207 | EXSplashScreen: 1208 | :path: "../node_modules/expo-splash-screen/ios" 1209 | FBLazyVector: 1210 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 1211 | FBReactNativeSpec: 1212 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 1213 | glog: 1214 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 1215 | hermes-engine: 1216 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" 1217 | :tag: hermes-2024-02-20-RNv0.73.5-18f99ace4213052c5e7cdbcd39ee9766cd5df7e4 1218 | RCT-Folly: 1219 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 1220 | RCTRequired: 1221 | :path: "../node_modules/react-native/Libraries/RCTRequired" 1222 | RCTTypeSafety: 1223 | :path: "../node_modules/react-native/Libraries/TypeSafety" 1224 | React: 1225 | :path: "../node_modules/react-native/" 1226 | React-callinvoker: 1227 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 1228 | React-Codegen: 1229 | :path: build/generated/ios 1230 | React-Core: 1231 | :path: "../node_modules/react-native/" 1232 | React-CoreModules: 1233 | :path: "../node_modules/react-native/React/CoreModules" 1234 | React-cxxreact: 1235 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 1236 | React-debug: 1237 | :path: "../node_modules/react-native/ReactCommon/react/debug" 1238 | React-Fabric: 1239 | :path: "../node_modules/react-native/ReactCommon" 1240 | React-FabricImage: 1241 | :path: "../node_modules/react-native/ReactCommon" 1242 | React-graphics: 1243 | :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" 1244 | React-hermes: 1245 | :path: "../node_modules/react-native/ReactCommon/hermes" 1246 | React-ImageManager: 1247 | :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" 1248 | React-jserrorhandler: 1249 | :path: "../node_modules/react-native/ReactCommon/jserrorhandler" 1250 | React-jsi: 1251 | :path: "../node_modules/react-native/ReactCommon/jsi" 1252 | React-jsiexecutor: 1253 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 1254 | React-jsinspector: 1255 | :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" 1256 | React-logger: 1257 | :path: "../node_modules/react-native/ReactCommon/logger" 1258 | React-Mapbuffer: 1259 | :path: "../node_modules/react-native/ReactCommon" 1260 | react-native-safe-area-context: 1261 | :path: "../node_modules/react-native-safe-area-context" 1262 | react-native-voice: 1263 | :path: "../node_modules/@react-native-voice/voice" 1264 | React-nativeconfig: 1265 | :path: "../node_modules/react-native/ReactCommon" 1266 | React-NativeModulesApple: 1267 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 1268 | React-perflogger: 1269 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 1270 | React-RCTActionSheet: 1271 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 1272 | React-RCTAnimation: 1273 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 1274 | React-RCTAppDelegate: 1275 | :path: "../node_modules/react-native/Libraries/AppDelegate" 1276 | React-RCTBlob: 1277 | :path: "../node_modules/react-native/Libraries/Blob" 1278 | React-RCTFabric: 1279 | :path: "../node_modules/react-native/React" 1280 | React-RCTImage: 1281 | :path: "../node_modules/react-native/Libraries/Image" 1282 | React-RCTLinking: 1283 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 1284 | React-RCTNetwork: 1285 | :path: "../node_modules/react-native/Libraries/Network" 1286 | React-RCTSettings: 1287 | :path: "../node_modules/react-native/Libraries/Settings" 1288 | React-RCTText: 1289 | :path: "../node_modules/react-native/Libraries/Text" 1290 | React-RCTVibration: 1291 | :path: "../node_modules/react-native/Libraries/Vibration" 1292 | React-rendererdebug: 1293 | :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" 1294 | React-rncore: 1295 | :path: "../node_modules/react-native/ReactCommon" 1296 | React-runtimeexecutor: 1297 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 1298 | React-runtimescheduler: 1299 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 1300 | React-utils: 1301 | :path: "../node_modules/react-native/ReactCommon/react/utils" 1302 | ReactCommon: 1303 | :path: "../node_modules/react-native/ReactCommon" 1304 | RNScreens: 1305 | :path: "../node_modules/react-native-screens" 1306 | Yoga: 1307 | :path: "../node_modules/react-native/ReactCommon/yoga" 1308 | 1309 | SPEC CHECKSUMS: 1310 | boost: d3f49c53809116a5d38da093a8aa78bf551aed09 1311 | DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 1312 | EXConstants: a5f6276e565d98f9eb4280f81241fc342d641590 1313 | EXFont: f20669cb266ef48b004f1eb1f2b20db96cd1df9f 1314 | EXLocation: a631bd8dc4e7db986fb27edb7fc9ea8174ebe249 1315 | Expo: 2cdb5916749a1509cf88114f1f510bd458630eb4 1316 | ExpoFileSystem: 74cc0fae916f9f044248433971dcfc8c3befd057 1317 | ExpoKeepAwake: 0f5cad99603a3268e50af9a6eb8b76d0d9ac956c 1318 | ExpoLinearGradient: 4ad1449a2408e0435ac959076562b3921f2e32a1 1319 | ExpoModulesCore: 4a8928a228569301ac4fc4a1e846713e05754d05 1320 | ExpoSecureStore: c84ae37d1c36f38524d289c67c3a2e3fc56f1108 1321 | ExpoSQLite: 2c0f6267f9d7f41be9f40d59efc4ced3bfbec93b 1322 | EXSplashScreen: fb4d80520d2348d57879e7a272415438bbcdffd3 1323 | FBLazyVector: f64d1e2ea739b4d8f7e4740cde18089cd97fe864 1324 | FBReactNativeSpec: 9f2b8b243131565335437dba74923a8d3015e780 1325 | fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 1326 | glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 1327 | hermes-engine: 9cecf9953a681df7556b8cc9c74905de8f3293c0 1328 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 1329 | RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 1330 | RCTRequired: ca1d7414aba0b27efcfa2ccd37637edb1ab77d96 1331 | RCTTypeSafety: 678e344fb976ff98343ca61dc62e151f3a042292 1332 | React: e296bcebb489deaad87326067204eb74145934ab 1333 | React-callinvoker: d0b7015973fa6ccb592bb0363f6bc2164238ab8c 1334 | React-Codegen: f034a5de6f28e15e8d95d171df17e581d5309268 1335 | React-Core: 44c936d0ab879e9c32e5381bd7596a677c59c974 1336 | React-CoreModules: 558228e12cddb9ca00ff7937894cc5104a21be6b 1337 | React-cxxreact: 1fcf565012c203655b3638f35aa03c13c2ed7e9e 1338 | React-debug: d444db402065cca460d9c5b072caab802a04f729 1339 | React-Fabric: 7d11905695e42f8bdaedddcf294959b43b290ab8 1340 | React-FabricImage: 6e06a512d2fb5f55669c721578736785d915d4f5 1341 | React-graphics: 5500206f7c9a481456365403c9fcf1638de108b7 1342 | React-hermes: 783023e43af9d6be4fbaeeb96b5beee00649a5f7 1343 | React-ImageManager: df193215ff3cf1a8dad297e554c89c632e42436c 1344 | React-jserrorhandler: a4d0f541c5852cf031db2f82f51de90be55b1334 1345 | React-jsi: ae102ccb38d2e4d0f512b7074d0c9b4e1851f402 1346 | React-jsiexecutor: bd12ec75873d3ef0a755c11f878f2c420430f5a9 1347 | React-jsinspector: 85583ef014ce53d731a98c66a0e24496f7a83066 1348 | React-logger: 3eb80a977f0d9669468ef641a5e1fabbc50a09ec 1349 | React-Mapbuffer: 84ea43c6c6232049135b1550b8c60b2faac19fab 1350 | react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d 1351 | react-native-voice: f5e8eec2278451d0017eb6a30a6ccc726aca34e0 1352 | React-nativeconfig: b4d4e9901d4cabb57be63053fd2aa6086eb3c85f 1353 | React-NativeModulesApple: cd26e56d56350e123da0c1e3e4c76cb58a05e1ee 1354 | React-perflogger: 5f49905de275bac07ac7ea7f575a70611fa988f2 1355 | React-RCTActionSheet: 37edf35aeb8e4f30e76c82aab61f12d1b75c04ec 1356 | React-RCTAnimation: a69de7f3daa8462743094f4736c455e844ea63f7 1357 | React-RCTAppDelegate: 51fb96b554a6acd0cd7818acecd5aa5ca2f3ab9f 1358 | React-RCTBlob: d91771caebf2d015005d750cd1dc2b433ad07c99 1359 | React-RCTFabric: c5b9451d1f2b546119b7a0353226a8a26247d4a9 1360 | React-RCTImage: a0bfe87b6908c7b76bd7d74520f40660bd0ad881 1361 | React-RCTLinking: 5f10be1647952cceddfa1970fdb374087582fc34 1362 | React-RCTNetwork: a0bc3dd45a2dc7c879c80cebb6f9707b2c8bbed6 1363 | React-RCTSettings: 28c202b68afa59afb4067510f2c69c5a530fb9e3 1364 | React-RCTText: 4119d9e53ca5db9502b916e1b146e99798986d21 1365 | React-RCTVibration: 55bd7c48487eb9a2562f2bd3fdc833274f5b0636 1366 | React-rendererdebug: 5fa97ba664806cee4700e95aec42dff1b6f8ea36 1367 | React-rncore: b0a8e1d14dabb7115c7a5b4ec8b9b74d1727d382 1368 | React-runtimeexecutor: bb328dbe2865f3a550df0240df8e2d8c3aaa4c57 1369 | React-runtimescheduler: 9636eee762c699ca7c85751a359101797e4c8b3b 1370 | React-utils: d16c1d2251c088ad817996621947d0ac8167b46c 1371 | ReactCommon: 2aa35648354bd4c4665b9a5084a7d37097b89c10 1372 | RNScreens: 134a7511b12b8eb440b87aac21e36a71295d6024 1373 | SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 1374 | sqlite3: f163dbbb7aa3339ad8fc622782c2d9d7b72f7e9c 1375 | Yoga: 805bf71192903b20fc14babe48080582fee65a80 1376 | 1377 | PODFILE CHECKSUM: 2105bb19fc98edf7323eb1fc0d305e11a6de9f42 1378 | 1379 | COCOAPODS: 1.15.2 1380 | --------------------------------------------------------------------------------