Skip to content

refactor: move AppList to features with slot props #28100

Merged
Ryukemeister merged 6 commits intomainfrom
devin/1771577507-decouple-apps-pr3
Mar 12, 2026
Merged

refactor: move AppList to features with slot props #28100
Ryukemeister merged 6 commits intomainfrom
devin/1771577507-decouple-apps-pr3

Conversation

@Ryukemeister
Copy link
Contributor

@Ryukemeister Ryukemeister commented Feb 20, 2026

What does this PR do?

Part 3 of 3 PRs to decouple Apps Components and eliminate circular dependencies between @calcom/atoms, @calcom/web, and @calcom/features. (See PR #28098 for Part 1 and PR #28099 for Part 2.)

This PR breaks the remaining dependency violations:

  1. atoms → web: ConferencingAppsViewPlatformWrapper imported AppList from @calcom/web → now imports from @calcom/features
  2. web → atoms: AppListCard.tsx imported useIsPlatform from @calcom/atoms → deleted; consumers now pass the correct variant directly
  3. features → trpc: AppList imported RouterOutputs from @calcom/trpc → replaced with explicit types (ConnectedApps from app-store, DefaultConferencingApp from prisma/zod-utils)

Changes

  • Moved AppList.tsxpackages/features/apps/components/AppList.tsx with explicit types replacing RouterOutputs and a new AppListCardComponent slot prop
  • Moved AppListCardPlatformWrapper.tsxpackages/platform/atoms/connect/conferencing-apps/ (platform-specific code lives in atoms)
  • Deleted apps/web/modules/apps/components/AppListCard.tsx (the dynamic switcher using useIsPlatform)
  • Updated all consumers to import AppList from features and pass the right AppListCardComponent variant:
    • Web consumers pass AppListCardWebWrapper
    • Atoms consumers pass AppListCardPlatformWrapper

Note: This branch includes changes from PR #28099 (Part 2) which moved AppSetDefaultLinkDialog and inlined QueryCell. Once PR #28099 is merged first, this PR's diff will shrink accordingly.

Updates since last revision

  • Fixed double-nested data type: changed data: { items: ConnectedApps } to data: ConnectedApps since ConnectedApps already has the shape { items: ... }. CI type checks now pass.

Mandatory Tasks (DO NOT REMOVE)

  • I have self-reviewed the code (A decent size PR without self-review might be rejected).
  • I have updated the developer docs in /docs if this PR makes changes that would require a documentation change. — N/A (internal refactor)
  • I confirm automated tests are in place that prove my fix is effective or that my feature works. — N/A (pure refactor; existing tests cover behavior)

How should this be tested?

This is a pure refactor with no intended functional changes. Verify:

  1. Conferencing apps page (web): Navigate to /apps/installed/conferencing — the installed apps list should render identically to before
  2. Conferencing apps page (atoms/platform): The platform wrapper should render the same apps list with platform-specific logo URLs
  3. Calendar settings: Navigate to settings → calendars — the connected calendar list should render with AppListCardWebWrapper
  4. Set default link dialog: Setting a default conferencing app link should still work from the AppList dropdown
  5. Type checks: yarn type-check:ci --force — passes ✅

Environment variables: None required
Test data: Any user with installed conferencing apps (Zoom, Google Meet, Office 365 Video)

Human Review Checklist

  • Type compatibility (CRITICAL): Verify ConnectedApps from @calcom/app-store/_utils/getConnectedApps exactly matches the shape of RouterOutputs["viewer"]["apps"]["integrations"]. The tRPC router might add/transform fields that aren't in the raw return type.
  • Type compatibility: Verify DefaultConferencingApp from @calcom/prisma/zod-utils exactly matches RouterOutputs["viewer"]["apps"]["getUsersDefaultConferencingApp"]
  • Circular dependency check: Confirm no new circular dependencies introduced (features should not import from trpc/web/atoms)
  • Slot prop usage: Verify AppListCardComponent prop is passed in all consumers of AppList
  • Merge ordering: PR refactor: move useAppsData to features  #28098 (Part 1) and PR refactor: move AppSetDefaultLinkDialog to features  #28099 (Part 2) should be merged first to avoid conflicts

Link to Devin run: https://app.devin.ai/sessions/3381ce426a1748ba909e440d155433a1
Requested by: @Ryukemeister

devin-ai-integration bot and others added 2 commits February 20, 2026 08:49
… + fix broken type import

Co-Authored-By: rajiv@cal.com <sahalrajiv6900@gmail.com>
…rd switcher

Co-Authored-By: rajiv@cal.com <sahalrajiv6900@gmail.com>
@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 10 files

Co-Authored-By: rajiv@cal.com <sahalrajiv6900@gmail.com>
@github-actions
Copy link
Contributor

This PR has been marked as stale due to inactivity. If you're still working on it or need any help, please let us know or update the PR to keep it active.

@github-actions github-actions bot added Stale and removed Stale labels Feb 28, 2026
@Ryukemeister Ryukemeister marked this pull request as ready for review March 9, 2026 18:47
@Ryukemeister Ryukemeister requested review from a team as code owners March 9, 2026 18:47
@graphite-app graphite-app bot added the consumer label Mar 9, 2026
@Ryukemeister Ryukemeister changed the title refactor: move AppList to features with slot props + delete AppListCard switcher refactor: move AppList to features with slot props Mar 9, 2026
@graphite-app graphite-app bot added the core area: core, team members only label Mar 9, 2026
@Ryukemeister Ryukemeister changed the title refactor: move AppList to features with slot props refactor: move AppList to features with slot props Mar 9, 2026
eunjae-lee
eunjae-lee previously approved these changes Mar 11, 2026
@github-actions
Copy link
Contributor

Devin AI is resolving merge conflicts

This PR has merge conflicts with the main branch. A Devin session has been created to automatically resolve them.

View Devin Session

Devin will:

  1. Merge the latest main into this branch
  2. Resolve any conflicts intelligently
  3. Run lint/type checks to ensure validity
  4. Push the resolved changes

If you prefer to resolve conflicts manually, you can close the Devin session and handle it yourself.

Co-Authored-By: bot_apk <apk@cognition.ai>
@github-actions
Copy link
Contributor

E2E results are ready!

@Ryukemeister Ryukemeister enabled auto-merge (squash) March 12, 2026 09:56
@Ryukemeister Ryukemeister merged commit e5fd455 into main Mar 12, 2026
73 of 76 checks passed
@Ryukemeister Ryukemeister deleted the devin/1771577507-decouple-apps-pr3 branch March 12, 2026 10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

consumer core area: core, team members only ready-for-e2e size/L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants