Skip to content

[๐Ÿ› Bug] ์ƒ์„ฑ ๋กค๋งํŽ˜์ดํผ์™€ ๋ชจ๋‹ฌ์ฐฝ์— cl,ul,ol ์ •๋ ฌ, ๊ธ€์žํฌ๊ธฐ ๋ณ€๊ฒฝ,ํ”„๋กœํ•„ ๋ฏธ์„ ํƒ ์ด๋ฏธ์ง€ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ#167

Merged
aahreum merged 14 commits intomainfrom
fix/profile-image-basic-Delete
Oct 13, 2025

Conversation

@Greensod-96
Copy link
Contributor

@vercel
Copy link

vercel bot commented Oct 13, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
frontend Ready Ready Preview Comment Oct 13, 2025 4:01pm

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @Greensod-96, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

์ด PR์€ ํ…์ŠคํŠธ ์—๋””ํ„ฐ์˜ ํฐํŠธ ๋ฐ ๋ฆฌ์ŠคํŠธ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ณ , ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ํŽ˜์ด์ง€์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ ํƒ ๊ณผ์ •์„ ๋” ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค๊ณ , Quill ์—๋””ํ„ฐ ์ฝ˜ํ…์ธ ์˜ ์•ˆ์ „ํ•œ ๋ Œ๋”๋ง์„ ์œ„ํ•œ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

Highlights

  • ํ…์ŠคํŠธ ์—๋””ํ„ฐ ๊ธฐ๋Šฅ ๊ฐœ์„ : ํฐํŠธ ์ ์šฉ ๋กœ์ง์ด ์—๋””ํ„ฐ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ์„ ํƒ๋œ ํ…์ŠคํŠธ ๋˜๋Š” ์ปค์„œ ์œ„์น˜์—๋งŒ ์ ์šฉ๋˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ, ํฐํŠธ ๋ณ€๊ฒฝ ๊ฐ์ง€ ๋กœ์ง์ด text-change ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํˆด๋ฐ”์— ๊ธ€์ž ํฌ๊ธฐ ์„ ํƒ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋‹ฌ ์ปดํฌ๋„ŒํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€: ๋ชจ๋‹ฌ ์—ด๋ฆผ/๋‹ซํž˜ ์‹œ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ์œ„ํ•ด useState์™€ useEffect๋ฅผ ํ™œ์šฉํ•œ ๊ฐ€์‹œ์„ฑ ๊ด€๋ฆฌ ๋กœ์ง๊ณผ CSS ํŠธ๋žœ์ง€์…˜์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ˜ํ…์ธ  ๋ Œ๋”๋ง ๋ฐ ๋ฆฌ์ŠคํŠธ ์ฒ˜๋ฆฌ ๋กœ์ง ๊ฐ•ํ™”: Quill ์—๋””ํ„ฐ์—์„œ ์ƒ์„ฑ๋œ HTML ์ฝ˜ํ…์ธ ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ Œ๋”๋งํ•˜๋Š” PostContent ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌํŒฉํ† ๋ง๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ์ˆœ์„œ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ, ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ ๋ฆฌ์ŠคํŠธ, ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ์˜ ์ •๋ ฌ ๋ฐ ๋งˆ์ปค ํ‘œ์‹œ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๋„๋ก ์ปค์Šคํ…€ ๋กœ์ง์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ ํƒ ๋กœ์ง ๊ฐœ์„ : ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ํŽ˜์ด์ง€์—์„œ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ ํƒ ์‹œ, ์ฒซ ๋ฒˆ์งธ ์ด๋ฏธ์ง€๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •๋˜๊ณ  ๋‚˜๋จธ์ง€ ์ด๋ฏธ์ง€๋Š” ์„ ํƒ ๋ชฉ๋ก์— ํ‘œ์‹œ๋˜๋„๋ก ๋ณ€๊ฒฝ๋˜์–ด, 'ํ”„๋กœํ•„ ๋ฏธ์„ ํƒ' ์ƒํƒœ๊ฐ€ ๋ชฉ๋ก์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • HTML Sanitization ์„ค์ • ํ™•์žฅ: Quill ์—๋””ํ„ฐ์˜ ํ’๋ถ€ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด sanitizeConfig.js ํŒŒ์ผ์—์„œ ํ—ˆ์šฉ๋˜๋Š” HTML ํƒœ๊ทธ, ์†์„ฑ ๋ฐ CSS ์†์„ฑ ๋ชฉ๋ก์ด ๋Œ€ํญ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with ๐Ÿ‘ and ๐Ÿ‘Ž on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. โ†ฉ

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request addresses a bug related to text editor functionalities and modal display issues. The changes include enhancements to font application, list formatting in the text editor, and modal transition effects. Additionally, profile image handling in the message posting form has been improved. The review focuses on correctness and maintainability, particularly in the context of React component lifecycle management and DOM manipulation.

Comment on lines +23 to +25
// ๋‹ซํž ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ณ ๋ คํ•ด ์•ฝ๊ฐ„์˜ ์ง€์—ฐ
const timer = setTimeout(() => setVisible(false), 200);
return () => clearTimeout(timer);
Copy link
Contributor

Choose a reason for hiding this comment

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

high

๋ชจ๋‹ฌ์ด ๋‹ซํž ๋•Œ setTimeout์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— Portal์ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. setVisible(false)๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Using setTimeout when the modal closes might cause a potential issue where the Portal is removed before the animation completes. It's recommended to ensure the animation is complete before calling setVisible(false). You could use CSS animation events to synchronize this.

Comment on lines +168 to +178
onFontChange={(fontKey) => {
if (!fontKey) {
return;
}
setSelectedFont(fontKey);

const displayName = FONT_DISPLAY_NAMES[fontKey];
if (displayName && fontRef.current?.setValue) {
fontRef.current.setValue(displayName);
}
}}
Copy link
Contributor

Choose a reason for hiding this comment

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

high

onFontChange prop์„ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด์—์„œ fontRef.current?.setValue๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ side effect๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋Š” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์— prop์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Calling fontRef.current?.setValue within the callback function passed through the onFontChange prop can cause side effects. Component state updates should be predictable, and directly modifying the parent component's state from a child component is not recommended. Instead, it's better to update the state in the parent component and pass it to the child component as a prop if necessary.

}, [font]);

// Quill์—์„œ ๊ธ€๊ผด ๋ณ€๊ฒฝ ๊ฐ์ง€ โ†’ ์™ธ๋ถ€๋กœ ์ „๋‹ฌ (์„ ํƒ ์˜์—ญ ๊ธฐ์ค€)
// Quill์—์„œ ๊ธ€๊ผด ๋ณ€๊ฒฝ ๊ฐ์ง€ โ†’ ์™ธ๋ถ€๋กœ ์ „๋‹ฌ (ํˆด๋ฐ” ์‚ฌ์šฉ ์‹œ๋งŒ)
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

// Quill์—์„œ ๊ธ€๊ผด ๋ณ€๊ฒฝ ๊ฐ์ง€ โ†’ ์™ธ๋ถ€๋กœ ์ „๋‹ฌ (ํˆด๋ฐ” ์‚ฌ์šฉ ์‹œ๋งŒ) ์ฃผ์„์€ ๋ณ€๊ฒฝ๋œ ๋กœ์ง์„ ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํˆด๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธ€๊ผด์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์„์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋” ์ •ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Consider updating the comment to accurately reflect the change in logic.

Comment on lines 241 to 244
if (format.font && format.font !== lastSelectionFontRef.current) {
lastSelectionFontRef.current = format.font;
onFontChange(format.font);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

format.font !== lastSelectionFontRef.current ๋น„๊ต๋Š” ๋ถˆํ•„์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. onFontChange ์ฝœ๋ฐฑ์€ ํ•ญ์ƒ ์™ธ๋ถ€์—์„œ ์„ ํƒ๋œ ๊ธ€๊ผด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜ธ์ถœ๋˜๋ฏ€๋กœ, ์ด ์กฐ๊ฑด์€ ํ•ญ์ƒ ์ฐธ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Consider removing the condition format.font !== lastSelectionFontRef.current to simplify the code.

        onFontChange(format.font);

Comment on lines 32 to 39
// ๐Ÿšจ 1, 4๋ฒˆ ๋ฌธ์ œ ํ•ด๊ฒฐ: ๋ชจ๋“  ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ(li)์— ๊ธฐ์ค€์ ๊ณผ ํ…์ŠคํŠธ ์‹œ์ž‘ ์œ„์น˜ ์„ค์ •
const listItems = container.querySelectorAll('li');
listItems.forEach((li) => {
// ql-ui์˜ absolute ๊ธฐ์ค€์ 
li.style.position = 'relative';
// ํ…์ŠคํŠธ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€์–ด๋ƒ„
li.style.paddingLeft = '1.5em';
});
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

li ์š”์†Œ์— ์Šคํƒ€์ผ์„ ์ง์ ‘ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CSS ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€/์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šคํƒ€์ผ ๋ณ€๊ฒฝ์ด ๋” ์‰ฝ๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

Applying styles directly to li elements can make maintenance difficult. It's recommended to use CSS classes and dynamically add/remove those classes as needed. This makes style changes easier and more predictable.

Comment on lines 70 to 72
// ์ด๋ฏธ ์ƒ์„ฑ๋œ ๋งˆ์ปค๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. (์•ˆ์ „ ์žฅ์น˜)
if (li.querySelector('.ql-ui')) {
return;
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

์ด๋ฏธ ์ƒ์„ฑ๋œ ๋งˆ์ปค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง(li.querySelector('.ql-ui'))์€ ์ค‘๋ณต ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜์ง€๋งŒ, ๋งˆ์ปค๊ฐ€ ์˜ˆ์ƒ์น˜ ์•Š๊ฒŒ ์ œ๊ฑฐ๋œ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์ปค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ๋งˆ๋‹ค ๋งˆ์ปค๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋„๋ก ๋กœ์ง์„ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

The logic to check if a marker already exists (li.querySelector('.ql-ui')) is useful for preventing duplicate creation, but it doesn't handle cases where the marker might have been unexpectedly removed. Consider adjusting the logic to recreate the marker whenever it's not present.

Comment on lines +76 to +80
<PostContent
htmlContent={content}
className={'line-clamp-2 sm:line-clamp-3'}
font={font}
card
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

PostContent ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€๋งŒ, line-clamp ํด๋ž˜์Šค๋ฅผ PostContent ๋‚ด๋ถ€๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณด์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด MessageCard ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋” ๊น”๋”ํ•ด์ง€๊ณ , PostContent๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ํ…์ŠคํŠธ ์ค„ truncation์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

While using the PostContent component to display the message content is good, consider moving the line-clamp class inside PostContent. This would make the MessageCard component cleaner and allow PostContent to handle text truncation on its own.

Comment on lines +76 to +77
!fromInput.value?.trim() ||
!profileImageURL?.trim() ||
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

fromInput.value?.trim() ๋ฐ profileImageURL?.trim()์— ๋Œ€ํ•œ nullish coalescing ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ’์ด null ๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Using nullish coalescing operators for fromInput.value?.trim() and profileImageURL?.trim() is good. This prevents errors if the values are null or undefined.


.ql-snow.ql-toolbar button.ql-list.ql-active .ql-stroke,
.ql-snow.ql-toolbar button.ql-list.ql-active .ql-stroke,
.ql-snow .ql-toolbar button.ql-list.ql-active .ql-stroke,
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

.ql-snow .ql-toolbar button.ql-list.ql-active .ql-stroke์— ๋Œ€ํ•œ ์ค‘๋ณต ์„ ์–ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ CSS๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

There is a duplicate declaration for .ql-snow .ql-toolbar button.ql-list.ql-active .ql-stroke. Consider removing this duplication to clean up the CSS.

@github-actions
Copy link

๐ŸŽ‰ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ Preview: https://frontend-nbq9ooj79-fe-19-seongihuns-projects.vercel.app

@github-actions
Copy link

๐ŸŽ‰ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ Preview: https://frontend-dyx5cbheg-fe-19-seongihuns-projects.vercel.app

@github-actions
Copy link

๐ŸŽ‰ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ Preview: https://frontend-5jqut8t6d-fe-19-seongihuns-projects.vercel.app

@github-actions
Copy link

๐ŸŽ‰ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ Preview: https://frontend-4xcca8bbr-fe-19-seongihuns-projects.vercel.app

Copy link
Member

@aahreum aahreum left a comment

Choose a reason for hiding this comment

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

๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

@aahreum aahreum merged commit 3845e78 into main Oct 13, 2025
3 checks passed
@aahreum aahreum deleted the fix/profile-image-basic-Delete branch October 13, 2025 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

No open projects
Status: Done

2 participants