Draft
Conversation
Port OOO feature from cal.com PR #27642 to companion app. New files: - OOO route layout and screens (index, index.ios, create-entry) - OOO components (CreateOutOfOfficeModal, OutOfOfficeListItem, OutOfOfficeListSkeleton) - OutOfOfficeScreen for web - useOutOfOffice hooks (CRUD operations with React Query) - OOO service layer for API calls - OOO type definitions Modified files: - More menu: added OOO entry with airplane icon - Profile sheet: changed OOO from external link to native navigation - Tab layout: added hidden (ooo) tab screen - Barrel exports: hooks, services, types Co-Authored-By: peer@cal.com <peer@cal.com>
Contributor
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat: add native Out of Office (OOO) feature
Summary
Ports the Out of Office feature from cal.com PR #27642 to the companion app. Replaces the existing external browser link for OOO with a fully native experience including list view, create/edit form, and delete confirmation.
New files (11):
app/(tabs)/(ooo)/— Stack-based route group with index (list), index.ios (native list with search), and create-entry (form) screenscomponents/out-of-office/—OutOfOfficeListItem,OutOfOfficeListSkeleton,CreateOutOfOfficeModalcomponents/screens/OutOfOfficeScreen— Web list screenhooks/useOutOfOffice.ts— React Query hooks for CRUDservices/calcom/ooo.ts— API service layer targeting/me/out-of-officeservices/types/ooo.types.ts— Type definitionsModified files (8):
(ooo)tab screenReview & Testing Checklist for Human
/me/out-of-office(v2 user-level). Verify these endpoints exist and return the expected shape defined inooo.types.ts. The GET endpoint has a silent 404 fallback, but create/update/delete will throw if missing.router.back()thenrouter.push(): In bothprofile-sheet.ios.tsxandprofile-sheet.tsx, the OOO action callsrouter.back()followed byrouter.push("/(tabs)/(ooo)"). Verify this doesn't cause race conditions or flicker on device.create-entry.tsximports@react-native-community/datetimepickerand usesDropdownMenucomponents. Confirm these packages are installed and the component APIs match what's used here.makeRequestthird argument:ooo.tspasses"2024-08-13"as a 3rd arg tomakeRequestfor POST/PATCH/DELETE but not GET. Verify this matches the function signature and is intentional.bun run typecheckwas not run during this session (biome lint passed). Run it locally to catch any type mismatches with existing components likeEmptyScreen,AlertDialog,AppPressable, etc.Suggested test plan: Install on iOS simulator/device → navigate to More → tap "Out of Office" → verify list loads (may be empty if API isn't ready) → tap "New" → fill form → save → verify entry appears → edit → delete → also test OOO entry point from profile sheet.
Notes
console.warningetOutOfOfficeEntriesfor 404s is intentional — the user-level v2 endpoints may not be deployed yet.Link to Devin run: https://app.devin.ai/sessions/081470421bee4e56abaff130a69dca72
Requested by: @PeerRich