Skip to content

feat: add share menu item#6357

Merged
thomastayler merged 81 commits into
mainfrom
tommytayler/col-159-add-share-menu-item
May 19, 2025
Merged

feat: add share menu item#6357
thomastayler merged 81 commits into
mainfrom
tommytayler/col-159-add-share-menu-item

Conversation

@thomastayler
Copy link
Copy Markdown
Contributor

@thomastayler thomastayler commented Apr 23, 2025

Summary by CodeRabbit

  • New Features

    • Added lazy loading of journey data for sharing to improve performance.
    • Integrated share menu into journey card menus with enhanced UI including dividers and share options.
    • Share dialog now shows a loading spinner during data fetch and disables share actions if journey data is absent.
    • Embedded journey previews updated to use styled iframes for better representation and styling.
    • Share dialog supports dynamic fetching of custom domains based on journey team.
  • Bug Fixes

    • Improved handling of null or missing journey data across share, embed, slug, and QR code dialogs.
    • Menu components now remain mounted when closed to enhance stability.
  • Refactor

    • Share, embed, slug, and QR code dialogs refactored to accept journey data via props instead of internal hooks.
    • Centralized and decoupled journey data fetching from context for greater flexibility.
    • Styling adjustments to menu icons and toolbar items for consistent theming.
  • Tests

    • Enhanced mocks and added context providers to tests for accurate environment simulation.
    • Updated button interactions in tests to use accessible roles for improved reliability and accessibility.
    • Wrapped clipboard and dialog tests with async waits to ensure proper UI update handling.

edmonday and others added 18 commits March 11, 2025 20:25
…nguage update mutation

- Replaced `useJourneyUpdateMutation` with `useTitleDescLanguageUpdateMutation` in JourneyDetailsDialog component.
- Updated test cases to reflect the change in mutation and ensure correct handling of journey title and description updates.
- Adjusted optimistic response structure to align with new mutation requirements.
…add setOpenDetailsDialog prop

- Changed the menu item label from 'Edit' to 'Edit Details' in the DefaultMenu component.
- Added setOpenDetailsDialog prop to relevant components in the DefaultMenu.
- Updated tests to reflect the new menu item label and ensure proper functionality.
- Changed the test name from 'Edit existing journey' to 'Edit existing journey from custom journey page' to improve clarity and context in the e2e testing suite.
- Updated GetJourney, JourneyFields, GetAdminJourney, GetAdminJourneys, and related files to include customDomains field in journey and team interfaces.
- Enhanced ShareItem and SlugDialog components to utilize journeySlug and customDomains for improved functionality.
- Adjusted related queries to fetch customDomains data for better integration across the application.
@thomastayler thomastayler self-assigned this Apr 23, 2025
@linear
Copy link
Copy Markdown

linear Bot commented Apr 23, 2025

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 23, 2025

## Walkthrough

This update refactors sharing-related components to decouple them from context, passing journey and team data explicitly via props. It introduces a lazy GraphQL query hook for fetching journey data for sharing, updates menu structures to add a "Share" option, and revises tests to align with the new prop-driven architecture and improved accessibility queries.

## Changes

