├── .gitignore
├── App.js
├── README.md
├── app.json
├── app
├── HomeScreen.js
├── ProjectScreen.js
├── components
│ ├── AddProjectForm.js
│ ├── AddTaskForm.js
│ ├── IntroText.js
│ ├── ProjectList.js
│ ├── TaskItem.js
│ └── TaskList.js
├── models
│ ├── Project.js
│ └── Task.js
└── styles
│ └── colors.js
├── assets
├── adaptive-icon.png
├── favicon.png
├── icon.png
└── splash.png
├── babel.config.js
├── index.js
├── ios
├── Podfile
├── Podfile.lock
├── Podfile.properties.json
├── ReactRealmJsTemplateApp.xcodeproj
│ ├── project.pbxproj
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── ReactRealmJsTemplateApp.xcscheme
├── ReactRealmJsTemplateApp.xcworkspace
│ └── contents.xcworkspacedata
└── ReactRealmJsTemplateApp
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ └── SplashScreenBackground.imageset
│ │ ├── Contents.json
│ │ └── image.png
│ ├── Info.plist
│ ├── ReactRealmJsTemplateApp-Bridging-Header.h
│ ├── ReactRealmJsTemplateApp.entitlements
│ ├── SplashScreen.storyboard
│ ├── Supporting
│ └── Expo.plist
│ ├── main.m
│ └── noop-file.swift
├── metro.config.js
├── package-lock.json
├── package.json
└── yarn.lock
/.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 |
25 | # Android/IntelliJ
26 | #
27 | build/
28 | .idea
29 | .gradle
30 | local.properties
31 | *.iml
32 | *.hprof
33 |
34 | # node.js
35 | #
36 | node_modules/
37 | npm-debug.log
38 | yarn-error.log
39 |
40 | # BUCK
41 | buck-out/
42 | \.buckd/
43 | *.keystore
44 | !debug.keystore
45 |
46 | # Bundle artifacts
47 | *.jsbundle
48 |
49 | # CocoaPods
50 | /ios/Pods/
51 |
52 | # Expo
53 | .expo/
54 | web-build/
55 | dist/
56 | # @generated expo-cli sync-e7dcf75f4e856f7b6f3239b3f3a7dd614ee755a8
57 | # The following patterns were generated by expo-cli
58 |
59 | # OSX
60 | #
61 | .DS_Store
62 |
63 | # Xcode
64 | #
65 | build/
66 | *.pbxuser
67 | !default.pbxuser
68 | *.mode1v3
69 | !default.mode1v3
70 | *.mode2v3
71 | !default.mode2v3
72 | *.perspectivev3
73 | !default.perspectivev3
74 | xcuserdata
75 | *.xccheckout
76 | *.moved-aside
77 | DerivedData
78 | *.hmap
79 | *.ipa
80 | *.xcuserstate
81 | project.xcworkspace
82 |
83 | # Android/IntelliJ
84 | #
85 | build/
86 | .idea
87 | .gradle
88 | local.properties
89 | *.iml
90 | *.hprof
91 |
92 | # node.js
93 | #
94 | node_modules/
95 | npm-debug.log
96 | yarn-error.log
97 |
98 | # BUCK
99 | buck-out/
100 | \.buckd/
101 | *.keystore
102 | !debug.keystore
103 |
104 | # Bundle artifacts
105 | *.jsbundle
106 |
107 | # CocoaPods
108 | /ios/Pods/
109 |
110 | # Expo
111 | .expo/
112 | web-build/
113 | dist/
114 |
115 | # @end expo-cli
--------------------------------------------------------------------------------
/App.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | import { NavigationContainer } from "@react-navigation/native";
4 | import { createNativeStackNavigator } from "@react-navigation/native-stack";
5 |
6 | // REALM
7 | import { RealmProvider } from "./app/models/Project";
8 |
9 | // SCREENS
10 | import { HomeScreen } from "./app/HomeScreen";
11 | import { ProjectScreen } from "./app/ProjectScreen";
12 |
13 | const Stack = createNativeStackNavigator();
14 | function AppWrapper() {
15 | if (!RealmProvider) {
16 | return null;
17 | }
18 | return (
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | );
28 | }
29 |
30 | export default AppWrapper;
31 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Expo Template Realm React Native Starter Application
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ## Video Link
10 | - https://www.youtube.com/watch?v=5BwIpiC2H4E
11 |
12 | Simple Expo application to quickly get started with Realm, based on the starter template that is provided by Realm
13 |
14 | ## 📝 Application Notes
15 | - Added relationships so there is a project and a project has mutiple tasks associated with it
16 | - added and additional screen which lists the Projects
17 | - Added React Navigation so that we could move between the screens
18 | - Added a new screen that lists all of the Projects that are in the application
19 | - Added the project name to the task list
20 | - Added the number of tasks associated with the Project to the project list
21 | - Added try catch block to capture errors from the `realm.write` blocks
22 | - Added code to delete the child `Task` objects of the `Project`
23 | - I think that the introduction of the Realm Context is mising some helpful support documentation and links along with how to use the new `useQuery` function.
24 | - I also think that the documentation on relationships is extremely lacking and I did my best to create something that will show it better
25 |
26 |
27 |
28 | ## 🏃 How to build and run locally
29 |
30 | - [Setup development Environment](https://reactnative.dev/docs/environment-setup)
31 | - Build/Run on iOS 🍎
32 | ```
33 | yarn ios
34 | ```
35 | ```
36 | npm run ios
37 | ```
38 | - Build/Run on Android 🤖
39 | ```
40 | yarn android
41 | ```
42 | ```
43 | npm run android
44 | ```
45 |
46 | ## 📝 Notes
47 |
48 | - [Setting up Sync](https://docs.mongodb.com/realm/sdk/react-native/quick-start/)
49 | - [Realm JS Documentation](https://docs.mongodb.com/realm/sdk/react-native/)
50 | - [Development Client docs](https://docs.expo.dev/clients/introduction/)
51 | - [Building with EAS](https://docs.expo.dev/eas/)
52 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "expo": {
3 | "name": "ReactRealmJsTemplateApp",
4 | "slug": "ReactRealmJsTemplateApp",
5 | "version": "1.0.0",
6 | "assetBundlePatterns": [
7 | "**/*"
8 | ],
9 | "ios" : {
10 | "bundleIdentifier" : "aks.com.app1"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/HomeScreen.js:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useMemo } from "react";
2 | import {
3 | SafeAreaView,
4 | View,
5 | StyleSheet,
6 | Button,
7 | Pressable,
8 | Text,
9 | Alert,
10 | } from "react-native";
11 | import { Task } from "./models/Task";
12 | import { Project, useQuery, useRealm } from "./models/Project";
13 | import IntroText from "./components/IntroText";
14 | import AddTaskForm from "./components/AddTaskForm";
15 | import TaskList from "./components/TaskList";
16 | import colors from "./styles/colors";
17 |
18 | export function HomeScreen({ navigation }) {
19 | const realm = useRealm();
20 | const result = useQuery("Task");
21 | const resultProject = useQuery("Project");
22 | const tasks = useMemo(() => result.sorted("createdAt"), [result]);
23 | console.log(resultProject);
24 |
25 | const handleAddTask = useCallback(
26 | ({ description, project }) => {
27 | if (!description || !project) {
28 | return;
29 | }
30 |
31 | // Everything in the function passed to "realm.write" is a transaction and will
32 | // hence succeed or fail together. A transcation is the smallest unit of transfer
33 | // in Realm so we want to be mindful of how much we put into one single transaction
34 | // and split them up if appropriate (more commonly seen server side). Since clients
35 | // may occasionally be online during short time spans we want to increase the probability
36 | // of sync participants to successfully sync everything in the transaction, otherwise
37 | // no changes propagate and the transaction needs to start over when connectivity allows.
38 |
39 | try {
40 | realm.write(() => {
41 | // check for project
42 | const q = `name == '${project}'`;
43 | let projectResults = realm.objects("Project").filtered(q);
44 |
45 | // if needed create it
46 | if (!projectResults.length) {
47 | projectResults = [
48 | realm.create(
49 | "Project",
50 | new Project({ name: project, tasks: [] })
51 | ),
52 | ];
53 | }
54 |
55 | const projectO = projectResults[0];
56 |
57 | const task = realm.create("Task", new Task({ description }));
58 | projectO.tasks.push(task);
59 |
60 | Alert.alert("Success Creating New Task");
61 | });
62 | } catch (e) {
63 | Alert.alert("Error Creating Task", e.message);
64 | }
65 | },
66 | [realm]
67 | );
68 |
69 | const handleToggleTaskStatus = useCallback(
70 | (task) => {
71 | realm.write(() => {
72 | // Normally when updating a record in a NoSQL or SQL database, we have to type
73 | // a statement that will later be interpreted and used as instructions for how
74 | // to update the record. But in RealmDB, the objects are "live" because they are
75 | // actually referencing the object's location in memory on the device (memory mapping).
76 | // So rather than typing a statement, we modify the object directly by changing
77 | // the property values. If the changes adhere to the schema, Realm will accept
78 | // this new version of the object and wherever this object is being referenced
79 | // locally will also see the changes "live".
80 | task.isComplete = !task.isComplete;
81 | });
82 |
83 | // Alternatively if passing the ID as the argument to handleToggleTaskStatus:
84 | // realm?.write(() => {
85 | // const task = realm?.objectForPrimaryKey('Task', id); // If the ID is passed as an ObjectId
86 | // const task = realm?.objectForPrimaryKey('Task', Realm.BSON.ObjectId(id)); // If the ID is passed as a string
87 | // task.isComplete = !task.isComplete;
88 | // });
89 | },
90 | [realm]
91 | );
92 |
93 | const handleDeleteTask = useCallback(
94 | (task) => {
95 | realm.write(() => {
96 | realm.delete(task);
97 |
98 | // Alternatively if passing the ID as the argument to handleDeleteTask:
99 | // realm?.delete(realm?.objectForPrimaryKey('Task', id));
100 | });
101 | },
102 | [realm]
103 | );
104 |
105 | return (
106 |
107 |
108 |
109 | navigation.navigate("Projects")}
120 | >
121 |
122 | See All Projects
123 |
124 |
125 |
126 |
127 | {tasks.length === 0 ? (
128 |
129 | ) : (
130 |
135 | )}
136 |
137 |
138 | );
139 | }
140 | const styles = StyleSheet.create({
141 | screen: {
142 | flex: 1,
143 | backgroundColor: colors.darkBlue,
144 | },
145 | content: {
146 | flex: 1,
147 | paddingHorizontal: 20,
148 | },
149 | });
150 |
--------------------------------------------------------------------------------
/app/ProjectScreen.js:
--------------------------------------------------------------------------------
1 | import React, { useCallback, useMemo } from "react";
2 | import { View, StyleSheet, Alert } from "react-native";
3 | import { Project, useQuery, useRealm } from "./models/Project";
4 | import { SafeAreaView } from "react-native-safe-area-context";
5 | import ProjectList from "./components/ProjectList";
6 | import AddProjectForm from "./components/AddProjectForm";
7 | import colors from "./styles/colors";
8 |
9 | export function ProjectScreen({ navigation }) {
10 | const realm = useRealm();
11 | const result = useQuery("Project");
12 | const projects = useMemo(() => result.sorted("createdAt", true), [result]);
13 |
14 | const handleAddProject = useCallback(
15 | ({ name }) => {
16 | if (!name) {
17 | return;
18 | }
19 | try {
20 | realm.write(() => {
21 | const project = realm.create(
22 | "Project",
23 | new Project({ name, tasks: [] })
24 | );
25 | });
26 | Alert.alert("Success Creating New Project");
27 | } catch (e) {
28 | Alert.alert("Error Creating Project", e.message);
29 | }
30 | },
31 | [realm]
32 | );
33 |
34 | /**
35 | *
36 | */
37 | const handleDeleteProject = (project) => {
38 | try {
39 | realm.write(() => {
40 | //delete all tasks associated with project, no cascade delete
41 | realm.delete(project.tasks);
42 |
43 | // delete the actual task
44 | realm?.delete(realm?.objectForPrimaryKey("Project", project?._id));
45 | });
46 | Alert.alert("Success Deleting Project");
47 | } catch (e) {
48 | Alert.alert("Error Deleting Project", e.message);
49 | }
50 | };
51 |
52 | return (
53 |
54 |
55 |
56 |
57 |
58 |
59 | );
60 | }
61 |
62 | export const styles = StyleSheet.create({
63 | screen: {
64 | flex: 1,
65 | backgroundColor: colors.darkBlue,
66 | },
67 | content: {
68 | flex: 1,
69 | // paddingTop: 20,
70 | paddingHorizontal: 20,
71 | },
72 | });
73 |
--------------------------------------------------------------------------------
/app/components/AddProjectForm.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import {
3 | View,
4 | Text,
5 | TextInput,
6 | Pressable,
7 | Platform,
8 | StyleSheet,
9 | } from "react-native";
10 |
11 | import colors from "../styles/colors";
12 |
13 | function AddProjectForm({ onSubmit }) {
14 | const [name, setName] = useState("");
15 |
16 | const handleSubmit = () => {
17 | onSubmit({name});
18 | setName("");
19 | };
20 |
21 | return (
22 |
23 |
24 |
32 |
33 |
34 | +
35 |
36 |
37 | );
38 | }
39 |
40 | const styles = StyleSheet.create({
41 | form: {
42 | height: 'auto',
43 | marginBottom: 20,
44 | flexDirection: "row",
45 | ...Platform.select({
46 | ios: {
47 | shadowColor: colors.black,
48 | shadowOffset: {
49 | width: 0,
50 | height: 4,
51 | },
52 | shadowOpacity: 0.7,
53 | shadowRadius: 3,
54 | },
55 | android: {
56 | elevation: 3,
57 | },
58 | }),
59 | },
60 | textInput: {
61 | paddingHorizontal: 15,
62 | paddingVertical: Platform.OS === "ios" ? 15 : 0,
63 | borderRadius: 5,
64 | backgroundColor: colors.white,
65 | fontSize: 17,
66 | marginBottom: 12
67 | },
68 | submit: {
69 | height: 50,
70 | width: 50,
71 | justifyContent: "center",
72 | alignItems: "center",
73 | marginLeft: 20,
74 | borderRadius: 5,
75 | backgroundColor: colors.purple,
76 | },
77 | icon: {
78 | color: colors.white,
79 | textAlign: "center",
80 | fontSize: 17,
81 | fontWeight: "bold",
82 | },
83 | });
84 |
85 | export default AddProjectForm;
86 |
--------------------------------------------------------------------------------
/app/components/AddTaskForm.js:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import {
3 | View,
4 | Text,
5 | TextInput,
6 | Pressable,
7 | Platform,
8 | StyleSheet,
9 | } from "react-native";
10 |
11 | import colors from "../styles/colors";
12 |
13 | function AddTaskForm({ onSubmit }) {
14 | const [description, setDescription] = useState("");
15 | const [project, setProject] = useState("");
16 |
17 | const handleSubmit = () => {
18 | onSubmit({description, project});
19 | setDescription("");
20 | setProject("");
21 | };
22 |
23 | return (
24 |
25 |
26 |
34 |
42 |
43 |
44 | +
45 |
46 |
47 | );
48 | }
49 |
50 | const styles = StyleSheet.create({
51 | form: {
52 | height: 'auto',
53 | marginBottom: 20,
54 | flexDirection: "row",
55 | ...Platform.select({
56 | ios: {
57 | shadowColor: colors.black,
58 | shadowOffset: {
59 | width: 0,
60 | height: 4,
61 | },
62 | shadowOpacity: 0.7,
63 | shadowRadius: 3,
64 | },
65 | android: {
66 | elevation: 3,
67 | },
68 | }),
69 | },
70 | textInput: {
71 | paddingHorizontal: 15,
72 | paddingVertical: Platform.OS === "ios" ? 15 : 0,
73 | borderRadius: 5,
74 | backgroundColor: colors.white,
75 | fontSize: 17,
76 | marginBottom: 12
77 | },
78 | submit: {
79 | height: 50,
80 | width: 50,
81 | justifyContent: "center",
82 | alignItems: "center",
83 | marginLeft: 20,
84 | borderRadius: 5,
85 | backgroundColor: colors.purple,
86 | },
87 | icon: {
88 | color: colors.white,
89 | textAlign: "center",
90 | fontSize: 17,
91 | fontWeight: "bold",
92 | },
93 | });
94 |
95 | export default AddTaskForm;
96 |
--------------------------------------------------------------------------------
/app/components/IntroText.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {View, Text, Pressable, StyleSheet} from 'react-native';
3 | import openURLInBrowser from 'react-native/Libraries/Core/Devtools/openURLInBrowser'; // TODO: Replace library
4 |
5 | import colors from '../styles/colors';
6 |
7 | function IntroText() {
8 | return (
9 |
10 |
11 | Welcome to the Realm React Native JavaScript Template
12 |
13 |
14 | Start adding a task using the form at the top of the screen to see how
15 | they are created in Realm. You can also toggle the task status or remove
16 | it from the list.
17 |
18 |
19 | Learn more about the React Native Realm SDK at:
20 |
21 |
23 | openURLInBrowser('https://docs.mongodb.com/realm/sdk/react-native/')
24 | }>
25 |
26 | docs.mongodb.com/realm/sdk/react-native
27 |
28 |
29 |
30 | );
31 | }
32 |
33 | const styles = StyleSheet.create({
34 | content: {
35 | flex: 1,
36 | marginHorizontal: 20,
37 | justifyContent: 'center',
38 | },
39 | paragraph: {
40 | marginVertical: 10,
41 | textAlign: 'center',
42 | color: 'white',
43 | fontSize: 17,
44 | fontWeight: '500',
45 | },
46 | link: {
47 | color: colors.purple,
48 | fontWeight: 'bold',
49 | },
50 | });
51 |
52 | export default IntroText;
53 |
--------------------------------------------------------------------------------
/app/components/ProjectList.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { View, FlatList, StyleSheet, Text, Pressable } from "react-native";
3 | import { Project } from "../models/Project";
4 | import colors from "../styles/colors";
5 |
6 | import TaskItem from "./TaskItem";
7 |
8 | function ProjectList({ projects, onDelete }) {
9 | return (
10 |
11 | Project._id.toString()}
14 | renderItem={({ item }) => (
15 |
16 |
17 |
18 | {item.name} {item.tasks?.length}
19 |
20 |
21 | {item.createdAt.toString()}
22 |
23 |
24 | onDelete(item)} style={styles.deleteButton}>
25 | Delete
26 |
27 |
28 | )}
29 | />
30 |
31 | );
32 | }
33 |
34 | const styles = StyleSheet.create({
35 | listContainer: {
36 | flex: 1,
37 | width: "100%",
38 | justifyContent: "center",
39 | },
40 | project: {
41 | height: 50,
42 | flex: 1,
43 | alignSelf: "stretch",
44 | flexDirection: "row",
45 | marginVertical: 8,
46 | backgroundColor: colors.white,
47 | borderRadius: 5,
48 | ...Platform.select({
49 | ios: {
50 | shadowColor: colors.black,
51 | shadowOffset: {
52 | width: 0,
53 | height: 4,
54 | },
55 | shadowOpacity: 0.7,
56 | shadowRadius: 3,
57 | },
58 | android: {
59 | elevation: 3,
60 | },
61 | }),
62 | },
63 | projectContainer: {
64 | flex: 1,
65 | justifyContent: "center",
66 | },
67 | projectDescription: {
68 | paddingHorizontal: 10,
69 | color: colors.black,
70 | fontSize: 17,
71 | },
72 | projectCreatedAt: {
73 | paddingHorizontal: 10,
74 | color: colors.black,
75 | fontSize: 12,
76 | },
77 | status: {
78 | width: 50,
79 | height: "100%",
80 | justifyContent: "center",
81 | borderTopLeftRadius: 5,
82 | borderBottomLeftRadius: 5,
83 | backgroundColor: colors.gray,
84 | },
85 | completed: {
86 | backgroundColor: colors.purple,
87 | },
88 | deleteButton: {
89 | justifyContent: "center",
90 | },
91 | deleteText: {
92 | marginHorizontal: 10,
93 | color: colors.gray,
94 | fontSize: 17,
95 | },
96 | icon: {
97 | color: colors.white,
98 | textAlign: "center",
99 | fontSize: 17,
100 | fontWeight: "bold",
101 | },
102 | });
103 |
104 | export default ProjectList;
105 |
--------------------------------------------------------------------------------
/app/components/TaskItem.js:
--------------------------------------------------------------------------------
1 | import React, {memo} from 'react';
2 | import {View, Text, Pressable, Platform, StyleSheet} from 'react-native';
3 |
4 | import colors from '../styles/colors';
5 |
6 | function TaskItem({description, isComplete, onToggleStatus, onDelete, project}) {
7 | console.log("Task Project - ",project)
8 | return (
9 |
10 |
13 | {isComplete ? '✓' : '○'}
14 |
15 |
16 |
17 | {description}
18 |
19 |
20 | {project[0]?.name}
21 |
22 |
23 |
24 | Delete
25 |
26 |
27 | );
28 | }
29 |
30 | const styles = StyleSheet.create({
31 | task: {
32 | height: 50,
33 | alignSelf: 'stretch',
34 | flexDirection: 'row',
35 | marginVertical: 8,
36 | backgroundColor: colors.white,
37 | borderRadius: 5,
38 | ...Platform.select({
39 | ios: {
40 | shadowColor: colors.black,
41 | shadowOffset: {
42 | width: 0,
43 | height: 4,
44 | },
45 | shadowOpacity: 0.7,
46 | shadowRadius: 3,
47 | },
48 | android: {
49 | elevation: 3,
50 | },
51 | }),
52 | },
53 | descriptionContainer: {
54 | flex: 1,
55 | justifyContent: 'center',
56 | },
57 | description: {
58 | paddingHorizontal: 10,
59 | color: colors.black,
60 | fontSize: 17,
61 | },
62 | project: {
63 | paddingHorizontal: 10,
64 | color: colors.black,
65 | fontSize: 12,
66 | },
67 | status: {
68 | width: 50,
69 | height: '100%',
70 | justifyContent: 'center',
71 | borderTopLeftRadius: 5,
72 | borderBottomLeftRadius: 5,
73 | backgroundColor: colors.gray,
74 | },
75 | completed: {
76 | backgroundColor: colors.purple,
77 | },
78 | deleteButton: {
79 | justifyContent: 'center',
80 | },
81 | deleteText: {
82 | marginHorizontal: 10,
83 | color: colors.gray,
84 | fontSize: 17,
85 | },
86 | icon: {
87 | color: colors.white,
88 | textAlign: 'center',
89 | fontSize: 17,
90 | fontWeight: 'bold',
91 | },
92 | });
93 |
94 | // We want to make sure only tasks that change are rerendered
95 | const shouldNotRerender = (prevProps, nextProps) =>
96 | prevProps.description === nextProps.description &&
97 | prevProps.isComplete === nextProps.isComplete;
98 |
99 | export default memo(TaskItem, shouldNotRerender);
100 |
--------------------------------------------------------------------------------
/app/components/TaskList.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {View, FlatList, StyleSheet} from 'react-native';
3 |
4 | import TaskItem from './TaskItem';
5 |
6 | function TaskList({tasks, onToggleTaskStatus, onDeleteTask}) {
7 | return (
8 |
9 | task._id.toString()}
12 | renderItem={({item}) => (
13 | onToggleTaskStatus(item)}
18 | onDelete={() => onDeleteTask(item)}
19 | // Don't spread the Realm item as such: {...item}
20 | />
21 | )}
22 | />
23 |
24 | );
25 | }
26 |
27 | const styles = StyleSheet.create({
28 | listContainer: {
29 | flex: 1,
30 | justifyContent: 'center',
31 | },
32 | });
33 |
34 | export default TaskList;
35 |
--------------------------------------------------------------------------------
/app/models/Project.js:
--------------------------------------------------------------------------------
1 | import { createRealmContext, Realm } from '@realm/react';
2 | import { Task } from './Task';
3 |
4 | export class Project {
5 | constructor({id = new Realm.BSON.ObjectId(), name}) {
6 | this.name = name;
7 | this.createdAt = new Date();
8 | this._id = id;
9 | this.tasks = [];
10 | }
11 |
12 | // To use a class as a Realm object type, define the object schema on the static property "schema".
13 | static schema = {
14 | name: 'Project',
15 | primaryKey: '_id',
16 | properties: {
17 | _id: 'objectId',
18 | name: 'string',
19 | tasks: 'Task[]',
20 | createdAt: 'date'
21 | },
22 | };
23 | }
24 |
25 | export const { useRealm, useQuery, RealmProvider } = createRealmContext({
26 | schema: [Task.schema, Project.schema],
27 | deleteRealmIfMigrationNeeded: true,
28 | });
--------------------------------------------------------------------------------
/app/models/Task.js:
--------------------------------------------------------------------------------
1 | import { Realm, createRealmContext } from '@realm/react';
2 |
3 | export class Task {
4 | constructor({id = new Realm.BSON.ObjectId(), description, isComplete = false}) {
5 | this.description = description;
6 | this.isComplete = isComplete;
7 | this.createdAt = new Date();
8 | this._id = id;
9 | }
10 |
11 | // To use a class as a Realm object type, define the object schema on
12 | // the static property "schema".
13 | //
14 | // also creating a relationship back to the parent project using the linkingObjects
15 | // which in this case will be an array of one element, which is the parent. It looks
16 | // weird in the code but in works
17 | // https://docs.mongodb.com/realm/sdk/react-native/examples/define-a-realm-object-model/#define-relationship-properties
18 | // https://stackoverflow.com/questions/69711011/is-there-a-way-to-present-one2many-relation-in-correct-way-in-realm
19 | static schema = {
20 | name: 'Task',
21 | primaryKey: '_id',
22 | properties: {
23 | _id: 'objectId',
24 | description: 'string',
25 | isComplete: {type: 'bool', default: false},
26 | createdAt: 'date',
27 | project: { type : 'linkingObjects', objectType : 'Project', property: 'tasks' }
28 | },
29 | };
30 | }
31 |
--------------------------------------------------------------------------------
/app/styles/colors.js:
--------------------------------------------------------------------------------
1 | const colors = {
2 | darkBlue: '#2A3642',
3 | purple: '#6E60F9',
4 | gray: '#B5B5B5',
5 | white: '#FFFFFF',
6 | black: '#000000',
7 | };
8 |
9 | export default colors;
10 |
--------------------------------------------------------------------------------
/assets/adaptive-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaronksaunders/ReactNativeRealm-Expo-Template/08b6d2c62aaf3c0485a1ead03e08602b87e82a8c/assets/adaptive-icon.png
--------------------------------------------------------------------------------
/assets/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaronksaunders/ReactNativeRealm-Expo-Template/08b6d2c62aaf3c0485a1ead03e08602b87e82a8c/assets/favicon.png
--------------------------------------------------------------------------------
/assets/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaronksaunders/ReactNativeRealm-Expo-Template/08b6d2c62aaf3c0485a1ead03e08602b87e82a8c/assets/icon.png
--------------------------------------------------------------------------------
/assets/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaronksaunders/ReactNativeRealm-Expo-Template/08b6d2c62aaf3c0485a1ead03e08602b87e82a8c/assets/splash.png
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = function(api) {
2 | api.cache(true);
3 | return {
4 | presets: ['babel-preset-expo'],
5 | };
6 | };
7 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | import 'expo-dev-client';
2 |
3 | import 'react-native-get-random-values';
4 | import "expo-dev-client";
5 |
6 | import { registerRootComponent } from "expo";
7 |
8 | import App from "./App";
9 |
10 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App);
11 | // It also ensures that whether you load the app in the Expo client or in a native build,
12 | // the environment is set up appropriately
13 | registerRootComponent(App);
14 |
--------------------------------------------------------------------------------
/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 | require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")
4 |
5 | platform :ios, '12.0'
6 |
7 | require 'json'
8 | podfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {}
9 |
10 | target 'ReactRealmJsTemplateApp' do
11 | use_expo_modules!
12 | config = use_native_modules!
13 |
14 | pod 'expo-dev-launcher', path: '../node_modules/expo-dev-launcher', :configurations => :debug
15 | pod 'expo-dev-menu', path: '../node_modules/expo-dev-menu', :configurations => :debug
16 | use_react_native!(
17 | :path => config[:reactNativePath],
18 | :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes'
19 | )
20 |
21 | # Uncomment to opt-in to using Flipper
22 | #
23 | # if !ENV['CI']
24 | # use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
25 | # end
26 |
27 | post_install do |installer|
28 | react_native_post_install(installer)
29 |
30 | # Workaround `Cycle inside FBReactNativeSpec` error for react-native 0.64
31 | # Reference: https://github.com/software-mansion/react-native-screens/issues/842#issuecomment-812543933
32 | installer.pods_project.targets.each do |target|
33 | if (target.name&.eql?('FBReactNativeSpec'))
34 | target.build_phases.each do |build_phase|
35 | if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
36 | target.build_phases.move(build_phase, 0)
37 | end
38 | end
39 | end
40 | end
41 | end
42 |
43 | post_integrate do |installer|
44 | begin
45 | expo_patch_react_imports!(installer)
46 | rescue => e
47 | Pod::UI.warn e
48 | end
49 | end
50 |
51 | end
52 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - boost-for-react-native (1.63.0)
3 | - DoubleConversion (1.1.6)
4 | - EXApplication (4.0.2):
5 | - ExpoModulesCore
6 | - EXConstants (13.0.2):
7 | - ExpoModulesCore
8 | - EXErrorRecovery (3.0.5):
9 | - ExpoModulesCore
10 | - EXFileSystem (13.1.3):
11 | - ExpoModulesCore
12 | - EXFont (10.0.5):
13 | - ExpoModulesCore
14 | - EXJSONUtils (0.2.1)
15 | - EXKeepAwake (10.0.2):
16 | - ExpoModulesCore
17 | - EXManifests (0.2.4):
18 | - EXJSONUtils
19 | - Expo (44.0.6):
20 | - ExpoModulesCore
21 | - expo-dev-client (0.8.4):
22 | - EXManifests
23 | - expo-dev-launcher
24 | - expo-dev-menu
25 | - expo-dev-menu-interface
26 | - EXUpdatesInterface
27 | - expo-dev-launcher (0.10.4):
28 | - EXManifests
29 | - expo-dev-launcher/Main (= 0.10.4)
30 | - expo-dev-menu
31 | - expo-dev-menu-interface
32 | - EXUpdatesInterface
33 | - React-Core
34 | - expo-dev-launcher/Main (0.10.4):
35 | - EXManifests
36 | - expo-dev-launcher/Unsafe
37 | - expo-dev-menu
38 | - expo-dev-menu-interface
39 | - EXUpdatesInterface
40 | - React-Core
41 | - expo-dev-launcher/Unsafe (0.10.4):
42 | - EXManifests
43 | - expo-dev-menu
44 | - expo-dev-menu-interface
45 | - EXUpdatesInterface
46 | - React-Core
47 | - expo-dev-menu (0.9.3):
48 | - expo-dev-menu/Main (= 0.9.3)
49 | - expo-dev-menu-interface (0.5.3)
50 | - expo-dev-menu/GestureHandler (0.9.3)
51 | - expo-dev-menu/Main (0.9.3):
52 | - expo-dev-menu-interface
53 | - expo-dev-menu/Vendored
54 | - React-Core
55 | - expo-dev-menu/Reanimated (0.9.3):
56 | - DoubleConversion
57 | - FBLazyVector
58 | - FBReactNativeSpec
59 | - glog
60 | - RCT-Folly
61 | - RCTRequired
62 | - RCTTypeSafety
63 | - React-callinvoker
64 | - React-Core
65 | - React-Core/DevSupport
66 | - React-Core/RCTWebSocket
67 | - React-CoreModules
68 | - React-cxxreact
69 | - React-jsi
70 | - React-jsiexecutor
71 | - React-jsinspector
72 | - React-RCTActionSheet
73 | - React-RCTAnimation
74 | - React-RCTBlob
75 | - React-RCTImage
76 | - React-RCTLinking
77 | - React-RCTNetwork
78 | - React-RCTSettings
79 | - React-RCTText
80 | - React-RCTVibration
81 | - ReactCommon/turbomodule/core
82 | - Yoga
83 | - expo-dev-menu/SafeAreaView (0.9.3)
84 | - expo-dev-menu/Vendored (0.9.3):
85 | - expo-dev-menu/GestureHandler
86 | - expo-dev-menu/Reanimated
87 | - expo-dev-menu/SafeAreaView
88 | - ExpoModulesCore (0.6.5):
89 | - React-Core
90 | - ReactCommon/turbomodule/core
91 | - EXSplashScreen (0.14.2):
92 | - ExpoModulesCore
93 | - React-Core
94 | - EXStructuredHeaders (2.1.1)
95 | - EXUpdates (0.11.6):
96 | - EXManifests
97 | - ExpoModulesCore
98 | - EXStructuredHeaders
99 | - EXUpdatesInterface
100 | - React-Core
101 | - EXUpdatesInterface (0.5.1)
102 | - FBLazyVector (0.64.3)
103 | - FBReactNativeSpec (0.64.3):
104 | - RCT-Folly (= 2020.01.13.00)
105 | - RCTRequired (= 0.64.3)
106 | - RCTTypeSafety (= 0.64.3)
107 | - React-Core (= 0.64.3)
108 | - React-jsi (= 0.64.3)
109 | - ReactCommon/turbomodule/core (= 0.64.3)
110 | - GCDWebServer (3.5.4):
111 | - GCDWebServer/Core (= 3.5.4)
112 | - GCDWebServer/Core (3.5.4)
113 | - glog (0.3.5)
114 | - RCT-Folly (2020.01.13.00):
115 | - boost-for-react-native
116 | - DoubleConversion
117 | - glog
118 | - RCT-Folly/Default (= 2020.01.13.00)
119 | - RCT-Folly/Default (2020.01.13.00):
120 | - boost-for-react-native
121 | - DoubleConversion
122 | - glog
123 | - RCTRequired (0.64.3)
124 | - RCTTypeSafety (0.64.3):
125 | - FBLazyVector (= 0.64.3)
126 | - RCT-Folly (= 2020.01.13.00)
127 | - RCTRequired (= 0.64.3)
128 | - React-Core (= 0.64.3)
129 | - React (0.64.3):
130 | - React-Core (= 0.64.3)
131 | - React-Core/DevSupport (= 0.64.3)
132 | - React-Core/RCTWebSocket (= 0.64.3)
133 | - React-RCTActionSheet (= 0.64.3)
134 | - React-RCTAnimation (= 0.64.3)
135 | - React-RCTBlob (= 0.64.3)
136 | - React-RCTImage (= 0.64.3)
137 | - React-RCTLinking (= 0.64.3)
138 | - React-RCTNetwork (= 0.64.3)
139 | - React-RCTSettings (= 0.64.3)
140 | - React-RCTText (= 0.64.3)
141 | - React-RCTVibration (= 0.64.3)
142 | - React-callinvoker (0.64.3)
143 | - React-Core (0.64.3):
144 | - glog
145 | - RCT-Folly (= 2020.01.13.00)
146 | - React-Core/Default (= 0.64.3)
147 | - React-cxxreact (= 0.64.3)
148 | - React-jsi (= 0.64.3)
149 | - React-jsiexecutor (= 0.64.3)
150 | - React-perflogger (= 0.64.3)
151 | - Yoga
152 | - React-Core/CoreModulesHeaders (0.64.3):
153 | - glog
154 | - RCT-Folly (= 2020.01.13.00)
155 | - React-Core/Default
156 | - React-cxxreact (= 0.64.3)
157 | - React-jsi (= 0.64.3)
158 | - React-jsiexecutor (= 0.64.3)
159 | - React-perflogger (= 0.64.3)
160 | - Yoga
161 | - React-Core/Default (0.64.3):
162 | - glog
163 | - RCT-Folly (= 2020.01.13.00)
164 | - React-cxxreact (= 0.64.3)
165 | - React-jsi (= 0.64.3)
166 | - React-jsiexecutor (= 0.64.3)
167 | - React-perflogger (= 0.64.3)
168 | - Yoga
169 | - React-Core/DevSupport (0.64.3):
170 | - glog
171 | - RCT-Folly (= 2020.01.13.00)
172 | - React-Core/Default (= 0.64.3)
173 | - React-Core/RCTWebSocket (= 0.64.3)
174 | - React-cxxreact (= 0.64.3)
175 | - React-jsi (= 0.64.3)
176 | - React-jsiexecutor (= 0.64.3)
177 | - React-jsinspector (= 0.64.3)
178 | - React-perflogger (= 0.64.3)
179 | - Yoga
180 | - React-Core/RCTActionSheetHeaders (0.64.3):
181 | - glog
182 | - RCT-Folly (= 2020.01.13.00)
183 | - React-Core/Default
184 | - React-cxxreact (= 0.64.3)
185 | - React-jsi (= 0.64.3)
186 | - React-jsiexecutor (= 0.64.3)
187 | - React-perflogger (= 0.64.3)
188 | - Yoga
189 | - React-Core/RCTAnimationHeaders (0.64.3):
190 | - glog
191 | - RCT-Folly (= 2020.01.13.00)
192 | - React-Core/Default
193 | - React-cxxreact (= 0.64.3)
194 | - React-jsi (= 0.64.3)
195 | - React-jsiexecutor (= 0.64.3)
196 | - React-perflogger (= 0.64.3)
197 | - Yoga
198 | - React-Core/RCTBlobHeaders (0.64.3):
199 | - glog
200 | - RCT-Folly (= 2020.01.13.00)
201 | - React-Core/Default
202 | - React-cxxreact (= 0.64.3)
203 | - React-jsi (= 0.64.3)
204 | - React-jsiexecutor (= 0.64.3)
205 | - React-perflogger (= 0.64.3)
206 | - Yoga
207 | - React-Core/RCTImageHeaders (0.64.3):
208 | - glog
209 | - RCT-Folly (= 2020.01.13.00)
210 | - React-Core/Default
211 | - React-cxxreact (= 0.64.3)
212 | - React-jsi (= 0.64.3)
213 | - React-jsiexecutor (= 0.64.3)
214 | - React-perflogger (= 0.64.3)
215 | - Yoga
216 | - React-Core/RCTLinkingHeaders (0.64.3):
217 | - glog
218 | - RCT-Folly (= 2020.01.13.00)
219 | - React-Core/Default
220 | - React-cxxreact (= 0.64.3)
221 | - React-jsi (= 0.64.3)
222 | - React-jsiexecutor (= 0.64.3)
223 | - React-perflogger (= 0.64.3)
224 | - Yoga
225 | - React-Core/RCTNetworkHeaders (0.64.3):
226 | - glog
227 | - RCT-Folly (= 2020.01.13.00)
228 | - React-Core/Default
229 | - React-cxxreact (= 0.64.3)
230 | - React-jsi (= 0.64.3)
231 | - React-jsiexecutor (= 0.64.3)
232 | - React-perflogger (= 0.64.3)
233 | - Yoga
234 | - React-Core/RCTSettingsHeaders (0.64.3):
235 | - glog
236 | - RCT-Folly (= 2020.01.13.00)
237 | - React-Core/Default
238 | - React-cxxreact (= 0.64.3)
239 | - React-jsi (= 0.64.3)
240 | - React-jsiexecutor (= 0.64.3)
241 | - React-perflogger (= 0.64.3)
242 | - Yoga
243 | - React-Core/RCTTextHeaders (0.64.3):
244 | - glog
245 | - RCT-Folly (= 2020.01.13.00)
246 | - React-Core/Default
247 | - React-cxxreact (= 0.64.3)
248 | - React-jsi (= 0.64.3)
249 | - React-jsiexecutor (= 0.64.3)
250 | - React-perflogger (= 0.64.3)
251 | - Yoga
252 | - React-Core/RCTVibrationHeaders (0.64.3):
253 | - glog
254 | - RCT-Folly (= 2020.01.13.00)
255 | - React-Core/Default
256 | - React-cxxreact (= 0.64.3)
257 | - React-jsi (= 0.64.3)
258 | - React-jsiexecutor (= 0.64.3)
259 | - React-perflogger (= 0.64.3)
260 | - Yoga
261 | - React-Core/RCTWebSocket (0.64.3):
262 | - glog
263 | - RCT-Folly (= 2020.01.13.00)
264 | - React-Core/Default (= 0.64.3)
265 | - React-cxxreact (= 0.64.3)
266 | - React-jsi (= 0.64.3)
267 | - React-jsiexecutor (= 0.64.3)
268 | - React-perflogger (= 0.64.3)
269 | - Yoga
270 | - React-CoreModules (0.64.3):
271 | - FBReactNativeSpec (= 0.64.3)
272 | - RCT-Folly (= 2020.01.13.00)
273 | - RCTTypeSafety (= 0.64.3)
274 | - React-Core/CoreModulesHeaders (= 0.64.3)
275 | - React-jsi (= 0.64.3)
276 | - React-RCTImage (= 0.64.3)
277 | - ReactCommon/turbomodule/core (= 0.64.3)
278 | - React-cxxreact (0.64.3):
279 | - boost-for-react-native (= 1.63.0)
280 | - DoubleConversion
281 | - glog
282 | - RCT-Folly (= 2020.01.13.00)
283 | - React-callinvoker (= 0.64.3)
284 | - React-jsi (= 0.64.3)
285 | - React-jsinspector (= 0.64.3)
286 | - React-perflogger (= 0.64.3)
287 | - React-runtimeexecutor (= 0.64.3)
288 | - React-jsi (0.64.3):
289 | - boost-for-react-native (= 1.63.0)
290 | - DoubleConversion
291 | - glog
292 | - RCT-Folly (= 2020.01.13.00)
293 | - React-jsi/Default (= 0.64.3)
294 | - React-jsi/Default (0.64.3):
295 | - boost-for-react-native (= 1.63.0)
296 | - DoubleConversion
297 | - glog
298 | - RCT-Folly (= 2020.01.13.00)
299 | - React-jsiexecutor (0.64.3):
300 | - DoubleConversion
301 | - glog
302 | - RCT-Folly (= 2020.01.13.00)
303 | - React-cxxreact (= 0.64.3)
304 | - React-jsi (= 0.64.3)
305 | - React-perflogger (= 0.64.3)
306 | - React-jsinspector (0.64.3)
307 | - react-native-get-random-values (1.7.2):
308 | - React-Core
309 | - react-native-safe-area-context (3.3.2):
310 | - React-Core
311 | - React-perflogger (0.64.3)
312 | - React-RCTActionSheet (0.64.3):
313 | - React-Core/RCTActionSheetHeaders (= 0.64.3)
314 | - React-RCTAnimation (0.64.3):
315 | - FBReactNativeSpec (= 0.64.3)
316 | - RCT-Folly (= 2020.01.13.00)
317 | - RCTTypeSafety (= 0.64.3)
318 | - React-Core/RCTAnimationHeaders (= 0.64.3)
319 | - React-jsi (= 0.64.3)
320 | - ReactCommon/turbomodule/core (= 0.64.3)
321 | - React-RCTBlob (0.64.3):
322 | - FBReactNativeSpec (= 0.64.3)
323 | - RCT-Folly (= 2020.01.13.00)
324 | - React-Core/RCTBlobHeaders (= 0.64.3)
325 | - React-Core/RCTWebSocket (= 0.64.3)
326 | - React-jsi (= 0.64.3)
327 | - React-RCTNetwork (= 0.64.3)
328 | - ReactCommon/turbomodule/core (= 0.64.3)
329 | - React-RCTImage (0.64.3):
330 | - FBReactNativeSpec (= 0.64.3)
331 | - RCT-Folly (= 2020.01.13.00)
332 | - RCTTypeSafety (= 0.64.3)
333 | - React-Core/RCTImageHeaders (= 0.64.3)
334 | - React-jsi (= 0.64.3)
335 | - React-RCTNetwork (= 0.64.3)
336 | - ReactCommon/turbomodule/core (= 0.64.3)
337 | - React-RCTLinking (0.64.3):
338 | - FBReactNativeSpec (= 0.64.3)
339 | - React-Core/RCTLinkingHeaders (= 0.64.3)
340 | - React-jsi (= 0.64.3)
341 | - ReactCommon/turbomodule/core (= 0.64.3)
342 | - React-RCTNetwork (0.64.3):
343 | - FBReactNativeSpec (= 0.64.3)
344 | - RCT-Folly (= 2020.01.13.00)
345 | - RCTTypeSafety (= 0.64.3)
346 | - React-Core/RCTNetworkHeaders (= 0.64.3)
347 | - React-jsi (= 0.64.3)
348 | - ReactCommon/turbomodule/core (= 0.64.3)
349 | - React-RCTSettings (0.64.3):
350 | - FBReactNativeSpec (= 0.64.3)
351 | - RCT-Folly (= 2020.01.13.00)
352 | - RCTTypeSafety (= 0.64.3)
353 | - React-Core/RCTSettingsHeaders (= 0.64.3)
354 | - React-jsi (= 0.64.3)
355 | - ReactCommon/turbomodule/core (= 0.64.3)
356 | - React-RCTText (0.64.3):
357 | - React-Core/RCTTextHeaders (= 0.64.3)
358 | - React-RCTVibration (0.64.3):
359 | - FBReactNativeSpec (= 0.64.3)
360 | - RCT-Folly (= 2020.01.13.00)
361 | - React-Core/RCTVibrationHeaders (= 0.64.3)
362 | - React-jsi (= 0.64.3)
363 | - ReactCommon/turbomodule/core (= 0.64.3)
364 | - React-runtimeexecutor (0.64.3):
365 | - React-jsi (= 0.64.3)
366 | - ReactCommon/turbomodule/core (0.64.3):
367 | - DoubleConversion
368 | - glog
369 | - RCT-Folly (= 2020.01.13.00)
370 | - React-callinvoker (= 0.64.3)
371 | - React-Core (= 0.64.3)
372 | - React-cxxreact (= 0.64.3)
373 | - React-jsi (= 0.64.3)
374 | - React-perflogger (= 0.64.3)
375 | - RealmJS (10.12.0):
376 | - GCDWebServer
377 | - React
378 | - RNScreens (3.10.2):
379 | - React-Core
380 | - React-RCTImage
381 | - Yoga (1.14.0)
382 |
383 | DEPENDENCIES:
384 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
385 | - EXApplication (from `../node_modules/expo-application/ios`)
386 | - EXConstants (from `../node_modules/expo-constants/ios`)
387 | - EXErrorRecovery (from `../node_modules/expo-error-recovery/ios`)
388 | - EXFileSystem (from `../node_modules/expo-file-system/ios`)
389 | - EXFont (from `../node_modules/expo-font/ios`)
390 | - EXJSONUtils (from `../node_modules/expo-json-utils/ios`)
391 | - EXKeepAwake (from `../node_modules/expo-keep-awake/ios`)
392 | - EXManifests (from `../node_modules/expo-manifests/ios`)
393 | - Expo (from `../node_modules/expo/ios`)
394 | - expo-dev-client (from `../node_modules/expo-dev-client/ios`)
395 | - expo-dev-launcher (from `../node_modules/expo-dev-launcher`)
396 | - expo-dev-menu (from `../node_modules/expo-dev-menu`)
397 | - expo-dev-menu-interface (from `../node_modules/expo-dev-menu-interface/ios`)
398 | - ExpoModulesCore (from `../node_modules/expo-modules-core/ios`)
399 | - EXSplashScreen (from `../node_modules/expo-splash-screen/ios`)
400 | - EXStructuredHeaders (from `../node_modules/expo-structured-headers/ios`)
401 | - EXUpdates (from `../node_modules/expo-updates/ios`)
402 | - EXUpdatesInterface (from `../node_modules/expo-updates-interface/ios`)
403 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
404 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
405 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
406 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
407 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
408 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
409 | - React (from `../node_modules/react-native/`)
410 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
411 | - React-Core (from `../node_modules/react-native/`)
412 | - React-Core/DevSupport (from `../node_modules/react-native/`)
413 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
414 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
415 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
416 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
417 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
418 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
419 | - react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
420 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
421 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
422 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
423 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
424 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
425 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
426 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
427 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
428 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
429 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
430 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
431 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
432 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
433 | - RealmJS (from `../node_modules/realm`)
434 | - RNScreens (from `../node_modules/react-native-screens`)
435 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
436 |
437 | SPEC REPOS:
438 | trunk:
439 | - boost-for-react-native
440 | - GCDWebServer
441 |
442 | EXTERNAL SOURCES:
443 | DoubleConversion:
444 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
445 | EXApplication:
446 | :path: "../node_modules/expo-application/ios"
447 | EXConstants:
448 | :path: "../node_modules/expo-constants/ios"
449 | EXErrorRecovery:
450 | :path: "../node_modules/expo-error-recovery/ios"
451 | EXFileSystem:
452 | :path: "../node_modules/expo-file-system/ios"
453 | EXFont:
454 | :path: "../node_modules/expo-font/ios"
455 | EXJSONUtils:
456 | :path: "../node_modules/expo-json-utils/ios"
457 | EXKeepAwake:
458 | :path: "../node_modules/expo-keep-awake/ios"
459 | EXManifests:
460 | :path: "../node_modules/expo-manifests/ios"
461 | Expo:
462 | :path: "../node_modules/expo/ios"
463 | expo-dev-client:
464 | :path: "../node_modules/expo-dev-client/ios"
465 | expo-dev-launcher:
466 | :path: "../node_modules/expo-dev-launcher"
467 | expo-dev-menu:
468 | :path: "../node_modules/expo-dev-menu"
469 | expo-dev-menu-interface:
470 | :path: "../node_modules/expo-dev-menu-interface/ios"
471 | ExpoModulesCore:
472 | :path: "../node_modules/expo-modules-core/ios"
473 | EXSplashScreen:
474 | :path: "../node_modules/expo-splash-screen/ios"
475 | EXStructuredHeaders:
476 | :path: "../node_modules/expo-structured-headers/ios"
477 | EXUpdates:
478 | :path: "../node_modules/expo-updates/ios"
479 | EXUpdatesInterface:
480 | :path: "../node_modules/expo-updates-interface/ios"
481 | FBLazyVector:
482 | :path: "../node_modules/react-native/Libraries/FBLazyVector"
483 | FBReactNativeSpec:
484 | :path: "../node_modules/react-native/React/FBReactNativeSpec"
485 | glog:
486 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
487 | RCT-Folly:
488 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
489 | RCTRequired:
490 | :path: "../node_modules/react-native/Libraries/RCTRequired"
491 | RCTTypeSafety:
492 | :path: "../node_modules/react-native/Libraries/TypeSafety"
493 | React:
494 | :path: "../node_modules/react-native/"
495 | React-callinvoker:
496 | :path: "../node_modules/react-native/ReactCommon/callinvoker"
497 | React-Core:
498 | :path: "../node_modules/react-native/"
499 | React-CoreModules:
500 | :path: "../node_modules/react-native/React/CoreModules"
501 | React-cxxreact:
502 | :path: "../node_modules/react-native/ReactCommon/cxxreact"
503 | React-jsi:
504 | :path: "../node_modules/react-native/ReactCommon/jsi"
505 | React-jsiexecutor:
506 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
507 | React-jsinspector:
508 | :path: "../node_modules/react-native/ReactCommon/jsinspector"
509 | react-native-get-random-values:
510 | :path: "../node_modules/react-native-get-random-values"
511 | react-native-safe-area-context:
512 | :path: "../node_modules/react-native-safe-area-context"
513 | React-perflogger:
514 | :path: "../node_modules/react-native/ReactCommon/reactperflogger"
515 | React-RCTActionSheet:
516 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
517 | React-RCTAnimation:
518 | :path: "../node_modules/react-native/Libraries/NativeAnimation"
519 | React-RCTBlob:
520 | :path: "../node_modules/react-native/Libraries/Blob"
521 | React-RCTImage:
522 | :path: "../node_modules/react-native/Libraries/Image"
523 | React-RCTLinking:
524 | :path: "../node_modules/react-native/Libraries/LinkingIOS"
525 | React-RCTNetwork:
526 | :path: "../node_modules/react-native/Libraries/Network"
527 | React-RCTSettings:
528 | :path: "../node_modules/react-native/Libraries/Settings"
529 | React-RCTText:
530 | :path: "../node_modules/react-native/Libraries/Text"
531 | React-RCTVibration:
532 | :path: "../node_modules/react-native/Libraries/Vibration"
533 | React-runtimeexecutor:
534 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
535 | ReactCommon:
536 | :path: "../node_modules/react-native/ReactCommon"
537 | RealmJS:
538 | :path: "../node_modules/realm"
539 | RNScreens:
540 | :path: "../node_modules/react-native-screens"
541 | Yoga:
542 | :path: "../node_modules/react-native/ReactCommon/yoga"
543 |
544 | SPEC CHECKSUMS:
545 | boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
546 | DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
547 | EXApplication: 54fe5bd6268d697771645e8f1aef8b806a65247a
548 | EXConstants: 88bf79622fbd9b476c96d8ec57fe97ca44fe8e3c
549 | EXErrorRecovery: b0d7582714a2cc896e94a2308a356f94dbf14ef7
550 | EXFileSystem: c7187bfe9ed1eda11e7fda5953125695d791a24b
551 | EXFont: 2597c10ac85a69d348d44d7873eccf5a7576ef5e
552 | EXJSONUtils: 5ee0d5cf76da70ad86f0be1a41cc70f47d69e06f
553 | EXKeepAwake: bf48d7f740a5cd2befed6cf9a49911d385c6c47d
554 | EXManifests: d3464cd2278f4a19cd80c1aa673231570b534c11
555 | Expo: 534e51e607aba8229293297da5585f4b26f50fa1
556 | expo-dev-client: 6856be1c9b8a098a23e1099abee01a9d66bc0fa4
557 | expo-dev-launcher: 875237591555e0258aa1f65442c9a557c5b61b40
558 | expo-dev-menu: 942ad845341d994c8dfb70c83cd840378b81650d
559 | expo-dev-menu-interface: 395d046704878e5de471a89102ddf361cbb7e52f
560 | ExpoModulesCore: 32c0ccb47f477d330ee93db72505380adf0de09a
561 | EXSplashScreen: 21669e598804ee810547dbb6692c8deb5dd8dbf3
562 | EXStructuredHeaders: 4993087b2010dbcc510f5d92555b36f523425e8d
563 | EXUpdates: bd5fa64f02685ed3e96be86b5ca350cdc2cd8d02
564 | EXUpdatesInterface: a9814f422d3cd6e7cfd260d13c27786148ece20e
565 | FBLazyVector: c71c5917ec0ad2de41d5d06a5855f6d5eda06971
566 | FBReactNativeSpec: 659e448d55b59553f2d77e3335e212d392f7a186
567 | GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4
568 | glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
569 | RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
570 | RCTRequired: d34bf57e17cb6e3b2681f4809b13843c021feb6c
571 | RCTTypeSafety: 8dab4933124ed39bb0c1d88d74d61b1eb950f28f
572 | React: ef700aeb19afabff83a9cc5799ac955a9c6b5e0f
573 | React-callinvoker: 5547633d44f3e114b17c03c660ccb5faefd9ed2d
574 | React-Core: 3858d60185d71567962468bf176d582e36e4e25b
575 | React-CoreModules: 29b3397adac0c04915cf93089328664868510717
576 | React-cxxreact: 7e6cc1f4cdfcd40e483dd228fa8a3d3e0ed16f4a
577 | React-jsi: a8b09c29521c798f1783348b37b511ba7b3dbeb3
578 | React-jsiexecutor: df6abc9fafbecb8e5b7a5fbc5e6d4bd017d594d5
579 | React-jsinspector: 34e23860273a23695342f58eed3ffd3ba10c31e0
580 | react-native-get-random-values: 30b3f74ca34e30e2e480de48e4add2706a40ac8f
581 | react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
582 | React-perflogger: cc76a4254d19640f1d8ad1c66fdee800414b805c
583 | React-RCTActionSheet: 7448f049318d8d7e8a9a1ebb742ada721757eea8
584 | React-RCTAnimation: fb9b3fa1a4a9f5e6ab01b3368693ce69860ba76a
585 | React-RCTBlob: a2e7056601c599c19884992f08ebacae810426f9
586 | React-RCTImage: 5a46c12327d0d6f6844a1fe38baa92a1e02847e8
587 | React-RCTLinking: 63dd8305591e1def35267557ed42918aec9eb30b
588 | React-RCTNetwork: d0516e39a5f736b2bff671c3e03804200161dcd3
589 | React-RCTSettings: a09566b14f1649f6c8a39ad1a174bb5c0631bb09
590 | React-RCTText: 04a2f0a281f715f0aed4f515717fafd64510e2c8
591 | React-RCTVibration: c7f845861e79eae13dc1e8217a3cf47a3945b504
592 | React-runtimeexecutor: 493d9abb8b23c3f84e19ae221eeba92cadcb70dc
593 | ReactCommon: 8fea6422328e2fc093e25c9fac67adbcf0f04fb4
594 | RealmJS: b6097dab8af3bcf1cd5fa0ac39a4e4c54980c719
595 | RNScreens: d6da2b9e29cf523832c2542f47bf1287318b1868
596 | Yoga: e6ecf3fa25af9d4c87e94ad7d5d292eedef49749
597 |
598 | PODFILE CHECKSUM: 3b69ba7abaf2c93527195b952bf55eb905aecaf5
599 |
600 | COCOAPODS: 1.11.2
601 |
--------------------------------------------------------------------------------
/ios/Podfile.properties.json:
--------------------------------------------------------------------------------
1 | {
2 | "expo.jsEngine": "jsc"
3 | }
4 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp.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.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
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 | 88ACF2E96F9C44D2AB3370C7 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1896F91983084EE0892C2827 /* noop-file.swift */; };
15 | 96905EF65AED1B983A6B3ABC /* libPods-ReactRealmJsTemplateApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-ReactRealmJsTemplateApp.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 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXFileReference section */
21 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; };
22 | 13B07F961A680F5B00A75B9A /* ReactRealmJsTemplateApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactRealmJsTemplateApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
23 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ReactRealmJsTemplateApp/AppDelegate.h; sourceTree = ""; };
24 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = ReactRealmJsTemplateApp/AppDelegate.m; sourceTree = ""; };
25 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ReactRealmJsTemplateApp/Images.xcassets; sourceTree = ""; };
26 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ReactRealmJsTemplateApp/Info.plist; sourceTree = ""; };
27 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ReactRealmJsTemplateApp/main.m; sourceTree = ""; };
28 | 1896F91983084EE0892C2827 /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "ReactRealmJsTemplateApp/noop-file.swift"; sourceTree = ""; };
29 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-ReactRealmJsTemplateApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactRealmJsTemplateApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
30 | 6C2E3173556A471DD304B334 /* Pods-ReactRealmJsTemplateApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactRealmJsTemplateApp.debug.xcconfig"; path = "Target Support Files/Pods-ReactRealmJsTemplateApp/Pods-ReactRealmJsTemplateApp.debug.xcconfig"; sourceTree = ""; };
31 | 7A4D352CD337FB3A3BF06240 /* Pods-ReactRealmJsTemplateApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactRealmJsTemplateApp.release.xcconfig"; path = "Target Support Files/Pods-ReactRealmJsTemplateApp/Pods-ReactRealmJsTemplateApp.release.xcconfig"; sourceTree = ""; };
32 | 955DE23F58404CF791EFC4F2 /* ReactRealmJsTemplateApp-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "ReactRealmJsTemplateApp-Bridging-Header.h"; path = "ReactRealmJsTemplateApp/ReactRealmJsTemplateApp-Bridging-Header.h"; sourceTree = ""; };
33 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = ReactRealmJsTemplateApp/SplashScreen.storyboard; 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 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-ReactRealmJsTemplateApp/ExpoModulesProvider.swift"; sourceTree = ""; };
37 | /* End PBXFileReference section */
38 |
39 | /* Begin PBXFrameworksBuildPhase section */
40 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
41 | isa = PBXFrameworksBuildPhase;
42 | buildActionMask = 2147483647;
43 | files = (
44 | 96905EF65AED1B983A6B3ABC /* libPods-ReactRealmJsTemplateApp.a in Frameworks */,
45 | );
46 | runOnlyForDeploymentPostprocessing = 0;
47 | };
48 | /* End PBXFrameworksBuildPhase section */
49 |
50 | /* Begin PBXGroup section */
51 | 13B07FAE1A68108700A75B9A /* ReactRealmJsTemplateApp */ = {
52 | isa = PBXGroup;
53 | children = (
54 | BB2F792B24A3F905000567C9 /* Supporting */,
55 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
56 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
57 | 13B07FB01A68108700A75B9A /* AppDelegate.m */,
58 | 13B07FB51A68108700A75B9A /* Images.xcassets */,
59 | 13B07FB61A68108700A75B9A /* Info.plist */,
60 | 13B07FB71A68108700A75B9A /* main.m */,
61 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */,
62 | 1896F91983084EE0892C2827 /* noop-file.swift */,
63 | 955DE23F58404CF791EFC4F2 /* ReactRealmJsTemplateApp-Bridging-Header.h */,
64 | );
65 | name = ReactRealmJsTemplateApp;
66 | sourceTree = "";
67 | };
68 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
69 | isa = PBXGroup;
70 | children = (
71 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
72 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-ReactRealmJsTemplateApp.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 /* ReactRealmJsTemplateApp */,
88 | 832341AE1AAA6A7D00B99B32 /* Libraries */,
89 | 83CBBA001A601CBA00E9B192 /* Products */,
90 | 2D16E6871FA4F8E400B85C8A /* Frameworks */,
91 | D65327D7A22EEC0BE12398D9 /* Pods */,
92 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */,
93 | );
94 | indentWidth = 2;
95 | sourceTree = "";
96 | tabWidth = 2;
97 | usesTabs = 0;
98 | };
99 | 83CBBA001A601CBA00E9B192 /* Products */ = {
100 | isa = PBXGroup;
101 | children = (
102 | 13B07F961A680F5B00A75B9A /* ReactRealmJsTemplateApp.app */,
103 | );
104 | name = Products;
105 | sourceTree = "";
106 | };
107 | 92DBD88DE9BF7D494EA9DA96 /* ReactRealmJsTemplateApp */ = {
108 | isa = PBXGroup;
109 | children = (
110 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */,
111 | );
112 | name = ReactRealmJsTemplateApp;
113 | sourceTree = "";
114 | };
115 | BB2F792B24A3F905000567C9 /* Supporting */ = {
116 | isa = PBXGroup;
117 | children = (
118 | BB2F792C24A3F905000567C9 /* Expo.plist */,
119 | );
120 | name = Supporting;
121 | path = ReactRealmJsTemplateApp/Supporting;
122 | sourceTree = "";
123 | };
124 | D65327D7A22EEC0BE12398D9 /* Pods */ = {
125 | isa = PBXGroup;
126 | children = (
127 | 6C2E3173556A471DD304B334 /* Pods-ReactRealmJsTemplateApp.debug.xcconfig */,
128 | 7A4D352CD337FB3A3BF06240 /* Pods-ReactRealmJsTemplateApp.release.xcconfig */,
129 | );
130 | path = Pods;
131 | sourceTree = "";
132 | };
133 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = {
134 | isa = PBXGroup;
135 | children = (
136 | 92DBD88DE9BF7D494EA9DA96 /* ReactRealmJsTemplateApp */,
137 | );
138 | name = ExpoModulesProviders;
139 | sourceTree = "";
140 | };
141 | /* End PBXGroup section */
142 |
143 | /* Begin PBXNativeTarget section */
144 | 13B07F861A680F5B00A75B9A /* ReactRealmJsTemplateApp */ = {
145 | isa = PBXNativeTarget;
146 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactRealmJsTemplateApp" */;
147 | buildPhases = (
148 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */,
149 | FD10A7F022414F080027D42C /* Start Packager */,
150 | 13B07F871A680F5B00A75B9A /* Sources */,
151 | 13B07F8C1A680F5B00A75B9A /* Frameworks */,
152 | 13B07F8E1A680F5B00A75B9A /* Resources */,
153 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
154 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */,
155 | );
156 | buildRules = (
157 | );
158 | dependencies = (
159 | );
160 | name = ReactRealmJsTemplateApp;
161 | productName = ReactRealmJsTemplateApp;
162 | productReference = 13B07F961A680F5B00A75B9A /* ReactRealmJsTemplateApp.app */;
163 | productType = "com.apple.product-type.application";
164 | };
165 | /* End PBXNativeTarget section */
166 |
167 | /* Begin PBXProject section */
168 | 83CBB9F71A601CBA00E9B192 /* Project object */ = {
169 | isa = PBXProject;
170 | attributes = {
171 | LastUpgradeCheck = 1130;
172 | TargetAttributes = {
173 | 13B07F861A680F5B00A75B9A = {
174 | LastSwiftMigration = 1250;
175 | };
176 | };
177 | };
178 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactRealmJsTemplateApp" */;
179 | compatibilityVersion = "Xcode 3.2";
180 | developmentRegion = en;
181 | hasScannedForEncodings = 0;
182 | knownRegions = (
183 | en,
184 | Base,
185 | );
186 | mainGroup = 83CBB9F61A601CBA00E9B192;
187 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
188 | projectDirPath = "";
189 | projectRoot = "";
190 | targets = (
191 | 13B07F861A680F5B00A75B9A /* ReactRealmJsTemplateApp */,
192 | );
193 | };
194 | /* End PBXProject section */
195 |
196 | /* Begin PBXResourcesBuildPhase section */
197 | 13B07F8E1A680F5B00A75B9A /* Resources */ = {
198 | isa = PBXResourcesBuildPhase;
199 | buildActionMask = 2147483647;
200 | files = (
201 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */,
202 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
203 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */,
204 | );
205 | runOnlyForDeploymentPostprocessing = 0;
206 | };
207 | /* End PBXResourcesBuildPhase section */
208 |
209 | /* Begin PBXShellScriptBuildPhase section */
210 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
211 | isa = PBXShellScriptBuildPhase;
212 | buildActionMask = 2147483647;
213 | files = (
214 | );
215 | inputPaths = (
216 | );
217 | name = "Bundle React Native code and images";
218 | outputPaths = (
219 | );
220 | runOnlyForDeploymentPostprocessing = 0;
221 | shellPath = /bin/sh;
222 | shellScript = "export NODE_BINARY=node\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\n`node --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n";
223 | };
224 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = {
225 | isa = PBXShellScriptBuildPhase;
226 | buildActionMask = 2147483647;
227 | files = (
228 | );
229 | inputFileListPaths = (
230 | );
231 | inputPaths = (
232 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
233 | "${PODS_ROOT}/Manifest.lock",
234 | );
235 | name = "[CP] Check Pods Manifest.lock";
236 | outputFileListPaths = (
237 | );
238 | outputPaths = (
239 | "$(DERIVED_FILE_DIR)/Pods-ReactRealmJsTemplateApp-checkManifestLockResult.txt",
240 | );
241 | runOnlyForDeploymentPostprocessing = 0;
242 | shellPath = /bin/sh;
243 | 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";
244 | showEnvVarsInLog = 0;
245 | };
246 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = {
247 | isa = PBXShellScriptBuildPhase;
248 | buildActionMask = 2147483647;
249 | files = (
250 | );
251 | inputPaths = (
252 | "${PODS_ROOT}/Target Support Files/Pods-ReactRealmJsTemplateApp/Pods-ReactRealmJsTemplateApp-resources.sh",
253 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle",
254 | "${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle",
255 | "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
256 | "${PODS_CONFIGURATION_BUILD_DIR}/expo-dev-launcher/EXDevLauncher.bundle",
257 | "${PODS_CONFIGURATION_BUILD_DIR}/expo-dev-menu/EXDevMenu.bundle",
258 | );
259 | name = "[CP] Copy Pods Resources";
260 | outputPaths = (
261 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle",
262 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle",
263 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
264 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXDevLauncher.bundle",
265 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXDevMenu.bundle",
266 | );
267 | runOnlyForDeploymentPostprocessing = 0;
268 | shellPath = /bin/sh;
269 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ReactRealmJsTemplateApp/Pods-ReactRealmJsTemplateApp-resources.sh\"\n";
270 | showEnvVarsInLog = 0;
271 | };
272 | FD10A7F022414F080027D42C /* Start Packager */ = {
273 | isa = PBXShellScriptBuildPhase;
274 | buildActionMask = 2147483647;
275 | files = (
276 | );
277 | inputFileListPaths = (
278 | );
279 | inputPaths = (
280 | );
281 | name = "Start Packager";
282 | outputFileListPaths = (
283 | );
284 | outputPaths = (
285 | );
286 | runOnlyForDeploymentPostprocessing = 0;
287 | shellPath = /bin/sh;
288 | shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `node --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `node --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n";
289 | showEnvVarsInLog = 0;
290 | };
291 | /* End PBXShellScriptBuildPhase section */
292 |
293 | /* Begin PBXSourcesBuildPhase section */
294 | 13B07F871A680F5B00A75B9A /* Sources */ = {
295 | isa = PBXSourcesBuildPhase;
296 | buildActionMask = 2147483647;
297 | files = (
298 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
299 | 13B07FC11A68108700A75B9A /* main.m in Sources */,
300 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */,
301 | 88ACF2E96F9C44D2AB3370C7 /* noop-file.swift in Sources */,
302 | );
303 | runOnlyForDeploymentPostprocessing = 0;
304 | };
305 | /* End PBXSourcesBuildPhase section */
306 |
307 | /* Begin XCBuildConfiguration section */
308 | 13B07F941A680F5B00A75B9A /* Debug */ = {
309 | isa = XCBuildConfiguration;
310 | baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-ReactRealmJsTemplateApp.debug.xcconfig */;
311 | buildSettings = {
312 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
313 | CLANG_ENABLE_MODULES = YES;
314 | CODE_SIGN_ENTITLEMENTS = ReactRealmJsTemplateApp/ReactRealmJsTemplateApp.entitlements;
315 | CURRENT_PROJECT_VERSION = 1;
316 | ENABLE_BITCODE = NO;
317 | GCC_PREPROCESSOR_DEFINITIONS = (
318 | "$(inherited)",
319 | "FB_SONARKIT_ENABLED=1",
320 | );
321 | INFOPLIST_FILE = ReactRealmJsTemplateApp/Info.plist;
322 | IPHONEOS_DEPLOYMENT_TARGET = 12.0;
323 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
324 | OTHER_LDFLAGS = (
325 | "$(inherited)",
326 | "-ObjC",
327 | "-lc++",
328 | );
329 | PRODUCT_BUNDLE_IDENTIFIER = aks.com.app1;
330 | PRODUCT_NAME = ReactRealmJsTemplateApp;
331 | SWIFT_OBJC_BRIDGING_HEADER = "ReactRealmJsTemplateApp/ReactRealmJsTemplateApp-Bridging-Header.h";
332 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
333 | SWIFT_VERSION = 5.0;
334 | TARGETED_DEVICE_FAMILY = 1;
335 | VERSIONING_SYSTEM = "apple-generic";
336 | };
337 | name = Debug;
338 | };
339 | 13B07F951A680F5B00A75B9A /* Release */ = {
340 | isa = XCBuildConfiguration;
341 | baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-ReactRealmJsTemplateApp.release.xcconfig */;
342 | buildSettings = {
343 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
344 | CLANG_ENABLE_MODULES = YES;
345 | CODE_SIGN_ENTITLEMENTS = ReactRealmJsTemplateApp/ReactRealmJsTemplateApp.entitlements;
346 | CURRENT_PROJECT_VERSION = 1;
347 | INFOPLIST_FILE = ReactRealmJsTemplateApp/Info.plist;
348 | IPHONEOS_DEPLOYMENT_TARGET = 12.0;
349 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
350 | OTHER_LDFLAGS = (
351 | "$(inherited)",
352 | "-ObjC",
353 | "-lc++",
354 | );
355 | PRODUCT_BUNDLE_IDENTIFIER = aks.com.app1;
356 | PRODUCT_NAME = ReactRealmJsTemplateApp;
357 | SWIFT_OBJC_BRIDGING_HEADER = "ReactRealmJsTemplateApp/ReactRealmJsTemplateApp-Bridging-Header.h";
358 | SWIFT_VERSION = 5.0;
359 | TARGETED_DEVICE_FAMILY = 1;
360 | VERSIONING_SYSTEM = "apple-generic";
361 | };
362 | name = Release;
363 | };
364 | 83CBBA201A601CBA00E9B192 /* Debug */ = {
365 | isa = XCBuildConfiguration;
366 | buildSettings = {
367 | ALWAYS_SEARCH_USER_PATHS = NO;
368 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
369 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
370 | CLANG_CXX_LIBRARY = "libc++";
371 | CLANG_ENABLE_MODULES = YES;
372 | CLANG_ENABLE_OBJC_ARC = YES;
373 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
374 | CLANG_WARN_BOOL_CONVERSION = YES;
375 | CLANG_WARN_COMMA = YES;
376 | CLANG_WARN_CONSTANT_CONVERSION = YES;
377 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
378 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
379 | CLANG_WARN_EMPTY_BODY = YES;
380 | CLANG_WARN_ENUM_CONVERSION = YES;
381 | CLANG_WARN_INFINITE_RECURSION = YES;
382 | CLANG_WARN_INT_CONVERSION = YES;
383 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
384 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
385 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
386 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
387 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
388 | CLANG_WARN_STRICT_PROTOTYPES = YES;
389 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
390 | CLANG_WARN_UNREACHABLE_CODE = YES;
391 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
392 | CODE_SIGN_ENTITLEMENTS = ReactRealmJsTemplateApp/ReactRealmJsTemplateApp.entitlements;
393 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
394 | COPY_PHASE_STRIP = NO;
395 | ENABLE_STRICT_OBJC_MSGSEND = YES;
396 | ENABLE_TESTABILITY = YES;
397 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
398 | GCC_C_LANGUAGE_STANDARD = gnu99;
399 | GCC_DYNAMIC_NO_PIC = NO;
400 | GCC_NO_COMMON_BLOCKS = YES;
401 | GCC_OPTIMIZATION_LEVEL = 0;
402 | GCC_PREPROCESSOR_DEFINITIONS = (
403 | "DEBUG=1",
404 | "$(inherited)",
405 | );
406 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
407 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
408 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
409 | GCC_WARN_UNDECLARED_SELECTOR = YES;
410 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
411 | GCC_WARN_UNUSED_FUNCTION = YES;
412 | GCC_WARN_UNUSED_VARIABLE = YES;
413 | IPHONEOS_DEPLOYMENT_TARGET = 12.0;
414 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
415 | LIBRARY_SEARCH_PATHS = "\"$(inherited)\"";
416 | MTL_ENABLE_DEBUG_INFO = YES;
417 | ONLY_ACTIVE_ARCH = YES;
418 | SDKROOT = iphoneos;
419 | };
420 | name = Debug;
421 | };
422 | 83CBBA211A601CBA00E9B192 /* Release */ = {
423 | isa = XCBuildConfiguration;
424 | buildSettings = {
425 | ALWAYS_SEARCH_USER_PATHS = NO;
426 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
427 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
428 | CLANG_CXX_LIBRARY = "libc++";
429 | CLANG_ENABLE_MODULES = YES;
430 | CLANG_ENABLE_OBJC_ARC = YES;
431 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
432 | CLANG_WARN_BOOL_CONVERSION = YES;
433 | CLANG_WARN_COMMA = YES;
434 | CLANG_WARN_CONSTANT_CONVERSION = YES;
435 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
436 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
437 | CLANG_WARN_EMPTY_BODY = YES;
438 | CLANG_WARN_ENUM_CONVERSION = YES;
439 | CLANG_WARN_INFINITE_RECURSION = YES;
440 | CLANG_WARN_INT_CONVERSION = YES;
441 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
442 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
443 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
444 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
445 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
446 | CLANG_WARN_STRICT_PROTOTYPES = YES;
447 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
448 | CLANG_WARN_UNREACHABLE_CODE = YES;
449 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
450 | CODE_SIGN_ENTITLEMENTS = ReactRealmJsTemplateApp/ReactRealmJsTemplateApp.entitlements;
451 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
452 | COPY_PHASE_STRIP = YES;
453 | ENABLE_NS_ASSERTIONS = NO;
454 | ENABLE_STRICT_OBJC_MSGSEND = YES;
455 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
456 | GCC_C_LANGUAGE_STANDARD = gnu99;
457 | GCC_NO_COMMON_BLOCKS = YES;
458 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
459 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
460 | GCC_WARN_UNDECLARED_SELECTOR = YES;
461 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
462 | GCC_WARN_UNUSED_FUNCTION = YES;
463 | GCC_WARN_UNUSED_VARIABLE = YES;
464 | IPHONEOS_DEPLOYMENT_TARGET = 12.0;
465 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
466 | LIBRARY_SEARCH_PATHS = "\"$(inherited)\"";
467 | MTL_ENABLE_DEBUG_INFO = NO;
468 | SDKROOT = iphoneos;
469 | VALIDATE_PRODUCT = YES;
470 | };
471 | name = Release;
472 | };
473 | /* End XCBuildConfiguration section */
474 |
475 | /* Begin XCConfigurationList section */
476 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ReactRealmJsTemplateApp" */ = {
477 | isa = XCConfigurationList;
478 | buildConfigurations = (
479 | 13B07F941A680F5B00A75B9A /* Debug */,
480 | 13B07F951A680F5B00A75B9A /* Release */,
481 | );
482 | defaultConfigurationIsVisible = 0;
483 | defaultConfigurationName = Release;
484 | };
485 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "ReactRealmJsTemplateApp" */ = {
486 | isa = XCConfigurationList;
487 | buildConfigurations = (
488 | 83CBBA201A601CBA00E9B192 /* Debug */,
489 | 83CBBA211A601CBA00E9B192 /* Release */,
490 | );
491 | defaultConfigurationIsVisible = 0;
492 | defaultConfigurationName = Release;
493 | };
494 | /* End XCConfigurationList section */
495 | };
496 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
497 | }
498 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp.xcodeproj/xcshareddata/xcschemes/ReactRealmJsTemplateApp.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 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import
4 |
5 | #import
6 |
7 | @interface AppDelegate : EXAppDelegateWrapper
8 |
9 | @end
10 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/AppDelegate.m:
--------------------------------------------------------------------------------
1 | #import "AppDelegate.h"
2 |
3 | #if defined(EX_DEV_MENU_ENABLED)
4 | @import EXDevMenu;
5 | #endif
6 |
7 | #if defined(EX_DEV_LAUNCHER_ENABLED)
8 | #include
9 | #import
10 | #endif
11 |
12 | #import
13 | #import
14 | #import
15 | #import
16 | #import
17 |
18 | #if defined(FB_SONARKIT_ENABLED) && __has_include()
19 | #import
20 | #import
21 | #import
22 | #import
23 | #import
24 | #import
25 |
26 | static void InitializeFlipper(UIApplication *application) {
27 | FlipperClient *client = [FlipperClient sharedClient];
28 | SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
29 | [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
30 | [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
31 | [client addPlugin:[FlipperKitReactPlugin new]];
32 | [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
33 | [client start];
34 | }
35 | #endif
36 |
37 | @implementation AppDelegate
38 |
39 | - (RCTBridge *)initializeReactNativeApp:(NSDictionary *)launchOptions
40 | {
41 | RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions];
42 | RCTRootView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@"main" initialProperties:nil];
43 | rootView.backgroundColor = [UIColor whiteColor];
44 | UIViewController *rootViewController = [self.reactDelegate createRootViewController];
45 | rootViewController.view = rootView;
46 | self.window.rootViewController = rootViewController;
47 | [self.window makeKeyAndVisible];
48 |
49 | return bridge;
50 | }
51 |
52 |
53 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
54 | {
55 | #if defined(FB_SONARKIT_ENABLED) && __has_include()
56 | InitializeFlipper(application);
57 | #endif
58 |
59 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
60 | #if defined(EX_DEV_LAUNCHER_ENABLED)
61 | EXDevLauncherController *controller = [EXDevLauncherController sharedInstance];
62 | controller.updatesInterface = [EXUpdatesDevLauncherController sharedInstance];
63 | [controller startWithWindow:self.window delegate:(id)self launchOptions:launchOptions];
64 | #else
65 | [self initializeReactNativeApp:launchOptions];
66 | #endif
67 |
68 | [super application:application didFinishLaunchingWithOptions:launchOptions];
69 |
70 | return YES;
71 | }
72 |
73 | - (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge
74 | {
75 | // If you'd like to export some custom RCTBridgeModules, add them here!
76 | return @[];
77 | }
78 |
79 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
80 | #ifdef DEBUG
81 | #if defined(EX_DEV_LAUNCHER_ENABLED)
82 | return [[EXDevLauncherController sharedInstance] sourceUrl];
83 | #else
84 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
85 | #endif
86 | #else
87 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
88 | #endif
89 | }
90 |
91 | // Linking API
92 | - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {
93 | #if defined(EX_DEV_LAUNCHER_ENABLED)
94 | if ([EXDevLauncherController.sharedInstance onDeepLink:url options:options]) {
95 | return true;
96 | }
97 | #endif
98 | return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];
99 | }
100 |
101 | // Universal Links
102 | - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler {
103 | BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
104 | return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result;
105 | }
106 |
107 | @end
108 |
109 | #if defined(EX_DEV_LAUNCHER_ENABLED)
110 | @implementation AppDelegate (EXDevLauncherControllerDelegate)
111 |
112 | - (void)devLauncherController:(EXDevLauncherController *)developmentClientController
113 | didStartWithSuccess:(BOOL)success
114 | {
115 | developmentClientController.appBridge = [self initializeReactNativeApp:[EXDevLauncherController.sharedInstance getLaunchOptions]];
116 | }
117 |
118 | @end
119 | #endif
120 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "expo"
37 | }
38 | }
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "expo"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/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/ReactRealmJsTemplateApp/Images.xcassets/SplashScreenBackground.imageset/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aaronksaunders/ReactNativeRealm-Expo-Template/08b6d2c62aaf3c0485a1ead03e08602b87e82a8c/ios/ReactRealmJsTemplateApp/Images.xcassets/SplashScreenBackground.imageset/image.png
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | ReactRealmJsTemplateApp
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | 1.0.0
21 | CFBundleSignature
22 | ????
23 | CFBundleURLTypes
24 |
25 |
26 | CFBundleURLSchemes
27 |
28 | aks.com.app1
29 |
30 |
31 |
32 | CFBundleURLSchemes
33 |
34 | exp+reactrealmjstemplateapp
35 |
36 |
37 |
38 | CFBundleVersion
39 | 1
40 | LSRequiresIPhoneOS
41 |
42 | NSAppTransportSecurity
43 |
44 | NSAllowsArbitraryLoads
45 |
46 | NSExceptionDomains
47 |
48 | localhost
49 |
50 | NSExceptionAllowsInsecureHTTPLoads
51 |
52 |
53 |
54 |
55 | UILaunchStoryboardName
56 | SplashScreen
57 | UIRequiredDeviceCapabilities
58 |
59 | armv7
60 |
61 | UIRequiresFullScreen
62 |
63 | UIStatusBarStyle
64 | UIStatusBarStyleDefault
65 | UISupportedInterfaceOrientations
66 |
67 | UIInterfaceOrientationPortrait
68 | UIInterfaceOrientationPortraitUpsideDown
69 | UIInterfaceOrientationLandscapeLeft
70 | UIInterfaceOrientationLandscapeRight
71 |
72 | UISupportedInterfaceOrientations~ipad
73 |
74 | UIInterfaceOrientationPortrait
75 | UIInterfaceOrientationPortraitUpsideDown
76 | UIInterfaceOrientationLandscapeLeft
77 | UIInterfaceOrientationLandscapeRight
78 |
79 | UIUserInterfaceStyle
80 | Light
81 | UIViewControllerBasedStatusBarAppearance
82 |
83 |
84 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/ReactRealmJsTemplateApp-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/ReactRealmJsTemplateApp/ReactRealmJsTemplateApp.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 |
8 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/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 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/Supporting/Expo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | EXUpdatesCheckOnLaunch
6 | ALWAYS
7 | EXUpdatesEnabled
8 |
9 | EXUpdatesLaunchWaitMs
10 | 0
11 | EXUpdatesSDKVersion
12 | 44.0.0
13 | EXUpdatesURL
14 | https://exp.host/@anonymous/ReactRealmJsTemplateApp
15 |
16 |
--------------------------------------------------------------------------------
/ios/ReactRealmJsTemplateApp/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/ReactRealmJsTemplateApp/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 |
--------------------------------------------------------------------------------
/metro.config.js:
--------------------------------------------------------------------------------
1 | // Learn more https://docs.expo.dev/guides/customizing-metro
2 | const { getDefaultConfig } = require('expo/metro-config');
3 |
4 | module.exports = getDefaultConfig(__dirname);
5 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "start": "expo start --dev-client",
4 | "android": "expo run:android",
5 | "ios": "expo run:ios"
6 | },
7 | "dependencies": {
8 | "@react-navigation/native": "^6.0.8",
9 | "@react-navigation/native-stack": "^6.5.0",
10 | "@realm/react": "^0.1.0",
11 | "expo": "^44.0.0",
12 | "expo-dev-client": "~0.8.4",
13 | "expo-splash-screen": "~0.14.0",
14 | "expo-status-bar": "~1.2.0",
15 | "expo-updates": "~0.11.2",
16 | "react": "17.0.1",
17 | "react-dom": "17.0.1",
18 | "react-native": "0.64.3",
19 | "react-native-get-random-values": "~1.7.0",
20 | "react-native-safe-area-context": "3.3.2",
21 | "react-native-screens": "~3.10.1",
22 | "react-native-web": "0.17.1",
23 | "realm": "^10.11.0",
24 | "uuid": "^8.3.2"
25 | },
26 | "devDependencies": {
27 | "@babel/core": "^7.12.9"
28 | },
29 | "name": "reactrealmjstemplateapp",
30 | "version": "1.0.0",
31 | "private": true
32 | }
33 |
--------------------------------------------------------------------------------