Skip to content

Commit 7e56fd6

Browse files
committed
the createProduct is created according to what has been learned in classes
1 parent fc19c9d commit 7e56fd6

File tree

7 files changed

+119
-11
lines changed

7 files changed

+119
-11
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { createPostController } from "../create-post/createPostController.js";
2+
3+
document.addEventListener("DOMContentLoaded", () => {
4+
const token = localStorage.getItem('accessToken');
5+
6+
if (!token) {
7+
window.location = '/views/login.html'
8+
}
9+
10+
const createPostForm = document.querySelector('#createPostForm')
11+
createPostController(createPostForm)
12+
})
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { createPost } from "./createPostModel.js";
2+
3+
export const createPostController = (createPostForm) => {
4+
createPostForm.addEventListener('submit', async (event) => {
5+
6+
event.preventDefault();
7+
8+
const postImage = createPostForm.querySelector('#post-image').value;
9+
const postName = createPostForm.querySelector('#post-name').value;
10+
const postDescription = createPostForm.querySelector('#post-description').value;
11+
const postPrice = createPostForm.querySelector('#post-price').value;
12+
const transactionType = createPostForm.querySelector('input[name="transactionType"]:checked').value;
13+
14+
const isPurchase = transactionType === 'purchase';
15+
16+
const postData = {
17+
image: postImage,
18+
name: postName,
19+
description: postDescription,
20+
price: postPrice,
21+
isPurchase: isPurchase
22+
}
23+
24+
handlecreatePost(postData, createPostForm)
25+
26+
})
27+
28+
const handlecreatePost = async (postData, createPostForm) => {
29+
30+
try {
31+
32+
await createPost(postData);
33+
34+
dispatchCreateProductSuccess(createPostForm, 'Post created successfully.');
35+
36+
setTimeout(() => {
37+
window.location = '/';
38+
}, 2000)
39+
40+
} catch (error) {
41+
dispatchCreateProductError(createPostForm, error.message);
42+
}
43+
}
44+
45+
function dispatchCreateProductSuccess(createPostForm, successMessage) {
46+
const event = new CustomEvent("createPost-ok", {
47+
detail: {
48+
message: successMessage,
49+
type: 'success'
50+
}
51+
});
52+
createPostForm.dispatchEvent(event)
53+
}
54+
55+
function dispatchCreateProductError(createPostForm, errorMessage) {
56+
const event = new CustomEvent("createPost-error", {
57+
detail: errorMessage
58+
});
59+
createPostForm.dispatchEvent(event)
60+
}
61+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
export const createPost = async (postData) => {
2+
try {
3+
const token = localStorage.getItem("accessToken");
4+
5+
const response = await fetch("http://localhost:8000/api/posts", {
6+
method: "POST",
7+
body: JSON.stringify({
8+
photo: postData.image,
9+
name: postData.name,
10+
description: postData.description,
11+
price: postData.price,
12+
isPurchase: postData.isPurchase
13+
}),
14+
headers: {
15+
"Content-type": "application/json",
16+
"Authorization": `Bearer ${token}`
17+
}
18+
});
19+
20+
const data = await response.json();
21+
22+
// If response is not OK, throw an error with the response message
23+
if (!response.ok) {
24+
const errorMessage = data.message;
25+
console.error(`Error: ${response.status} (${response.statusText}) --> ${errorMessage}`);
26+
throw new Error(errorMessage);
27+
}
28+
29+
} catch (error) {
30+
throw error;
31+
32+
}
33+
34+
}

src/js/modules/show-posts/showPostsModel.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ export async function getPosts() {
55
try {
66
const response = await fetch('http://localhost:8000/api/posts')
77

8-
const data = await response.json();
8+
posts = await response.json();
99

1010
if (!response.ok) {
11-
const errorMessage = data.message || 'Error desconocido';
11+
const errorMessage = posts.message;
1212
console.error(`Error: ${response.status} (${response.statusText}): ${errorMessage}`);
1313
throw new Error(errorMessage);
1414
}
1515

16-
if (data.length === 0) {
16+
if (posts.length === 0) {
1717
const apiMessage = 'No posts to fetch in the API';
1818
console.error(`Response: ${response.status} (${response.statusText}) --> ${apiMessage}`);
1919
throw new Error(apiMessage);

src/js/modules/signup/signUpController.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export const signUpController = (signupForm) => {
3636
errors.push('The email format is incorrect.')
3737
}
3838

39-
// check that the passwords are the sameH
39+
// check that the passwords are the same
4040
if (password !== passwordConfirm) {
4141
errors.push('Passwords are not the same.')
4242
}
@@ -45,8 +45,8 @@ export const signUpController = (signupForm) => {
4545
handleCreateUser(name, email, password, signupForm)
4646
} else {
4747
errors.forEach(error => {
48-
const event = new CustomEvent("sigup-error", {
49-
detail: error // <-- "error" are actually theh
48+
const event = new CustomEvent("signup-error", {
49+
detail: error // <-- "error" is actually the descriptions
5050
});
5151
signupForm.dispatchEvent(event)
5252
})
@@ -58,7 +58,7 @@ export const signUpController = (signupForm) => {
5858

5959
/* Insert User to API REST VVVVVVVVVVVVVVVVVVV */
6060
await createUser(name, email, password);
61-
const event = new CustomEvent("sigup-ok", {
61+
const event = new CustomEvent("signup-ok", {
6262
detail: {
6363
message: 'You have successfully registered.',
6464
type: 'success'
@@ -73,7 +73,7 @@ export const signUpController = (signupForm) => {
7373

7474
} catch (error) {
7575

76-
const event = new CustomEvent("sigup-error", {
76+
const event = new CustomEvent("signup-error", {
7777
detail: error.message
7878
});
7979

src/js/modules/signup/signup.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ document.addEventListener("DOMContentLoaded", () => {
88

99
const { showNotification } = notificationsController(notifications)
1010

11-
sigupForm.addEventListener("sigup-error", (event) => {
11+
sigupForm.addEventListener("signup-error", (event) => {
1212
const message = event.detail;
1313
showNotification(message)
1414
})
1515

16-
sigupForm.addEventListener("sigup-ok", (event) => {
16+
sigupForm.addEventListener("signup-ok", (event) => {
1717
const message = event.detail.message;
1818
const type = event.detail.type;
1919
showNotification(message, type)

views/create-post.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<meta charset="UTF-8" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>Create Post</title>
8+
<link rel="stylesheet" href="../src/styles/notifications.css">
89
</head>
910

1011
<body>
@@ -39,7 +40,7 @@ <h1>Create Post</h1>
3940
<button>Create Post</button>
4041
</form>
4142

42-
<script type="module" src="../src/js/modules/create-post/create-post.js"></script>
43+
<script type="module" src="../src/js/modules/create-post/createPost.js"></script>
4344
</body>
4445

4546
</html>

0 commit comments

Comments
 (0)