<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Md. Ibrahim Hossain</title>
    <description>The latest articles on DEV Community by Md. Ibrahim Hossain (@mdibuhossain).</description>
    <link>https://dev.to/mdibuhossain</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F789792%2Fdd57e613-2173-45f1-b643-39e10cc7dcbe.jpeg</url>
      <title>DEV Community: Md. Ibrahim Hossain</title>
      <link>https://dev.to/mdibuhossain</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mdibuhossain"/>
    <language>en</language>
    <item>
      <title>Cannot assign to read only property 'displayName' of object '#&lt;Object&gt;'</title>
      <dc:creator>Md. Ibrahim Hossain</dc:creator>
      <pubDate>Mon, 10 Jan 2022 20:18:52 +0000</pubDate>
      <link>https://dev.to/mdibuhossain/cannot-assign-to-read-only-property-displayname-of-object--2gkl</link>
      <guid>https://dev.to/mdibuhossain/cannot-assign-to-read-only-property-displayname-of-object--2gkl</guid>
      <description>&lt;p&gt;I'm using &lt;code&gt;@reduxjs/toolkit: 1.7.1&lt;/code&gt; , &lt;code&gt;firebase: 9.6.1&lt;/code&gt; and &lt;code&gt;firebase-tools: 10.0.1&lt;/code&gt; on my ReactJS project. I was trying to create a function where users can update their names and avatar photos.&lt;/p&gt;

&lt;p&gt;For which I used &lt;code&gt;updateProfile()&lt;/code&gt; function. But whenever I execute the update function it threw an error &lt;code&gt;Cannot assign to read only property 'displayName' of object '#&amp;lt;Object&amp;gt;'&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;There is an interesting thing I have noticed that is if I only update the photoURL property still it gives &lt;code&gt;Cannot assign to read only property 'displayName' of object '#&amp;lt;Object&amp;gt;'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/mdibuhossain/Front-end-ReactJS-with-Firebase-template"&gt;Project_Link_Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code: &lt;code&gt;useFirebase.js&lt;/code&gt;:&lt;br&gt;
`import { getAuth, signInWithPopup, GoogleAuthProvider, createUserWithEmailAndPassword, signInWithEmailAndPassword, signOut, onAuthStateChanged, updateProfile } from 'firebase/auth';&lt;br&gt;
import { getDownloadURL, getStorage, ref, uploadBytes } from 'firebase/storage';&lt;br&gt;
import { useEffect, useState } from 'react';&lt;br&gt;
import { useDispatch } from 'react-redux';&lt;br&gt;
import { useLocation, useNavigate } from 'react-router-dom';&lt;br&gt;
import { setIsLoading } from '../features/isloadingSlice';&lt;br&gt;
import { login, logout } from '../features/userSlice';&lt;br&gt;
import initAuth from '../Firebase/initAuth';&lt;/p&gt;

&lt;p&gt;initAuth();&lt;/p&gt;

&lt;p&gt;export const useFirebase = () =&amp;gt; {&lt;br&gt;
    const auth = getAuth();&lt;br&gt;
    const location = useLocation();&lt;br&gt;
    const navigate = useNavigate();&lt;br&gt;
    const dispatch = useDispatch();&lt;br&gt;
    const [updateCount, setUpdateCount] = useState(0);&lt;br&gt;
    const storage = getStorage();&lt;br&gt;
    const Redirect = () =&amp;gt; {&lt;br&gt;
        console.log(location);&lt;br&gt;
        const destination = location?.state?.from?.pathname || '/';&lt;br&gt;
        navigate(destination);&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const uploadAvatar = async (file) =&amp;gt; {
    const fileRef = ref(storage, 'avatar/' + auth?.currentUser?.uid + '.png');
    dispatch(setIsLoading(true));
    const snapshot = await uploadBytes(fileRef, file);
    const photoURL = await getDownloadURL(fileRef);
    updateProfile(auth.currentUser, { photoURL }).then(() =&amp;gt; {
        setUpdateCount(updateCount + 1);
    }).catch(e =&amp;gt; console.log(e.message))
    dispatch(setIsLoading(false));
    console.log(snapshot);
}

const userRegister = (name, photoURL, email, password) =&amp;gt; {
    dispatch(setIsLoading(true));
    createUserWithEmailAndPassword(auth, email, password)
        .then(result =&amp;gt; {
            updateProfile(auth.currentUser, {
                displayName: name, photoURL
            }).then(() =&amp;gt; { })
            dispatch(login({ displayName: name, email, photoURL }));
            Redirect();
        }).catch(error =&amp;gt; alert(error.message))
        .finally(() =&amp;gt; dispatch(setIsLoading(false)))
}

useEffect(() =&amp;gt; {
    const unsubscribe = onAuthStateChanged(auth, (result) =&amp;gt; {
        if (result) {
            dispatch(login({ ...result }))
        }
        else {
            dispatch(login({}))
        }
        dispatch(setIsLoading(false));
    })
    return () =&amp;gt; unsubscribe;
}, [updateCount, auth])

return {
    logIn,
    logOut,
    Redirect,
    uploadAvatar,
    userRegister,
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}`&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9nUfKvnL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugcztgp06zzjtr21te72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9nUfKvnL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ugcztgp06zzjtr21te72.png" alt="issue" width="880" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I don't know what's wrong with this &lt;code&gt;displayName&lt;/code&gt; property but my previous project works fine.&lt;/p&gt;

&lt;p&gt;Can anybody please help me with this?&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>react</category>
      <category>redux</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
