Untitled

 avatar
unknown
plain_text
2 years ago
2.7 kB
5
Indexable
pass the username prop to ChatMessage as follows:
<ChatMessage
  key={message.id}
  message={message}
  username={username}
/>

import React, { useState } from 'react';
import { Button, Input, IconButton } from '@material-ui/core';
import ImageIcon from '@material-ui/icons/Image';
import firebase from 'firebase/app';
import 'firebase/database';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faCommentAlt } from '@fortawesome/free-solid-svg-icons'
import './ChangeUsernameAndPicture.css';
import { NavLink } from 'react-router-dom';
const ChangeUsernameAndPicture = () => {
  const [username, setUsername] = useState('');
  const [profilePicture, setProfilePicture] = useState(null);
  const [error, setError] = useState(null);
  const [success, setSuccess] = useState(false);
  const auth = firebase.auth()

  const handleProfilePictureChange = (e) => {
    setProfilePicture(URL.createObjectURL(e.target.files[0]));
  };

  const handleUsernameChange = () => {
    firebase.database().ref('users/' + firebase.auth().currentUser.uid + '/username').set(username)
      .then(() => {
        setSuccess(true);
        setError(null);
      })
      .catch((error) => {
        setSuccess(false);
        setError(error.message);
      });
  };

  return (
    <div className="change-username-and-picture">
      <h2>Change username and picture</h2>
      <Input 
        type="text" 
        placeholder="Enter new username" 
        value={username}
        onChange={e => setUsername(e.target.value)} 
      />
      <input 
        type="file" 
        accept="image/*" 
        onChange={handleProfilePictureChange} 
        style={{ display: 'none' }} 
        id="upload-profile-picture"
      />
      <label htmlFor="upload-profile-picture">
        <IconButton 
          color="primary" 
          aria-label="upload picture" 
          component="span"
        >
          <ImageIcon />
        </IconButton>
      </label>
      {profilePicture && (
        <div>
          <img src={profilePicture} alt="Profile" />
        </div>
      )}
      <Button variant="contained" color="primary" onClick={handleUsernameChange}>
        Change
      </Button>
      {error && (
        <p className="error">Error: {error}</p>
      )}
      {success && (
        <p className="success">Username changed successfully!</p>
      )}
      {auth.currentUser && (<p><button className="sign-out" onClick={() => auth.signOut()}>SignOut</button></p>)}
      <NavLink to="/"><button className="chat-icon">
          <FontAwesomeIcon icon={faCommentAlt} />
        </button></NavLink>
    </div>
  );
};

export default ChangeUsernameAndPicture;
Editor is loading...