Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[frontend] display pending status #233

Merged
merged 4 commits into from
Jan 30, 2024
Merged

Conversation

lim396
Copy link
Collaborator

@lim396 lim396 commented Jan 30, 2024

  • chat channelのcontext menu内のボタンを一度押したら処理が終了するまで再度押せないように修正しました。
  • BAN、ADD USERも同様に修正し、処理中はpending状態の表示をするように変更しました。
  • エラーが発生した際のユーザーへの通知や処理の修正、モーダルウィンドウ周りの修正(特にBAN)は別PRで行います。

Copy link
Contributor

coderabbitai bot commented Jan 30, 2024

Walkthrough

The recent update introduces a suite of features aimed at enhancing user moderation within chat rooms. This includes the ability to mute or ban users with new UI components, such as MuteMenu, BanItem, and UnbanItem, facilitating more granular control over user interactions. Additionally, improvements in state management and async operations in existing components like sidebar-item underscore a broader effort to refine the application's responsiveness and user experience.

Changes

File Path Change Summary
frontend/app/room/[id]/mute-menu.tsx Adds MuteMenu component for muting users with duration options.
frontend/app/room/[id]/sidebar-item.tsx Enhances state management, introduces MuteMenu, and updates async functions.
frontend/app/ui/room/ban-item.tsx & frontend/app/ui/room/unban-item.tsx Implements BanItem and UnbanItem components for banning and unbanning users, respectively.
frontend/app/ui/room/ban-modal.tsx & frontend/app/ui/room/invite-modal.tsx Refactors to use BanItem/UnbanItem and InviteItem components, removing direct calls to actions.
frontend/app/ui/room/invite-item.tsx Introduces InviteItem for inviting users with loading indicator.
frontend/components/ui/context-menu.tsx Modifies className in ContextMenuSubContent for styling and animation.
frontend/components/ui/loader.tsx Adds Loader component for loading animations with optional styling.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests for this file.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit tests for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository from git and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

frontend/app/ui/room/ban-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/ban-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/ban-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/invite-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/invite-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/invite-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/unban-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/unban-item.tsx Outdated Show resolved Hide resolved
frontend/app/ui/room/unban-item.tsx Outdated Show resolved Hide resolved
@lim396 lim396 force-pushed the feat/frontend/display-pending-status branch from aa058a5 to 8371c5e Compare January 30, 2024 07:27
@lim396 lim396 merged commit 4a6d6d5 into main Jan 30, 2024
4 checks passed
@lim396 lim396 deleted the feat/frontend/display-pending-status branch January 30, 2024 07:48
isClicked: false,
});
const [isUpdateRoleClicked, setIsUpdateRoleClicked] = useState(false);

Copy link
Owner

Choose a reason for hiding this comment

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

なーんかこのたくさんstateを作らないといけないのって嫌ですね〜w
useBlock() useInvite useMute useUpdateRoleとかで関心ごとに分けてほしいかもな〜。

例えばですが、こんな感じでuseBlockを設計してみるとか。

const { block, unblock, pending, isBlocked } = useBlock();

...

                <ContextMenuItem
                  disabled={isBlocked || pending}
                  onSelect={block}
                >
                  Block
                </ContextMenuItem>
                <ContextMenuItem
                  disabled={!isBlocked || pending}
                  onSelect={unblock}
                >
                  Unblock
                </ContextMenuItem>

useFormStatusとか、既存にあるものをいろいろ参考にしてみるといいかもしれません。
命名、設計, etc...
https://react.dev/reference/react-dom/hooks/useFormStatus

socket.emit("invite-pong", { userId: user.userId });
setIsInviting(true);
setInviteState({ isInviting: true, isClicked: false });
};
Copy link
Owner

Choose a reason for hiding this comment

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

inviteがどんな挙動のものなのか、知らないな。どういうものなんだろうこれ

Copy link
Owner

Choose a reason for hiding this comment

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

このファイルはchat-roomに関して書かれているので、単にinviteだと、そのchatにinviteするみたいだから紛らわしいかも。

const router = useRouter();
const [isClicked, setIsClicked] = useState(false);

const onBan = async (userId: number) => {
Copy link
Owner

Choose a reason for hiding this comment

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

onBanという名前がよく分かりません。onXXXというのはXXXが起きた時に行われるactionというイメージかと。
例えばonClickだったら、clickされたときに実行されるアクションという感じです。

Copy link
Owner

Choose a reason for hiding this comment

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

あと、そもそもなんでuserIdを引数に取らないといけないですか?user.idでいいから必要なさそうな気がするんだけど

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants