forked from AdaGold/react-chatlog
-
Notifications
You must be signed in to change notification settings - Fork 40
BumbleBee-WendyWang #21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
wendyww9
wants to merge
14
commits into
Ada-C23:main
Choose a base branch
from
wendyww9:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
c570d1e
Import ChatLog and pass messages to ChatLog
wendyww9 ed2f42b
Use props to render ChatEntry and add PropTypes validation
wendyww9 b229075
Remove bullet points
wendyww9 a891b11
Use props to render ChatLog and add PropTypes for validation
wendyww9 d320c4b
fix ChatLog validation
wendyww9 c883ee3
Add toggleLiked event handler to ChatEntry
wendyww9 081b1d7
Lift up chatLiked to App and add likeCount
wendyww9 a4f6c48
Move utility function getLikeCount outside of App component
wendyww9 ba923fe
Add space in span
wendyww9 5cef667
Add sender-based alignment (local/remote) and color styling to chat e…
wendyww9 149c79c
Update header section color
wendyww9 cbc7892
Successfully configured Vite React app for GitHub Pages deployment
wendyww9 f719667
Fix test files to include required props and function
wendyww9 4d46680
Refactor code to be more semantic and more clear
wendyww9 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or 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 hidden or 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 |
|---|---|---|
|
|
@@ -46,7 +46,7 @@ | |
| } | ||
|
|
||
| #App span { | ||
| display: inline-block | ||
| display: inline-block; | ||
| } | ||
|
|
||
| .red { | ||
|
|
||
This file contains hidden or 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 hidden or 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 hidden or 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 |
|---|---|---|
| @@ -1,20 +1,34 @@ | ||
| import PropTypes from 'prop-types'; | ||
| import './ChatEntry.css'; | ||
| import TimeStamp from './TimeStamp'; | ||
|
|
||
|
|
||
|
|
||
| const ChatEntry = (props) => { | ||
| const nameColor = props.liked ? '❤️' : '🤍'; | ||
|
|
||
| const ChatEntry = () => { | ||
| return ( | ||
| <div className="chat-entry local"> | ||
| <h2 className="entry-name">Replace with name of sender</h2> | ||
| <li className={`chat-entry ${props.position}`}> | ||
| <h2 className="entry-name">{props.sender}</h2> | ||
| <section className="entry-bubble"> | ||
| <p>Replace with body of ChatEntry</p> | ||
| <p className="entry-time">Replace with TimeStamp component</p> | ||
| <button className="like">🤍</button> | ||
| <p className='entry-body'>{props.body}</p> | ||
| <p className="entry-time"> | ||
| <TimeStamp time={props.timeStamp}></TimeStamp> | ||
| </p> | ||
| <button className="like" onClick={() => props.onLike(props.id)}>{nameColor}</button> | ||
| </section> | ||
| </div> | ||
| </li> | ||
| ); | ||
| }; | ||
|
|
||
| ChatEntry.propTypes = { | ||
| // Fill with correct proptypes | ||
| id:PropTypes.number.isRequired, | ||
| sender:PropTypes.string.isRequired, | ||
| body:PropTypes.string.isRequired, | ||
| timeStamp:PropTypes.string.isRequired, | ||
| liked:PropTypes.bool.isRequired, | ||
| onLike:PropTypes.func.isRequired, | ||
| position:PropTypes.string.isRequired, | ||
| }; | ||
|
|
||
| export default ChatEntry; | ||
This file contains hidden or 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 hidden or 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 |
|---|---|---|
| @@ -1,4 +1,5 @@ | ||
| .chat-log { | ||
| margin: auto; | ||
| max-width: 50rem; | ||
| list-style-type: none; | ||
| } |
This file contains hidden or 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,47 @@ | ||
| import './ChatLog.css'; | ||
| import ChatEntry from './ChatEntry'; | ||
| import PropTypes from 'prop-types'; | ||
|
|
||
| const ChatLog = ({entries, onLike, uniqueSenders}) => { | ||
| const getPosition = (sender) => { | ||
| if (!uniqueSenders || uniqueSenders.length < 2) return 'local'; | ||
| return sender === uniqueSenders[1] ? 'remote' : 'local'; | ||
| }; | ||
|
|
||
| const chatEntryComponents = entries.map((entry) => { | ||
| return ( | ||
| <ChatEntry | ||
| key={entry.id} | ||
| id={entry.id} | ||
| sender={entry.sender} | ||
| body={entry.body} | ||
| timeStamp={entry.timeStamp} | ||
| liked={entry.liked} | ||
| onLike={onLike} | ||
| position={getPosition(entry.sender)}> | ||
| </ChatEntry> | ||
| ); | ||
| }); | ||
|
|
||
| return ( | ||
| <ul className='chat-log'> | ||
| {chatEntryComponents} | ||
| </ul> | ||
| ); | ||
| }; | ||
|
|
||
| ChatLog.propTypes = { | ||
| entries:PropTypes.arrayOf( | ||
| PropTypes.shape({ | ||
| id: PropTypes.number.isRequired, | ||
| sender:PropTypes.string.isRequired, | ||
| body:PropTypes.string.isRequired, | ||
| timeStamp:PropTypes.string.isRequired, | ||
| liked: PropTypes.bool.isRequired, | ||
| }) | ||
| ).isRequired, | ||
| onLike:PropTypes.func.isRequired, | ||
| uniqueSenders:PropTypes.array.isRequired, | ||
| }; | ||
|
|
||
| export default ChatLog; |
This file contains hidden or 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 hidden or 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
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this pattern of sending just the
idtoprops.onLikesince it keeps all the state management and message object creation confined toApp.