비싼 집값 시대에 집에있는 오래된 물건이 나의 집을 차지하는 것을 참을 수 없었습니다.
중고거래를 통해 필요없는 물품을 판매하시고, 같은 집이지만 더 넓은 환경에서 지내보세요.
repo : https://github.com/yunjunhojj/Mango-Market
notion : https://perpetual-product-9cd.notion.site/Team-Project-Template-0fe56e2827754095b3a22e7ce486ed16
팀장이지만, 팀원 및 나 자신의 성장에 도움이 되도록 팀을 이끌지 못해서 아쉽습니다.
디자인 깔끔하게 정리해주시고, 추가로 댓글까지 구현해주셔서 만족스러운 결과물 이였습니다..
이번 네이티브 프로젝트 하면서 사실 혼자 수동적으로 작성한 코드가 많이 없었고 다른 사람들에 비해 실력이 부족하여 도움이 되지 못한것 같아 앞으로 남은 기간동안 최선을 다해 공부하고 싶다.
먼저 기능을 구현했으면 다른 팀원들의 기능을 도와서 했어야 했는데 그러지 못한 점이 아쉽지만 추가 기능까지 구현 완료해 프로젝트가 성공적으로 끝난 것 같아서 만족합니다.
100퍼센트 완성도있는 프로젝트가 아니라 아쉽지만 부족한부분을알게되고,
더발전해야되는 계기를 만들어준 프로젝트였습니다.
잘하시는 분들이 많은 조여서 민폐가 될까 걱정이 많았는데 도움을 정말 많이 주신덕에 헤쳐나간것같아 조원분들께 감사한 마음이 듭니다.
git에 대한 이해를 기반으로 github를 정확하게 활용할 수 있도록 준비해야겠고 생각했습니다.
자바스크립트,React에대한 공부를 더 해야겠다는 생각이 들었습니다.
공식문서를 기반으로 문제를 해결할 수 있도록 항상 연습해야겠습니다.
useFocusEffect(
useCallback(() => {
if (!authService.currentUser) {
// 로그인 X
reset({
index: 1,
routes: [
{
name: "Tabs",
params: {
screen: "Home",
},
},
{
name: "Stacks",
params: {
screen: "Login",
},
},
],
});
return;
}
getPostDate();
}, [])
);
const uploadImage = async () => {
const blobImage = await new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = function () {
resolve(xhr.response);
};
xhr.onerror = function () {
reject(new TypeError("네트워크 요청 실패"));
};
xhr.responseType = "blob";
xhr.open("get", image, true);
xhr.send(null);
});
// Create the file metadata
/** @type {any} */
const metadata = {
contentType: "image/jpeg",
};
const storageRef = ref(storage, "Categories/" + Date.now());
const uploadTask = uploadBytesResumable(storageRef, blobImage, metadata);
uploadTask.on(
"state_changed",
(snapshot) => {
const progress =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log("Upload is " + progress + "% done");
switch (snapshot.state) {
case "paused":
console.log("Upload is paused");
break;
case "running":
console.log("Upload is running");
break;
}
},
(error) => {
switch (error.code) {
case "storage/unauthorized":
break;
case "storage/canceled":
break;
case "storage/unknown":
break;
}
},
() => {
getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => {
setImage("null");
const newBoard = createNewBoard(downloadURL);
addBoard(newBoard);
});
}
);
};
const createNewBoard = (img) => {
return {
userId: currentId,
title,
content,
price,
date: new Date(),
isDone: false,
isEdit: false,
img,
};
};
const addBoard = async (newBoard) => {
await addDoc(collection(dbService, "posts"), newBoard);
setContent("");
setTitle("");
setPrice("");
Alert.alert("작성 완료");
navigation.navigate("Home");
};
const pickImage = async () => {
// No permissions request is necessary for launching the image library
let result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
aspect: [4, 3],
quality: 1,
});
if (!result.canceled) {
setImage(result.assets[0].uri);
}
};