forked from b00tc4mp/isdi-bootcamp-202405
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add new work app to react tools b00tc4mp#79
- Loading branch information
Fabián Romero
authored and
Fabián Romero
committed
Jul 4, 2024
1 parent
69bb386
commit 785f6ba
Showing
75 changed files
with
2,233 additions
and
45 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
staff/fabian-romero/playground/ponies/app/data/updateUser.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
function updateUser(condition, user) { | ||
const users = localStorage.user !== undefined ? JSON.parse(localStorage.users) : [] | ||
|
||
const index = users.findIndex(condition) | ||
|
||
if (index > -1) { | ||
user.splice(index, 1, user) | ||
|
||
localStorage.users = JSON.stringify(users) | ||
} | ||
} | ||
|
||
export default updateUser |
20 changes: 20 additions & 0 deletions
20
staff/fabian-romero/playground/ponies/app/logic/getAllFavPosts.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import data from '../data/index.mjs' | ||
|
||
const getAllFavPosts = () => { | ||
const user = data.findUser(user => user.username === sessionStorage.username) | ||
|
||
if (user === null) | ||
throw new Error('user not found') | ||
|
||
const posts = data.findPosts(post => user.favs.includes(post.id)) | ||
|
||
posts.forEach(post => { | ||
post.fav = user.favs.includes(post.id) | ||
post.like = post.likes.includes(sessionStorage.username) | ||
}) | ||
|
||
return posts.reverse() | ||
|
||
} | ||
|
||
export default getAllFavPosts |
23 changes: 23 additions & 0 deletions
23
staff/fabian-romero/playground/ponies/app/logic/getAllFollowingUserPost.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
import data from '../data/index.mjs' | ||
|
||
const getAllFollowingUserPosts = () => { | ||
const user = data.findUser(user => user.username === sessionStorage.username) | ||
|
||
if (user === null) | ||
throw new Error('User not found') | ||
|
||
const posts = data.findPosts(post => user.following.includes(post.author)) | ||
|
||
posts.forEach((post) => { | ||
post.fav = user.favs.includes(post.id) | ||
post.like = post.likes.includes(sessionStorage.username) | ||
post.author = { | ||
username: post.author, | ||
following: user.following.includes(post.author) | ||
} | ||
}) | ||
|
||
return posts.reverse() | ||
} | ||
|
||
export default getAllFollowingUserPosts |
16 changes: 15 additions & 1 deletion
16
staff/fabian-romero/playground/ponies/app/logic/getAllPosts.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
staff/fabian-romero/playground/ponies/app/logic/getAllPosts.test.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import getAllFavPosts from './getAllFavPosts.mjs' | ||
|
||
console.info('TEST getAllFavPosts') | ||
console.info('CASE get all fav posts from fabito ') | ||
|
||
sessionStorage.username = 'fabito' | ||
|
||
const favs = getAllFavPosts() | ||
|
||
console.log(favs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
|
||
<head> | ||
<meta charset="UTF-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>TEST logic</title> | ||
</head> | ||
|
||
<body> | ||
<h1>TEST logic</h1> | ||
|
||
<script src="getAllFavPosts.test.mjs" type="module"></script> | ||
|
||
</body> | ||
|
||
</html> |
26 changes: 26 additions & 0 deletions
26
staff/fabian-romero/playground/ponies/app/logic/toggleFavPost.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import data from '../data/index.mjs' | ||
|
||
function toggleFavPost(postId) { | ||
if (postId.trim().length === 0) throw new Error('invalid postId') | ||
|
||
const user = data.findUser(user => user.username === sessionStorage.username) | ||
|
||
if (user === null) | ||
throw new Error('user not found') | ||
|
||
const post = data.findPost(post => post.id === postId) | ||
|
||
if (post === null) | ||
throw new Error('post not found') | ||
|
||
const index = user.fav.indexOf(postId) | ||
|
||
if (index < 0) | ||
user.favs.push(postId) | ||
else | ||
user.favs.splice(index, 1) | ||
|
||
data.updateUser(user => user.username === sessionStorage.username, user) | ||
} | ||
|
||
export default toggleFavPost |
27 changes: 27 additions & 0 deletions
27
staff/fabian-romero/playground/ponies/app/logic/toggleFollowUser.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import data from '../data/index.mjs' | ||
|
||
function toggleFollowUser(username) { | ||
|
||
if (!username.trim().length) throw new Error('Invalid username') | ||
|
||
const user = data.findUser(user => user.username === sessionStorage.username) | ||
|
||
if (!user) | ||
throw new Error('User not found') | ||
|
||
const following = data.findUser(user => user.username === username) | ||
|
||
if (!following) | ||
throw new Error('Following user not found') | ||
|
||
const index = user.following.indexOf(username) | ||
|
||
if (index < 0) | ||
user.following.push(username) | ||
else | ||
user.following.splice(index, 1) | ||
|
||
data.updateUser(user => user.username === sessionStorage.username, user) | ||
} | ||
|
||
export default toggleFollowUser |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
staff/fabian-romero/playground/ponies/app/view/home/component/FavPostList.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import Component from '../../Component.mjs' | ||
import Post from './Post.mjs' | ||
|
||
import logic from '../../../logic/index.mjs' | ||
|
||
class FavPostList extends Component { | ||
constructor() { | ||
super(document.createElement('section')) | ||
|
||
this.setClassName('post-list') | ||
} | ||
|
||
clearPosts() { | ||
for (let i = this.container.children.length - 1; i > -1; i--) { | ||
const child = this.container.children[i] | ||
|
||
this.container.removeChild(child) | ||
} | ||
} | ||
|
||
listPosts() { | ||
try { | ||
const posts = logic.getAllFavPosts() | ||
|
||
const self = this | ||
|
||
posts.forEach(_post => { | ||
const post = new Post(_post) | ||
|
||
post.onPostDeleted(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onPostCaptionEdited(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onPostLikeToggled(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onPostFavToggled(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onUserFollowToggled(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
self.add(post) | ||
}) | ||
} catch (error) { | ||
console.error(error) | ||
|
||
alert(error.message) | ||
} | ||
} | ||
} | ||
|
||
export default FavPostList |
65 changes: 65 additions & 0 deletions
65
staff/fabian-romero/playground/ponies/app/view/home/component/FollowingUserPostList.mjs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import Component from '../../Component.mjs' | ||
import Post from './Post.mjs' | ||
|
||
import logic from '../../../logic/index.mjs' | ||
|
||
class FollowingUserPostList extends Component { | ||
constructor() { | ||
super(document.createElement('section')) | ||
|
||
this.setClassName('post-list') | ||
} | ||
|
||
clearPosts() { | ||
for (let i = this.container.children.length - 1; i > -1; i--) { | ||
const child = this.container.children[i] | ||
|
||
this.container.removeChild(child) | ||
} | ||
} | ||
|
||
listPosts() { | ||
try { | ||
const posts = logic.getAllFollowingUserPosts() | ||
|
||
const self = this | ||
|
||
posts.forEach(_post => { | ||
const post = new Post(_post) | ||
|
||
post.onPostDeleted(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onPostCaptionEdited(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onPostLikeToggled(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onPostFavToggled(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
post.onFollowUserToggled(() => { | ||
self.clearPosts() | ||
self.listPosts() | ||
}) | ||
|
||
self.add(post) | ||
}) | ||
} catch (error) { | ||
console.error(error) | ||
|
||
alert(error.message) | ||
} | ||
} | ||
} | ||
|
||
export default FollowingUserPostList |
Oops, something went wrong.