traPtitech / traPortfolio-Dashboard

3 stars 0 forks source link

プロジェクトの削除ボタンを追加 #391

Closed ogu-kazemiya closed 3 weeks ago

ogu-kazemiya commented 3 weeks ago

User description

close #301

contestEditの実装ほぼ丸パクリです


PR Type

enhancement


Description


Changes walkthrough 📝

Relevant files
Enhancement
Project.vue
プロジェクト削除機能の追加と確認モーダルの実装                                                                   

src/pages/Project.vue
  • DeleteFormConfirmModalコンポーネントをインポート
  • プロジェクト削除機能を追加
  • 削除確認モーダルを実装
  • プロジェクト削除時のトーストメッセージを追加
  • +28/-0   

    💡 PR-Agent usage: Comment /help "your question" on any pull request to receive relevant information

    github-actions[bot] commented 3 weeks ago

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    **🎫 Ticket compliance analysis 🔶** **[301](https://github.com/traPtitech/traPortfolio-Dashboard/issues/301) - Partially compliant** Fully compliant requirements: - プロジェクトの削除ボタンを実装した Not compliant requirements: - サーバーの対応状況についての確認が不明
    ⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Error Handling
    プロジェクト削除の失敗時のエラーハンドリングが不十分かもしれません。例外処理の詳細な検討が必要です。 Modal Management
    モーダルの状態管理が直接的で、より抽象化されたアプローチが可能かもしれません。
    github-actions[bot] commented 3 weeks ago

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Best practice
    finallyブロックを使用して、成功または失敗に関わらずisDeletingを適切に更新します。 ___ **`deleteProject`関数の完了後に`isDeleting`の値を更新するために、`finally`ブロックを使用してください。** [src/pages/Project.vue [115-126]](https://github.com/traPtitech/traPortfolio-Dashboard/pull/391/files#diff-4e8aa41e439d638b3e4fb2ed6b5fc5fd543a6e78b8e5431f82746141b203122aR115-R126) ```diff isDeleting.value = true try { await apis.deleteProject(projectId.value) mutate() toast.success('プロジェクト情報を削除しました') router.push({ name: 'Projects' }) } catch { toast.error('プロジェクト情報の削除に失敗しました') +} finally { + isDeleting.value = false } -isDeleting.value = false ```
    Suggestion importance[1-10]: 8 Why: Using a `finally` block ensures that the `isDeleting` state is correctly reset after the operation, regardless of whether the deletion succeeds or fails, which is a best practice for managing state in asynchronous operations.
    8
    Enhancement
    例外処理にエラーログを追加することで、デバッグが容易になります。 ___ **`deleteProject`関数内の例外処理を追加してください。現在のコードでは、例外が発生した場合に何も行われません。** [src/pages/Project.vue [115-124]](https://github.com/traPtitech/traPortfolio-Dashboard/pull/391/files#diff-4e8aa41e439d638b3e4fb2ed6b5fc5fd543a6e78b8e5431f82746141b203122aR115-R124) ```diff try { await apis.deleteProject(projectId.value) mutate() toast.success('プロジェクト情報を削除しました') router.push({ name: 'Projects' }) -} catch { +} catch (error) { + console.error(error) toast.error('プロジェクト情報の削除に失敗しました') } ```
    Suggestion importance[1-10]: 7 Why: Adding error logging in the catch block enhances error tracking and debugging, which is crucial for maintaining robust error handling in production environments.
    7
    プロジェクト削除中にユーザーが誤って再度削除を試みるのを防ぎます。 ___ **`deleteProject`関数の実行中にボタンを無効化するために、`isDeleting`の状態を利用してください。** [src/pages/Project.vue [190]](https://github.com/traPtitech/traPortfolio-Dashboard/pull/391/files#diff-4e8aa41e439d638b3e4fb2ed6b5fc5fd543a6e78b8e5431f82746141b203122aR190-R190) ```diff - + ```
    Suggestion importance[1-10]: 6 Why: Disabling the delete form button while deletion is in progress prevents multiple submissions, which can lead to potential errors or unexpected behavior.
    6
    ogu-kazemiya commented 3 weeks ago

    フォーマッターはかけたんですが、何故か弾かれてます なんででしょうか…?

    Pugma commented 3 weeks ago

    確認してみたところ、どうやら最新ではない main ブランチから今のブランチを作ってしまったみたい 一旦は main ブランチを今のブランチにマージしてみてほしいです!