Skip to content

Commit 086d16c

Browse files
committed
refactor: move files around
1 parent 10bda69 commit 086d16c

File tree

12 files changed

+84
-53
lines changed

12 files changed

+84
-53
lines changed

examples/cookbook/app/_layout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as React from 'react';
12
import { Stack } from 'expo-router';
23
import theme from '../theme';
34

Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import { Text, View } from 'react-native';
2+
import { StyleSheet, Text, View } from 'react-native';
33
import { useUser } from './providers/user-provider';
44
import { useTheme } from './providers/theme-provider';
55

@@ -8,9 +8,17 @@ export default function WelcomeScreen() {
88
const user = useUser();
99

1010
return (
11-
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
11+
<View style={styles.container}>
1212
<Text>Hello {user ? user.name : 'Stranger'}</Text>
1313
<Text>Theme: {theme}</Text>
1414
</View>
1515
);
1616
}
17+
18+
const styles = StyleSheet.create({
19+
container: {
20+
flex: 1,
21+
justifyContent: 'center',
22+
alignItems: 'center',
23+
},
24+
});

examples/cookbook/__tests__/app/custom-render/index.test.tsx renamed to examples/cookbook/app/custom-render/__tests__/index.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as React from 'react';
22
import { screen } from '@testing-library/react-native';
33
import { renderWithProviders } from './test-utils';
4-
import WelcomeScreen from "../../../app/custom-render";
4+
import WelcomeScreen from '../WelcomeScreen';
55