| File(s) | Change Summary |
|---------|----------------|
| `apps/journeys-admin/src/components/Editor/Toolbar/Items/ShareItem/ShareItem.tsx`, `.../EmbedJourneyDialog/EmbedJourneyDialog.tsx`, `.../EmbedJourneyDialog/EmbedCardPreview/EmbedCardPreview.tsx`, `.../QrCodeDialog/QrCodeDialog.tsx`, `.../SlugDialog/SlugDialog.tsx` | Refactored components to accept `journey` (and where needed, `teamId`) as props instead of using context; updated internal logic to use these props and modified prop interfaces accordingly. |
| `apps/journeys-admin/src/components/Editor/Toolbar/Items/Items.tsx`, `.../Menu/Menu.tsx` | Updated to pass the current journey as a prop to `ShareItem` and renamed the menu close handler prop. |
| `apps/journeys-admin/src/components/JourneyList/JourneyCard/JourneyCardMenu/DefaultMenu/DefaultMenu.tsx`, `.../JourneyCardMenu.tsx` | Modified to support and pass journey data for sharing; added a "Share" menu item; updated prop interfaces and menu structure. |
| `apps/journeys-admin/src/libs/useJourneyForShareLazyQuery/useJourneyForShareLazyQuery.ts`, `.../index.ts` | Added a new lazy GraphQL query hook for fetching journey data for sharing and re-exported it. |
| `apps/journeys-admin/src/components/Editor/Toolbar/Items/Item/Item.tsx` | Adjusted styling: removed `gap: 2` from `MenuItem` and applied color styling to `ListItemIcon`. |
| `apps/journeys-admin/src/components/Editor/Toolbar/Items/ShareItem/ShareItem.spec.tsx`, `.../SlugDialog/SlugDialog.spec.tsx`, `.../QrCodeDialog/QrCodeDialog.spec.tsx`, `.../DefaultMenu/DefaultMenu.spec.tsx` | Updated tests to explicitly pass new props, use improved mocks, add context providers, and synchronize with asynchronous UI updates. |
| `apps/journeys-admin/src/components/JourneyList/ActiveJourneyList/ActiveJourneyList.spec.tsx`, `.../ArchivedJourneyList/ArchivedJourneyList.spec.tsx`, `.../TrashedJourneyList/TrashedJourneyList.spec.tsx`, `.../TemplateList/ActiveTemplateList/ActiveTemplateList.spec.tsx`, `.../ArchivedTemplateList/ArchivedTemplateList.spec.tsx` | Refactored tests to use `getByRole` for button selection, improving accessibility and reliability. |
| `apps/journeys-admin/src/components/TemplateList/TemplateListItem/TemplateListItem.spec.tsx` | Wrapped tests in additional context providers and added user role mocks for more accurate test environments. |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant User
    participant Menu
    participant ShareItem
    participant useJourneyForSharingLazyQuery
    participant Dialogs

    User->>Menu: Opens journey card menu
    Menu->>ShareItem: Renders ShareItem with journey prop
    ShareItem->>useJourneyForSharingLazyQuery: (If needed) Fetch journey data for sharing
    ShareItem->>Dialogs: Opens share/slug/embed/QR dialogs with journey prop
    Dialogs->>ShareItem: User interacts (copy, edit, etc.)

Possibly related PRs

  • fix: remove stack of gray cards #6329: Modifies EmbedCardPreview component by removing decorative Box components but retains block rendering, related to this PR's refactor of EmbedCardPreview to use iframe embedding.

Suggested reviewers

  • levi-zustiak

<!-- walkthrough_end -->
<!-- This is an auto-generated comment: all tool run failures by coderabbit.ai -->

> [!WARNING]
> There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.
> 
> <details>
> <summary>🔧 ESLint</summary>
> 
> > If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.
> 
> npm warn config production Use `--omit=dev` instead.
> npm warn EBADENGINE Unsupported engine {
> npm warn EBADENGINE   package: 'i18next-parser@9.3.0',
> npm warn EBADENGINE   required: { node: '^18.0.0 || ^20.0.0 || ^22.0.0', npm: '>=6', yarn: '>=1' },
> npm warn EBADENGINE   current: { node: 'v24.0.2', npm: '11.3.0' }
> npm warn EBADENGINE }
> npm warn EBADENGINE Unsupported engine {
> npm warn EBADENGINE   package: 'next-firebase-auth-edge@1.9.1',
> npm warn EBADENGINE   required: {
> npm warn EBADENGINE     node: '>=16.0.0 <24.0.0',
> npm warn EBADENGINE     npm: '>=8.0.0 <12.0.0',
> npm warn EBADENGINE     yarn: '>=1.22.0 <2.0.0'
> npm warn EBADENGINE   },
> npm warn EBADENGINE   current: { node: 'v24.0.2', npm: '11.3.0' }
> npm warn EBADENGINE }
> npm error Exit handler never called!
> npm error This is an error with npm itself. Please report this error at:
> npm error   <https://github.com/npm/cli/issues>
> npm error A complete log of this run can be found in: /.npm/_logs/2025-05-19T03_15_45_760Z-debug-0.log
> 
> 
> 
> </details>

<!-- end of auto-generated comment: all tool run failures by coderabbit.ai -->

<!-- announcements_start -->

> [!NOTE]
> <details>
> <summary>⚡️ AI Code Reviews for VS Code, Cursor, Windsurf</summary>
> 
> CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
> Learn more [here](http://coderabbit.ai/ide).
> 
> </details>

---

> [!NOTE]
> <details>
> <summary>⚡️ Faster reviews with caching</summary>
> 
> CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure `Review - Disable Cache` at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the `Data Retention` setting under your Organization Settings.
> Enjoy the performance boost—your workflow just got faster.
> 
> </details>

<!-- announcements_end -->

---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 885de34c6b58162559a178fe9b46111d22516618 and 0a48d74434486fc9551fceb8fc33ba92237d6652.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `apps/journeys-admin/src/components/TemplateList/ActiveTemplateList/ActiveTemplateList.spec.tsx` (7 hunks)
* `apps/journeys-admin/src/components/TemplateList/ArchivedTemplateList/ArchivedTemplateList.spec.tsx` (3 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (1)</summary>

* apps/journeys-admin/src/components/TemplateList/ArchivedTemplateList/ArchivedTemplateList.spec.tsx

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* apps/journeys-admin/src/components/TemplateList/ActiveTemplateList/ActiveTemplateList.spec.tsx

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (2)</summary>

* GitHub Check: Deploy Preview and Test (journeys-admin, 6357/merge, pull_request, 22)
* GitHub Check: visual-test (22)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details open="true">
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings
<details open="true">
<summary>🧪 Generate Unit Tests</summary>

- [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Create PR with Unit Tests
- [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Commit Unit Tests in branch `tommytayler/col-159-add-share-menu-item`
- [ ] <!-- {"checkboxId": "07f1e7d6-8a8e-4e23-9900-8731c2c87f58", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Post Copyable Unit Tests in Comment

</details>

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=JesusFilm/core&utm_content=6357):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- 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 explain this code block.`
  -	`@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 gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

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 using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai generate unit tests` to generate unit tests for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- 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/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

@github-actions github-actions Bot temporarily deployed to Preview - watch April 23, 2025 04:26 Inactive
@github-actions github-actions Bot temporarily deployed to Preview - journeys April 23, 2025 04:26 Inactive
@github-actions github-actions Bot temporarily deployed to Preview - journeys-admin April 23, 2025 04:26 Inactive
@github-actions github-actions Bot temporarily deployed to Preview - videos-admin April 23, 2025 04:26 Inactive
@thomastayler thomastayler changed the title Add share menu item feat: Add share menu item Apr 23, 2025
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 23, 2025

The latest updates on your projects.

Name Status Preview Updated (UTC)
journeys ✅ Ready journeys preview Thu May 1 16:24:06 NZST 2025

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 23, 2025

The latest updates on your projects.

Name Status Preview Updated (UTC)
watch ✅ Ready watch preview Thu May 1 16:25:00 NZST 2025

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 23, 2025

The latest updates on your projects.

Name Status Preview Updated (UTC)
videos-admin ✅ Ready videos-admin preview Thu May 1 16:24:17 NZST 2025

Kneesal
Kneesal previously approved these changes May 14, 2025
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
apps/journeys-admin-e2e/src/pages/journey-page.ts (1)

1274-1274: Added timeout improves test reliability

The added timeout of 10 seconds provides adequate wait time for the URL field value to update, improving test stability. This is especially important since the PR refactors sharing functionality to use lazy loading with the new useJourneyForSharingLazyQuery hook.

For consistency with other timeouts in this file, consider using a named constant instead of the inline value:

-    ).toHaveValue(new RegExp(expectedValue), { timeout: 10000 })
+    ).toHaveValue(new RegExp(expectedValue), { timeout: tenSecondsTimeout })

With a constant defined at the top of the file:

const tenSecondsTimeout = 10000
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fbc170 and 0e7a558.

📒 Files selected for processing (1)
  • apps/journeys-admin-e2e/src/pages/journey-page.ts (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Deploy Preview and Test (journeys-admin, 6357/merge, pull_request, 22)
  • GitHub Check: Analyze (javascript)

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0e7a558 and f047c88.

📒 Files selected for processing (1)
  • apps/journeys-admin-e2e/src/e2e/discover/teams.spec.ts (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: Deploy Preview and Test (journeys-admin, 6357/merge, pull_request, 22)
  • GitHub Check: Analyze (javascript)

Comment thread apps/journeys-admin-e2e/src/e2e/discover/teams.spec.ts Outdated
@jesus-film-bot
Copy link
Copy Markdown

Plan Error

the default workspace at path . is currently locked by another command that is running for this pull request.
Wait until the previous command is complete and try again

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.

5 participants