Skip to content

feat: APP-799 support for data post multi-user editing#2793

Merged
blushi merged 11 commits intodevfrom
feat-APP-799-post-updated
Mar 9, 2026
Merged

feat: APP-799 support for data post multi-user editing#2793
blushi merged 11 commits intodevfrom
feat-APP-799-post-updated

Conversation

@blushi
Copy link
Member

@blushi blushi commented Jan 27, 2026

Description

Needs https://github.com/regen-network/regen-server/pull/559 to be merged before it can be tested

It also fixes some bug in the data stream where CTA buttons to edit/delete draft posts were not displayed to org members.


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • provided a link to the relevant issue or specification
  • provided instructions on how to test
  • reviewed "Files changed" and left comments if necessary
  • confirmed all CI checks have passed

How to test

  1. Create a data post from an organization project and save as draft
  2. From the project page data stream, open the modal to edit this draft post
  3. In a separate browser or incognito window, log in with a user than can also manage posts from this project and edit the draft and SAVE
  4. Come back to the modal opened in 2. and try to click "save draft"/"publish", you should see a modal "Someone made changes to this draft while you were editing."
  5. Click "cancel", it should just cancel the modal, the post form modal remains open so you can copy your changes if needed
  6. Click "save draft" or "publish" and make sure your changes have been saved

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items
.

I have...

  • confirmed all author checklist items have been addressed
  • reviewed code correctness and readability
  • verified React components follow DRY principles
  • reviewed documentation is accurate
  • reviewed tests
  • manually tested (if applicable)

@netlify
Copy link

netlify bot commented Jan 27, 2026

Deploy Preview for terrasos ready!

Name Link
🔨 Latest commit 2ea4f12
🔍 Latest deploy log https://app.netlify.com/projects/terrasos/deploys/69aea3e73ce9800008148647
😎 Deploy Preview https://deploy-preview-2793--terrasos.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @blushi, 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!

This pull request enhances the data post functionality by adding support for multi-user editing, preventing data loss and improving collaboration. It also refactors access control logic and updates components to reflect the new permissioning system.

Highlights

  • Multi-User Editing Support: This PR introduces support for multi-user editing of data posts, preventing users from overwriting each other's changes. It adds a modal to warn users if a draft has been edited by someone else while they were working on it.
  • Component Updates: The PR updates the PostCard component to use canManagePost instead of isAdmin to determine if a user can manage a post. It also modifies the PostFormSchema to include id and updatedAt fields.
  • Access Control: The PR refactors access control logic using getCanManagePost and getCanViewPost functions to determine user permissions for managing and viewing posts.
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

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ab7e625549

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

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 introduces a valuable feature for handling multi-user editing of data posts by detecting concurrent edits. The implementation includes a new modal to warn users about potential overwrites, which is a solid approach. Additionally, the refactoring from isAdmin to the more descriptive canManagePost and canViewPost greatly improves the clarity and maintainability of the access control logic. The changes are well-structured and consistently applied. I have identified one critical issue with the date comparison logic used for conflict detection that needs to be addressed.

@blushi
Copy link
Member Author

blushi commented Jan 27, 2026

@erikalogie @S4mmyb see testing instructions

@erikalogie
Copy link
Collaborator

https://www.loom.com/share/e398e09ecd7647dabc6b3ff467925e51

Also I have noticed that the draft badge is kinda hanging out in the middle of nowhere instead of being close to the action dropdown button
Monosnap Arkansas River Corridor Biochar   Soil Restoration Project 2026-01-27 16-24-38

@blushi
Copy link
Member Author

blushi commented Feb 2, 2026

https://www.loom.com/share/e398e09ecd7647dabc6b3ff467925e51

I cannot reproduce the issue, could you open the dev tools, "network" tab and when you get the error red banner, check out the new request that appears (probably in red) and show the "preview" or "response" tab, "payload" tab could be useful too

@blushi
Copy link
Member Author

blushi commented Feb 2, 2026

Also I have noticed that the draft badge is kinda hanging out in the middle of nowhere instead of being close to the action dropdown button

I've fixed that

@erikalogie
Copy link
Collaborator

The deploy preview is cancelled, so I can't test this again:
image

@blushi blushi force-pushed the feat-APP-799-post-updated branch from fb6cda4 to 0e3b062 Compare February 3, 2026 14:04
@blushi
Copy link
Member Author

blushi commented Feb 3, 2026

The deploy preview is cancelled, so I can't test this again: image