66
test('renders WelcomeScreen in light theme', () => {
77
renderWithProviders(<WelcomeScreen />, { theme: 'light' });

examples/cookbook/app/custom-render/_layout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import * as React from 'react';
12
import { Slot } from 'expo-router';
23
import { UserProvider } from './providers/user-provider';
34
import { ThemeProvider } from './providers/theme-provider';

examples/cookbook/app/index.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import React, {useCallback, useEffect} from 'react';
1+
/* eslint-disable react-native-a11y/has-valid-accessibility-ignores-invert-colors */
2+
import React, { useEffect } from 'react';
23
import { FlatList, Image, Pressable, StyleSheet, Text, View } from 'react-native';
4+
import { useFonts } from 'expo-font';
35
import { useRouter } from 'expo-router';
46
import * as SplashScreen from 'expo-splash-screen';
5-
import { useFonts } from 'expo-font';
67
import theme from '../theme';
78

89
void SplashScreen.preventAutoHideAsync();
@@ -23,11 +24,12 @@ export default function Home() {
2324
if (!loaded && !error) {
2425
return null;
2526
}
26-
const renderItem = useCallback(({ item }: {item: Recipe}) => (
27-
<Pressable style={styles.pressable} onPress={() => router.push(item.path)}>
27+
28+
const renderItem = ({ item }: { item: Recipe }) => (
29+
<Pressable role="listitem" style={styles.pressable} onPress={() => router.push(item.path)}>
2830
<Text style={styles.pressableText}>{item.title}</Text>
2931
</Pressable>
30-
),[]);
32+
);
3133

3234
return (
3335
<View style={styles.container}>
@@ -41,6 +43,7 @@ export default function Home() {
4143
<Text style={styles.title}>Testing Library</Text>
4244
<Text style={styles.subTitle}>Cookbook App</Text>
4345
</View>
46+
4447
<FlatList<Recipe>
4548
data={recipes}
4649
renderItem={renderItem}
@@ -50,6 +53,7 @@ export default function Home() {
5053
);
5154
}
5255

56+
/* eslint-disable react-native/no-color-literals */
5357
const styles = StyleSheet.create({
5458
container: {
5559
flex: 1,
@@ -99,6 +103,7 @@ type Recipe = {
99103
title: string;
100104
path: string;
101105
};
106+
102107
const recipes: Recipe[] = [
103108
{ id: 2, title: 'Welcome Screen with Custom Render', path: 'custom-render/' },
104109
{ id: 1, title: 'Task List with Jotai', path: 'jotai/' },
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import 'react-native-get-random-values';
2+
import { nanoid } from 'nanoid';
3+
import * as React from 'react';
4+
import { Pressable, StyleSheet, Text, TextInput, View } from 'react-native';
5+
import { useAtom } from 'jotai';
6+
import { newTaskTitleAtom, tasksAtom } from './state';
7+
8+
export function TaskList() {
9+
const [tasks, setTasks] = useAtom(tasksAtom);
10+
const [newTaskTitle, setNewTaskTitle] = useAtom(newTaskTitleAtom);
11+
12+
const handleAddTask = () => {
13+
setTasks((tasks) => [
14+
...tasks,
15+
{
16+
id: nanoid(),
17+
title: newTaskTitle,
18+
},
19+
]);
20+
setNewTaskTitle('');
21+
};
22+
23+
return (
24+
<View style={styles.container}>
25+
{tasks.map((task) => (
26+
<Text key={task.id} testID="task-item">
27+
{task.title}
28+
</Text>
29+
))}
30+
31+
{!tasks.length ? <Text>No tasks, start by adding one...</Text> : null}
32+
33+
<TextInput
34+
accessibilityLabel="New Task"
35+
placeholder="New Task..."
36+
value={newTaskTitle}
37+
onChangeText={(text) => setNewTaskTitle(text)}
38+
/>
39+
40+
<Pressable accessibilityRole="button" onPress={handleAddTask}>
41+
<Text>Add Task</Text>
42+
</Pressable>
43+
</View>
44+
);
45+
}
46+
47+
const styles = StyleSheet.create({
48+
container: {
49+
flex: 1,
50+
justifyContent: 'center',
51+
alignItems: 'center',
52+
},
53+
});

examples/cookbook/__tests__/app/jotai/index.test.tsx renamed to examples/cookbook/app/jotai/__tests__/TaskList.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as React from 'react';
22
import { render, screen, userEvent } from '@testing-library/react-native';
3-
import TaskList from '../../../app/jotai';
3+
import { TaskList } from '../TaskList';
4+
import { Task } from '../types';
5+
import { addTask, getAllTasks, newTaskTitleAtom, store, tasksAtom } from '../state';
46
import { renderWithAtoms } from './test-utils';
5-
import { Task } from '../../../app/jotai/types';
6-
import { addTask, getAllTasks, newTaskTitleAtom, store, tasksAtom } from '../../../app/jotai/state';
77

88
jest.useFakeTimers();
99

examples/cookbook/app/jotai/index.tsx

Lines changed: 3 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,6 @@
1-
import 'react-native-get-random-values';
2-
import { nanoid } from 'nanoid';
31
import * as React from 'react';
4-
import { Pressable, Text, TextInput, View } from 'react-native';
5-
import { useAtom } from 'jotai';
6-
import { newTaskTitleAtom, tasksAtom } from './state';
2+
import { TaskList } from './TaskList';
73

8-
export default function TaskList() {
9-
const [tasks, setTasks] = useAtom(tasksAtom);
10-
const [newTaskTitle, setNewTaskTitle] = useAtom(newTaskTitleAtom);
11-
12-
const handleAddTask = () => {
13-
setTasks((tasks) => [
14-
...tasks,
15-
{
16-
id: nanoid(),
17-
title: newTaskTitle,
18-
},
19-
]);
20-
setNewTaskTitle('');
21-
};
22-
23-
return (
24-
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
25-
{tasks.map((task) => (
26-
<Text key={task.id} testID="task-item">
27-
{task.title}
28-
</Text>
29-
))}
30-
31-
{!tasks.length ? <Text>No tasks, start by adding one...</Text> : null}
32-
33-
<TextInput
34-
accessibilityLabel="New Task"
35-
placeholder="New Task..."
36-
value={newTaskTitle}
37-
onChangeText={(text) => setNewTaskTitle(text)}
38-
/>
39-
40-
<Pressable accessibilityRole="button" onPress={handleAddTask}>
41-
<Text>Add Task</Text>
42-
</Pressable>
43-
</View>
44-
);
4+
export default function Example() {
5+
return <TaskList />;
456
}

0 commit comments

Comments
 (0)