Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

fix: dialog/store correctness — probe-removal, race, owner gate (#260 #261 #262 #264)#277

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/dialog-store-correctness
May 27, 2026
Merged

fix: dialog/store correctness — probe-removal, race, owner gate (#260 #261 #262 #264)#277
rubenvdlinde merged 1 commit into
developmentfrom
fix/dialog-store-correctness

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • Open Leave Project dialog — verify Cancel does not modify membership
  • Remove a member with assigned tasks — verify remove-then-re-add no longer happens (member stays until "Remove anyway" is clicked)
  • Delete a project as non-owner/non-admin — verify delete button is disabled and shows forbidden message
  • Delete a project as owner — verify delete works normally
  • Create a new project and verify owner field is set to current user's UID

- #260 ProjectLeaveDialog.mounted() no longer calls leaveProject as a
  probe; it inspects the already-fetched members array via fetchProject
  so Cancel can never inadvertently mutate state.

- #261/#262 Split removeMember into a pure write action and a new
  getMemberTaskCount read action. confirmRemoveMember now queries the
  count first and only removes when count is zero, eliminating the
  remove-then-re-add race and the silent data-loss if the re-add fails.

- #264 ProjectDeleteDialog now checks project.owner === currentUid ||
  isAdmin before enabling the delete button. The canDelete guard is also
  enforced in confirm() as a server-side safety net. owner is now set
  on createProject so newly created projects are always gated correctly.
@rubenvdlinde rubenvdlinde merged commit 387b394 into development May 27, 2026
This was referenced May 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant