Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,9 @@ const PostModifyForm = ({
);
};

const notice =
"글 작성 시 유의사항\n\n인종, 성별, 출신, 지역, 이념 관련 차별 관련 발언 및 타인에게 불쾌감을 유발할 수 있는 글은 삭제될 수 있습니다.\n\n솔리드 커넥션은 홍보 행위를 철저히 금지합니다.";
const noticeTitle = "[글 작성 시 유의사항]";
const noticeContent =
"인종, 성별, 출신, 지역, 이념 관련 차별 관련 발언 및 타인에게 불쾌감을 유발할 수 있는 글은 삭제될 수 있습니다.\n\n솔리드 커넥션은 홍보 행위를 철저히 금지합니다.";

return (
<>
Expand Down Expand Up @@ -147,10 +148,10 @@ const PostModifyForm = ({
onChange={(e) => setContent(e.target.value)}
/>
</div>
<div
className="px-5 pt-2.5 text-gray-100 typo-regular-4"
dangerouslySetInnerHTML={{ __html: notice.replace(/\n/g, "<br />") }}
/>
<div className="px-5 pt-2.5">
<p className="text-gray-250/87 typo-sb-9">{noticeTitle}</p>
<p className="mt-2 whitespace-pre-line text-gray-100 typo-regular-4">{noticeContent}</p>
</div>
</div>
</>
);
Expand Down
13 changes: 7 additions & 6 deletions apps/web/src/app/community/[boardCode]/create/PostForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,9 @@ const PostForm = ({ boardCode }: PostFormProps) => {
);
};

const notice =
"글 작성 시 유의사항\n\n인종, 성별, 출신, 지역, 이념 관련 차별 관련 발언 및 타인에게 불쾌감을 유발할 수 있는 글은 삭제될 수 있습니다.\n\n솔리드 커넥션은 홍보 행위를 철저히 금지합니다.";
const noticeTitle = "[글 작성 시 유의사항]";
const noticeContent =
"인종, 성별, 출신, 지역, 이념 관련 차별 관련 발언 및 타인에게 불쾌감을 유발할 수 있는 글은 삭제될 수 있습니다.\n\n솔리드 커넥션은 홍보 행위를 철저히 금지합니다.";

return (
<>
Expand Down Expand Up @@ -126,10 +127,10 @@ const PostForm = ({ boardCode }: PostFormProps) => {
onChange={(e) => setContent(e.target.value)}
/>
</div>
<div
className="px-5 pt-2.5 text-gray-100 typo-regular-4"
dangerouslySetInnerHTML={{ __html: notice.replace(/\n/g, "<br />") }}
/>
<div className="px-5 pt-2.5">
<p className="text-gray-250/87 typo-sb-9">{noticeTitle}</p>
<p className="mt-2 whitespace-pre-line text-gray-100 typo-regular-4">{noticeContent}</p>
</div>
</div>
</>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,19 @@ import { useEffect } from "react";
import { usePostAppleAuth } from "@/apis/Auth";
import CloudSpinnerPage from "@/components/ui/CloudSpinnerPage";

const attemptedAppleAuthCodes = new Set<string>();

const AppleLoginCallbackPage = () => {
const searchParams = useSearchParams();
const { mutate: postAppleAuth } = usePostAppleAuth();

useEffect(() => {
const code = searchParams?.get("code");
if (code) {
postAppleAuth({ code });
}

if (!code || attemptedAppleAuthCodes.has(code)) return;

attemptedAppleAuthCodes.add(code);
Comment on lines +17 to +19

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Allow retry when Apple auth callback previously failed

The module-level dedupe permanently blocks a given code after the first attempt, because attemptedAppleAuthCodes.has(code) short-circuits all future mounts in the same tab. If the first postAppleAuth call fails (e.g., transient network/server error) and the user returns to the callback URL from history, this effect no longer calls the API or redirects, leaving the spinner page stuck. Please scope deduping to in-flight calls or remove the code from the set on failure so retries remain possible.

Useful? React with 👍 / 👎.

postAppleAuth({ code });
}, [searchParams, postAppleAuth]);

return <CloudSpinnerPage />;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ const MentorDetialContent = ({ mentorId }: MentorDetailContentProps) => {
<p className="mb-7 text-k-500 typo-regular-2">{introduction}</p>

{/* 멘토 채널 */}
<h3 className="mb-2 text-secondary typo-regular-1">멘토 한마디</h3>
<h3 className="mb-2 text-secondary typo-regular-1">멘토 채널</h3>
<div className="mb-7">
<div
className={`grid gap-2 ${
Expand Down
2 changes: 1 addition & 1 deletion apps/web/src/app/my/_ui/MyProfileContent/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ const MyProfileContent = () => {
<p>{nickname}님은</p>
<p>
현재{" "}
<span className="text-primary typo-medium-2">
<span className={`text-primary ${profileData.role === UserRole.MENTEE ? "typo-sb-4" : "typo-medium-2"}`}>
{profileData.role === UserRole.ADMIN ? "어드민" : isMentor ? "멘토" : "멘티"}
</span>{" "}
솔커예요.
Expand Down
8 changes: 4 additions & 4 deletions apps/web/src/components/ui/LinkedTextWithIcon/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,19 +58,19 @@ const Content = ({ icon, text, subText, textColor = "text-k-700" }: ContentProps
{/* 왼쪽 아이콘 + 텍스트 */}
<div className="flex flex-1 items-center gap-1">
{icon ? (
<div className="flex h-8 w-5 items-center justify-center rounded-full">
<span className="h-5 w-5">{icon}</span>
<div className="flex h-8 w-8 items-center justify-center rounded-full [&>svg]:h-5 [&>svg]:w-5 [&>svg]:shrink-0">
{icon}
</div>
) : (
<div className="h-8" />
<div className="h-8 w-8" />
)}
<span className={clsx("typo-medium-2", textColor)}>{text}</span>
</div>

{/* 오른쪽 subText + 아이콘 */}
<div className="flex shrink-0 items-center gap-1">
{subText && <span className="text-k-600 typo-regular-2">{subText}</span>}
<span className="h-5 w-5">
<span className="flex h-5 w-5 items-center justify-center [&>svg]:h-5 [&>svg]:w-5">
<IconDirectionRight />
</span>
</div>
Expand Down
Loading