Skip to content

Commit

Permalink
feat : modify the Navigation Structure
Browse files Browse the repository at this point in the history
- 갤러리 or 직접 찍는 Screen 과 실제 필터를 적용하는 화면을 분리
- Nested Navigatior 적용
  • Loading branch information
DonghyunKim98 committed Dec 14, 2020
1 parent f6cfd45 commit 5bca469
Show file tree
Hide file tree
Showing 7 changed files with 128 additions and 89 deletions.
2 changes: 1 addition & 1 deletion __tests__/App-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ import App from '../App';
// Note: test renderer must be required after react-native.

it('renders correctly', () => {
renderer.create(<App />);
renderer.create(<App />);
});
1 change: 0 additions & 1 deletion app/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ const App = () => {
<Stack.Screen
name="FilterCamera"
component={FilterCamera}
options={{title: 'Filter Camera'}}
/>
<Stack.Screen
name="StickerCamera"
Expand Down
16 changes: 8 additions & 8 deletions app/screens/FilterCamera/FilterCamerBtn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ interface ButtonProps {
}

function FilterCamerBtn({title, style, onPressFunc}: ButtonProps) {
return (
<Button
title={title}
style={style}
onPress={() => onPressFunc()}
/>
);
return (
<Button
title={title}
style={style}
onPress={() => onPressFunc()}
/>
);
}

export default FilterCamerBtn;
export default FilterCamerBtn;
96 changes: 18 additions & 78 deletions app/screens/FilterCamera/FilterCamera.tsx
Original file line number Diff line number Diff line change
@@ -1,87 +1,27 @@
import React, {useState} from 'react';
import {Image, Text, View, StyleSheet} from 'react-native';
import {filterCameraOptions} from '../../static/imagePickerOption';
import {LaunchCamera, LaunchGallery} from './../../utils/imagePicker';
import FilterCamerBtn from './FilterCamerBtn';

const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'column',
},
content: {
flex: 4,
},
footer: {
flex: 1,
flexDirection: 'row',
flexWrap: 'wrap',
},
img: {
width: 100,
height: 200,
},
btn: {},
});
import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import FilterCameraSelctionScreen from './FilterCameraSelectionScreen';
import FilterCameraResultScreen from './FilterCameraResultScreen';

function FilterCamera() {
const [photoUri, setPhotoUri] = useState<string>('');
const CameraBtnClickListener = (): void => {
LaunchCamera(filterCameraOptions)
.then((newUri) => {
setPhotoUri(newUri);
})
.catch((err) => {
Error(err);
});
};

const GalleryBtnClickListener = (): void => {
LaunchGallery(filterCameraOptions)
.then((newUri) => {
setPhotoUri(newUri);
})
.catch((err) => {
Error(err);
});
};

const SubmitBtnClickListener = () => {
console.log('제출!');
};
const Stack = createStackNavigator();

return (
<View style={styles.container}>
<View style={styles.content}>
{photoUri !== '' ? (
<Image
style={styles.img}
source={{
uri: `${photoUri}`,
}}
/>
) : (
<Text>사진이 아직 없어요!</Text>
)}
</View>
<View style={styles.footer}>
<FilterCamerBtn
title="카메라"
style={styles.btn}
onPressFunc={CameraBtnClickListener}
/>
<FilterCamerBtn
title="갤러리"
style={styles.btn}
onPressFunc={GalleryBtnClickListener}
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen
name="Selection"
component={FilterCameraSelctionScreen}
options={{title: '사진 선택하기'}}
/>
<FilterCamerBtn
title="제출"
style={styles.btn}
onPressFunc={SubmitBtnClickListener}
<Stack.Screen
name="Result"
component={FilterCameraResultScreen}
options={{title: '필터 적용하기'}}
/>
</View>
</View>
</Stack.Navigator>
</NavigationContainer>
);
}

Expand Down
12 changes: 12 additions & 0 deletions app/screens/FilterCamera/FilterCameraResultScreen.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import React from 'react';
import {View, Text} from 'react-native';

function FilterCameraResultScreen() {
return (
<View>
<Text> 결과 창</Text>
</View>
);
}

export default FilterCameraResultScreen;
88 changes: 88 additions & 0 deletions app/screens/FilterCamera/FilterCameraSelectionScreen.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import React, {useState} from 'react';
import {Image, Text, View, StyleSheet} from 'react-native';
import {filterCameraOptions} from '../../static/imagePickerOption';
import {LaunchCamera, LaunchGallery} from '../../utils/imagePicker';
import FilterCamerBtn from './FilterCamerBtn';

const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: 'column',
},
content: {
flex: 4,
},
footer: {
flex: 1,
flexDirection: 'row',
flexWrap: 'wrap',
},
img: {
width: 100,
height: 200,
},
btn: {},
});

function FilterCameraSelctionScreen() {
const [photoUri, setPhotoUri] = useState<string>('');
const CameraBtnClickListener = (): void => {
LaunchCamera(filterCameraOptions)
.then((newUri) => {
setPhotoUri(newUri);
})
.catch((err) => {
Error(err);
});
};

const GalleryBtnClickListener = (): void => {
LaunchGallery(filterCameraOptions)
.then((newUri) => {
setPhotoUri(newUri);
})
.catch((err) => {
Error(err);
});
};

const SubmitBtnClickListener = () => {
console.log('제출!');
};

return (
<View style={styles.container}>
<View style={styles.content}>
{photoUri !== '' ? (
<Image
style={styles.img}
source={{
uri: `${photoUri}`,
}}
/>
) : (
<Text>사진이 아직 없어요!</Text>
)}
</View>
<View style={styles.footer}>
<FilterCamerBtn
title="카메라"
style={styles.btn}
onPressFunc={CameraBtnClickListener}
/>
<FilterCamerBtn
title="갤러리"
style={styles.btn}
onPressFunc={GalleryBtnClickListener}
/>
<FilterCamerBtn
title="제출"
style={styles.btn}
onPressFunc={SubmitBtnClickListener}
/>
</View>
</View>
);
}

export default FilterCameraSelctionScreen;
2 changes: 1 addition & 1 deletion app/screens/Home/Home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const styles = StyleSheet.create({

const Home = ({navigation}) => {
const navigateToFilterScreen = () => {
navigation.navigate('FilterCamera');
navigation.navigate('FilterCamera', {screen: 'FilterCameraSelectionScreen'});
};

const navigateToStickerScreen = () => {
Expand Down

0 comments on commit 5bca469

Please sign in to comment.