Commit dfdfec82 by tungnq

TODO: Đã hoàn thiện xong phần lấy camera

parent fa147e2a
......@@ -11,6 +11,7 @@
"server": "json-server --watch db/database.json --port 3000"
},
"dependencies": {
"@react-native-camera-roll/camera-roll": "^7.10.2",
"@react-native-community/async-storage": "^1.12.1",
"@react-native-community/masked-view": "^0.1.11",
"@react-native-community/netinfo": "^7.1.7",
......
......@@ -724,3 +724,18 @@ export const useRenderCount = (name = 'Component') => {
return renderCount.current;
};
export const monthNames = [
'Tháng 1',
'Tháng 2',
'Tháng 3',
'Tháng 4',
'Tháng 5',
'Tháng 6',
'Tháng 7',
'Tháng 8',
'Tháng 9',
'Tháng 10',
'Tháng 11',
'Tháng 12',
]
\ No newline at end of file
......@@ -13,7 +13,7 @@ import R from '../../assets/R';
import {styles} from './style';
import {useNavigation} from '@react-navigation/native';
import * as SCREENNAME from '../../routers/ScreenNames';
import { monthNames } from '../../config/Functions';
LogBox.ignoreLogs([
'[Reanimated] Reduced motion setting is enabled',
'Each child in a list should have a unique "key" prop'
......@@ -61,21 +61,6 @@ const ClassScheduleView = ({
},
});
const renderHeader = () => {
const monthNames = [
'Tháng 1',
'Tháng 2',
'Tháng 3',
'Tháng 4',
'Tháng 5',
'Tháng 6',
'Tháng 7',
'Tháng 8',
'Tháng 9',
'Tháng 10',
'Tháng 11',
'Tháng 12',
];
return (
<View style={styles.header}>
<TouchableOpacity
......
......@@ -131,18 +131,18 @@ const Profile = (props) => {
const openGallery = () => {
const options = {
mediaType: 'photo',
includeBase64: false,
maxHeight: 2000,
maxWidth: 2000,
quality: 1,
};
launchImageLibrary(options, response => {
if (response.didCancel || response.error) {
console.log('User cancelled image picker');
return;
}
if (response.assets && response.assets[0]) {
const imageUri = response.assets[0].uri;
const imageUri = response.assets && response.assets[0] ? response.assets[0].uri : null;
setPreviewUri(imageUri);
setShowImageSourceModal(false);
setShowPreview(true);
......@@ -161,6 +161,7 @@ const Profile = (props) => {
setPreviewUri(uri);
setShowCamera(false);
setShowPreview(true);
};
const onToggleCameraPosition = () => setUseFront(v => !v);
......@@ -174,23 +175,26 @@ const Profile = (props) => {
setAvatarUri(previewUri);
setPreviewUri(null);
setShowPreview(false);
setShowCamera(false); // Đóng camera sau khi xác nhận
DeviceEventEmitter.emit('hideTabs', false);
};
const onRetakePhoto = () => {
setPreviewUri(null);
setShowPreview(false);
DeviceEventEmitter.emit('hideTabs', false);
setShowCamera(true); // Quay lại camera để chụp lại
// Không emit hideTabs false vì vẫn đang trong camera mode
};
const onClosePreview = () => {
setPreviewUri(null);
setShowPreview(false);
setShowCamera(false); // Đóng cả camera
DeviceEventEmitter.emit('hideTabs', false);
};
const handleSave = () => {
const [formData, setFormData] = useState({
const formData = {
phoneNumber,
oldTeacherCode,
workPlace,
......@@ -225,8 +229,10 @@ const Profile = (props) => {
salaryIncreaseMilestone,
lecturerTitle,
avatarUri,
});
setFormData(formData);
};
console.log('Form data to save:', formData);
Alert.alert('Thành công', 'Dữ liệu đã được lưu!');
// TODO: call API save
};
......
......@@ -743,23 +743,8 @@ const ProfileView = props => {
);
};
const renderCamera = () => {
return (
<View style={styles.container}>
<Header title={'Hồ sơ giảng viên'} isBack />
<ScrollView showsVerticalScrollIndicator={false} vertical>
<View style={styles.body}>
{renderHeaderBody()}
{renderBody()}
</View>
</ScrollView>
{/* Image Source Selection Modal */}
{/* Preview Modal */}
{renderPreviewModal()}
{/* Overlay Camera - chỉ UI, mọi handler/state nhận từ props */}
{showCamera && (
<View style={styles.overlay}>
{device ? (
<>
......@@ -829,7 +814,26 @@ const ProfileView = props => {
</View>
)}
</View>
)}
)
}
return (
<View style={styles.container}>
<Header title={'Hồ sơ giảng viên'} isBack />
<ScrollView showsVerticalScrollIndicator={false} vertical>
<View style={styles.body}>
{renderHeaderBody()}
{renderBody()}
</View>
</ScrollView>
{/* Image Source Selection Modal */}
{/* Preview Modal */}
{renderPreviewModal()}
{/* Overlay Camera - chỉ UI, mọi handler/state nhận từ props */}
{showCamera && renderCamera()}
</View>
);
};
......
......@@ -1529,6 +1529,11 @@
dependencies:
merge-options "^3.0.4"
"@react-native-camera-roll/camera-roll@^7.10.2":
version "7.10.2"
resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-7.10.2.tgz#af2234f60f0b55aff9afb60888ce7f0669d52593"
integrity sha512-XgJQJDFUycmqSX+MH7vTcRigQwEIQNLIu1GvOngCZRwlSV2mF61UzeruSmmHwkBcGnHZFXkKg9fil0FQVfyglw==
"@react-native-community/async-storage@^1.12.1":
version "1.12.1"
resolved "https://registry.npmjs.org/@react-native-community/async-storage/-/async-storage-1.12.1.tgz"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment