Skip to content

Commit a375f05

Browse files
committed
fix: improve experience for remove post
1 parent f27a24f commit a375f05

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

src/components/post/PostHead.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ const PostHead: React.FC<PostHeadProps> = ({
176176
toggleAskRemove();
177177
onRemove();
178178
};
179+
179180
return (
180181
<PostHeadBlock>
181182
<div className="head-wrapper">

src/containers/post/PostViewer.tsx

+17-4
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ const PostViewer: React.FC<PostViewerProps> = ({
101101
);
102102
const prefetched = useRef(false);
103103

104+
const [isRemoveLoading, setIsRemoveLoading] = useState(false);
104105
const [removePost] = useMutation(REMOVE_POST);
105106
const [postView] = useMutation(POST_VIEW);
106107
const [likePost, { loading: loadingLike }] = useMutation(LIKE_POST);
@@ -252,15 +253,27 @@ const PostViewer: React.FC<PostViewerProps> = ({
252253

253254
const onRemove = async () => {
254255
if (!data || !data.post) return;
256+
setIsRemoveLoading(true);
255257
try {
256258
await removePost({
257259
variables: {
258260
id: data.post.id,
259261
},
260262
});
261-
history.push('/');
262-
await client.resetStore();
263-
} catch (e) {}
263+
264+
toast.success('게시글이 성공적으로 삭제되었습니다.', {
265+
autoClose: 800,
266+
onClose: () => {
267+
const redirect = `${process.env
268+
.REACT_APP_CLIENT_V3_HOST!}/@${username}/posts`;
269+
window.location.href = redirect;
270+
},
271+
});
272+
} catch (e) {
273+
toast.error('게시글 삭제 실패');
274+
console.error('Post deletion failed:', e);
275+
setIsRemoveLoading(false);
276+
}
264277
};
265278

266279
if (error) {
@@ -377,7 +390,7 @@ const PostViewer: React.FC<PostViewerProps> = ({
377390
}
378391
};
379392

380-
if (!data || !data.post) return <PostSkeleton />;
393+
if (!data || !data.post || isRemoveLoading) return <PostSkeleton />;
381394

382395
const { post } = data;
383396

src/containers/velog/SeriesPosts.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,22 @@ const SeriesPosts: React.FC<SeriesPostsProps> = ({ username, urlSlug }) => {
4040
const user = useUser();
4141
const isOwnSeries = user && user.username === username;
4242
const [askRemove, setAskRemove] = useState(false);
43-
const [isSkip, setIsSkip] = useState(false);
44-
const [removeSeries] = useMutation(REMOVE_SERIES);
43+
const [removeSeries, { loading: isRemoveSeriesLoading }] =
44+
useMutation(REMOVE_SERIES);
4545
const { data } = useQuery<GetSeriesResponse>(GET_SERIES, {
4646
variables: {
4747
username,
4848
url_slug: urlSlug,
4949
},
5050
fetchPolicy: 'cache-and-network',
51-
skip: isSkip,
51+
skip: isRemoveSeriesLoading,
5252
});
5353

5454
const client = useApolloClient();
5555

5656
const onAskRemove = () => setAskRemove(true);
5757
const onConfirmRemove = async () => {
5858
try {
59-
setIsSkip(true);
6059
setAskRemove(false);
6160

6261
if (!data?.series?.id) {
@@ -81,6 +80,7 @@ const SeriesPosts: React.FC<SeriesPostsProps> = ({ username, urlSlug }) => {
8180
});
8281
} catch (e) {
8382
toast.error('시리즈 삭제 실패');
83+
console.error('Series deletion failed:', e);
8484
}
8585
};
8686

0 commit comments

Comments
 (0)