this should be available now @erikalogie

@blushi
Copy link
Member Author

blushi commented Feb 3, 2026

@erikalogie also please have a look at #2793 (comment)
thanks

@erikalogie
Copy link
Collaborator

@blushi
Copy link
Member Author

blushi commented Feb 3, 2026

Ok hope this helps: https://www.loom.com/share/84bae4cd7d134f75a3f3591c78a2e84b

ok I had a quick look and actually noticed something unrelated to the error in the way you test:
the user editing needs to SAVE his changes, otherwise it doesn't have any effect on the other user screen since we do not save the changes in real time, while the user is typing, only once it gets submitted explicitly
that's why you're not seeing the warning popup initially
I'll clarify the testing instructions if that wasn't clear

@blushi
Copy link
Member Author

blushi commented Feb 4, 2026

@erikalogie I could reproduce the error when saving a draft
it looks like it's also on dev, and even on prod so unrelated to the recent changes here
it seems to be some server related race condition when updating the post content
while I figure it out and so you can test this feature, you can try to update the privacy settings of the draft post, instead of the content, this should not cause the error but should trigger the warning modal for the other user since the post has changed in some ways

@blushi blushi force-pushed the feat-APP-799-post-updated branch from 0e3b062 to 28ee656 Compare February 19, 2026 12:35
@blushi
Copy link
Member Author

blushi commented Feb 19, 2026

@erikalogie I could reproduce the error when saving a draft it looks like it's also on dev, and even on prod so unrelated to the recent changes here it seems to be some server related race condition when updating the post content while I figure it out and so you can test this feature, you can try to update the privacy settings of the draft post, instead of the content, this should not cause the error but should trigger the warning modal for the other user since the post has changed in some ways

@erikalogie this should be fixed now and you can also test the case where the post has been deleted
please make sure to follow my instructions for testing in #2793 (comment)

onModalClose();
}
} else {
setBannerText(draftPostIri ? _(DRAFT_SAVED) : _(DRAFT_CREATED));
Copy link
Contributor

Choose a reason for hiding this comment

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

When a deleted draft is restored (re-created as a new post), draftPostIri still holds the old IRI, so the banner will say "Draft saved!" instead of "Draft created!". Should this check the actual action taken instead?

Copy link
Member Author

@blushi blushi Feb 23, 2026

Choose a reason for hiding this comment

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

WDYT @erikalogie ?
I think it's fine to say "draft saved" in this case since the current user never really wanted to delete it in the first place

Copy link
Collaborator

Choose a reason for hiding this comment

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

Yes I think this is fine

@erikalogie
Copy link
Collaborator

Ok this looks to be working correctly, but is there anyway to restore the deleted draft on the page without a refresh? See the end of this video https://www.loom.com/share/0b4e02db62e74bd99ef56cd9c5c0b4a5. Or this could be a follow up ticket too if this should be merged.

@S4mmyb
Copy link
Member

S4mmyb commented Feb 24, 2026

Maybe we have that as a seperate ticket @erikalogie , unless it's easy to do. Otherwise I just tested and worked for me :)

@blushi
Copy link
Member Author

blushi commented Mar 3, 2026

Ok this looks to be working correctly, but is there anyway to restore the deleted draft on the page without a refresh? See the end of this video https://www.loom.com/share/0b4e02db62e74bd99ef56cd9c5c0b4a5. Or this could be a follow up ticket too if this should be merged.

I've pushed a fix for this, could you try again @erikalogie?

@blushi
Copy link
Member Author

blushi commented Mar 3, 2026

@erikalogie also any thoughts on #2793 (comment)?

@erikalogie
Copy link
Collaborator

Ok this looks to be working correctly, but is there anyway to restore the deleted draft on the page without a refresh? See the end of this video https://www.loom.com/share/0b4e02db62e74bd99ef56cd9c5c0b4a5. Or this could be a follow up ticket too if this should be merged.

I've pushed a fix for this, could you try again @erikalogie?

Looks great to me!

@blushi blushi requested a review from alexander-astrand March 3, 2026 17:19
@blushi blushi force-pushed the feat-APP-799-post-updated branch from c2cd808 to 2ea4f12 Compare March 9, 2026 10:41
@blushi blushi enabled auto-merge (squash) March 9, 2026 10:41
@blushi blushi merged commit b382b6a into dev Mar 9, 2026
12 of 14 checks passed
@blushi blushi deleted the feat-APP-799-post-updated branch March 9, 2026 10:47
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.

4 participants