Skip to content

Commit 1876569

Browse files
committed
Fix error when not upload image / Use username instead of first name in profile
1 parent 6a583de commit 1876569

3 files changed

Lines changed: 37 additions & 20 deletions

File tree

backend/users/serializers.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,32 @@ class UpdateProfileSerializer(serializers.ModelSerializer):
3232
Serializer for updating user profile.
3333
"""
3434
profile_pic = serializers.ImageField(required=False)
35-
first_name = serializers.CharField(max_length=255, required=False)
35+
username = serializers.CharField(max_length=255, required=False)
3636
about = serializers.CharField(required=False)
3737

3838
class Meta:
3939
model = CustomUser
40-
fields = ('profile_pic', 'first_name', 'about')
40+
fields = ('profile_pic', 'username', 'about')
41+
42+
def update(self, instance, validated_data):
43+
"""
44+
Update an existing user's profile.
45+
"""
46+
for attr, value in validated_data.items():
47+
setattr(instance, attr, value)
48+
instance.save()
49+
return instance
50+
51+
class UpdateProfileNopicSerializer(serializers.ModelSerializer):
52+
"""
53+
Serializer for updating user profile.
54+
"""
55+
username = serializers.CharField(max_length=255, required=False)
56+
about = serializers.CharField(required=False)
57+
58+
class Meta:
59+
model = CustomUser
60+
fields = ('username', 'about')
4161

4262
def update(self, instance, validated_data):
4363
"""

backend/users/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from rest_framework_simplejwt.tokens import RefreshToken
1111

12-
from users.serializers import CustomUserSerializer, UpdateProfileSerializer
12+
from users.serializers import CustomUserSerializer, UpdateProfileSerializer, UpdateProfileNopicSerializer
1313
from users.models import CustomUser
1414

1515
class CustomUserCreate(APIView):
@@ -57,7 +57,11 @@ def post(self, request):
5757
return Response ({
5858
'error': 'User does not exist'
5959
}, status=status.HTTP_404_NOT_FOUND)
60+
6061
serializer = UpdateProfileSerializer(request.user, data=request.data)
62+
if request.data.get('profile_pic') == "null":
63+
serializer = UpdateProfileNopicSerializer(request.user, data=request.data)
64+
6165
if serializer.is_valid():
6266
serializer.save()
6367
return Response(serializer.data)

frontend/src/components/profile/ProfileUpdateComponent.jsx

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useEffect } from "react";
55

66
export function ProfileUpdateComponent() {
77
const [file, setFile] = useState(null);
8-
const [firstName, setFirstName] = useState("");
8+
const [username, setUserName] = useState("");
99
const [about, setAbout] = useState();
1010
const fileInputRef = useRef(null);
1111
const [profile_pic, setProfilePic] = useState(undefined);
@@ -14,11 +14,11 @@ export function ProfileUpdateComponent() {
1414
try {
1515
const response = await axiosInstance.get("/user/data/");
1616
const fetchedProfilePic = response.data.profile_pic;
17-
const fetchedName = response.data.first_name;
17+
const fetchedName = response.data.username;
1818
const fetchedAbout = response.data.about;
1919
setProfilePic(fetchedProfilePic);
2020
setAbout(fetchedAbout);
21-
setFirstName(fetchedName);
21+
setUserName(fetchedName);
2222
} catch (error) {
2323
console.error("Error fetching user:", error);
2424
}
@@ -42,7 +42,7 @@ export function ProfileUpdateComponent() {
4242
const handleSave = () => {
4343
const formData = new FormData();
4444
formData.append("profile_pic", file);
45-
formData.append("first_name", firstName);
45+
formData.append("username", username);
4646
formData.append("about", about);
4747

4848
ApiUpdateUserProfile(formData);
@@ -62,16 +62,9 @@ export function ProfileUpdateComponent() {
6262
ref={fileInputRef}
6363
/>
6464
</label>
65-
<div
66-
className="avatar w-32 h-32 cursor-pointer hover:blur"
67-
onClick={handleImageUpload}
68-
>
65+
<div className="avatar w-32 h-32 cursor-pointer hover:blur" onClick={handleImageUpload}>
6966
{file ? (
70-
<img
71-
src={URL.createObjectURL(file)}
72-
alt="Profile"
73-
className="rounded-full"
74-
/>
67+
<img src={URL.createObjectURL(file)} alt="Profile" className="rounded-full" />
7568
) : (
7669
<>
7770
<img src={profile_pic} alt="Default" className="rounded-full" />
@@ -96,13 +89,13 @@ export function ProfileUpdateComponent() {
9689

9790
{/* Full Name Field */}
9891
<div className="w-96">
99-
<label className="block mb-2 text-gray-600">First Name</label>
92+
<label className="block mb-2 text-gray-600">username</label>
10093
<input
10194
type="text"
102-
placeholder="Enter your first name"
95+
placeholder="Enter your username"
10396
className="input w-full"
104-
value={firstName}
105-
onChange={(e) => setFirstName(e.target.value)}
97+
value={username}
98+
onChange={(e) => setUserName(e.target.value)}
10699
/>
107100
</div>
108101

0 commit comments

Comments
 (0)