farheen_blog_app 0.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "farheen_blog_app",
3
3
  "private": false,
4
- "version": "0.0.4",
4
+ "version": "1.0.5",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -0,0 +1,157 @@
1
+ import {
2
+ useEffect,
3
+ useState
4
+ } from "react";
5
+
6
+ import {
7
+ useNavigate,
8
+ useParams
9
+ } from "react-router-dom";
10
+
11
+ import {
12
+ getPostById,
13
+ updatePost
14
+ } from "../services/postService";
15
+
16
+ const EditPost = () => {
17
+
18
+ const { id } = useParams();
19
+
20
+ const navigate =
21
+ useNavigate();
22
+
23
+ const [formData,
24
+ setFormData] =
25
+ useState({
26
+ title: "",
27
+ content: "",
28
+ image: null
29
+ });
30
+
31
+ useEffect(() => {
32
+
33
+ fetchPost();
34
+
35
+ }, []);
36
+
37
+ const fetchPost =
38
+ async () => {
39
+
40
+ const res =
41
+ await getPostById(id);
42
+
43
+ setFormData({
44
+ title:
45
+ res.data.title,
46
+ content:
47
+ res.data.content,
48
+ image: null
49
+ });
50
+
51
+ };
52
+
53
+ const handleChange =
54
+ (e) => {
55
+
56
+ const {
57
+ name,
58
+ value,
59
+ files
60
+ } = e.target;
61
+
62
+ setFormData({
63
+ ...formData,
64
+ [name]:
65
+ files
66
+ ? files[0]
67
+ : value
68
+ });
69
+
70
+ };
71
+
72
+ const handleSubmit =
73
+ async (e) => {
74
+
75
+ e.preventDefault();
76
+
77
+ const data =
78
+ new FormData();
79
+
80
+ data.append(
81
+ "title",
82
+ formData.title
83
+ );
84
+
85
+ data.append(
86
+ "content",
87
+ formData.content
88
+ );
89
+
90
+ if (
91
+ formData.image
92
+ ) {
93
+
94
+ data.append(
95
+ "image",
96
+ formData.image
97
+ );
98
+
99
+ }
100
+
101
+ await updatePost(
102
+ id,
103
+ data
104
+ );
105
+
106
+ navigate(
107
+ "/admin/blogs"
108
+ );
109
+ };
110
+
111
+ return (
112
+ <form
113
+ onSubmit={
114
+ handleSubmit
115
+ }
116
+ className="flex flex-col gap-4"
117
+ >
118
+
119
+ <input
120
+ name="title"
121
+ value={
122
+ formData.title
123
+ }
124
+ onChange={
125
+ handleChange
126
+ }
127
+ />
128
+
129
+ <textarea
130
+ name="content"
131
+ value={
132
+ formData.content
133
+ }
134
+ onChange={
135
+ handleChange
136
+ }
137
+ />
138
+
139
+ <input
140
+ type="file"
141
+ name="image"
142
+ onChange={
143
+ handleChange
144
+ }
145
+ />
146
+
147
+ <button
148
+ type="submit"
149
+ >
150
+ Update Blog
151
+ </button>
152
+
153
+ </form>
154
+ );
155
+ };
156
+
157
+ export default EditPost;
@@ -0,0 +1,106 @@
1
+ import {
2
+ useEffect,
3
+ useState
4
+ } from "react";
5
+
6
+ import {
7
+ useParams,
8
+ useNavigate
9
+ } from "react-router-dom";
10
+
11
+ import {
12
+ getUserById,
13
+ updateUser
14
+ } from "../services/userService";
15
+
16
+ const EditUser = () => {
17
+
18
+ const { id } = useParams();
19
+
20
+ const navigate = useNavigate();
21
+
22
+ const [formData, setFormData] =
23
+ useState({
24
+ name: "",
25
+ email: "",
26
+ role: ""
27
+ });
28
+
29
+ useEffect(() => {
30
+
31
+ fetchUser();
32
+
33
+ }, []);
34
+
35
+ const fetchUser = async () => {
36
+
37
+ const res =
38
+ await getUserById(id);
39
+
40
+ setFormData(res.data);
41
+
42
+ };
43
+
44
+ const handleChange = (e) => {
45
+
46
+ setFormData({
47
+ ...formData,
48
+ [e.target.name]:
49
+ e.target.value
50
+ });
51
+
52
+ };
53
+
54
+ const handleSubmit = async (e) => {
55
+
56
+ e.preventDefault();
57
+
58
+ await updateUser(
59
+ id,
60
+ formData
61
+ );
62
+
63
+ navigate("/admin/users");
64
+ };
65
+
66
+ return (
67
+ <form
68
+ onSubmit={handleSubmit}
69
+ className="flex flex-col gap-4"
70
+ >
71
+
72
+ <input
73
+ name="name"
74
+ value={formData.name}
75
+ onChange={handleChange}
76
+ />
77
+
78
+ <input
79
+ name="email"
80
+ value={formData.email}
81
+ onChange={handleChange}
82
+ />
83
+
84
+ <select
85
+ name="role"
86
+ value={formData.role}
87
+ onChange={handleChange}
88
+ >
89
+ <option value="user">
90
+ User
91
+ </option>
92
+
93
+ <option value="admin">
94
+ Admin
95
+ </option>
96
+ </select>
97
+
98
+ <button type="submit">
99
+ Update User
100
+ </button>
101
+
102
+ </form>
103
+ );
104
+ };
105
+
106
+ export default EditUser;