feat: improve calendar integration and meeting UI

- Refactor ICS sync tasks to use @asynctask decorator for cleaner async handling
- Extract meeting creation logic into reusable function
- Improve meeting selection UI with distinct current/upcoming sections
- Add early join functionality for upcoming meetings within 5-minute window
- Simplify non-ICS room workflow with direct Whereby embed
- Fix import paths and component organization

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-09 18:58:56 -06:00
parent 59a958dc6b
commit 78a30b37c8
6 changed files with 272 additions and 248 deletions

View File

@@ -7,12 +7,14 @@ import { toaster } from "../components/ui/toaster";
interface WherebyEmbedProps {
roomUrl: string;
onLeave?: () => void;
isWebinar?: boolean;
}
// currently used for webinars only
// used for both webinars and meetings
export default function WherebyWebinarEmbed({
roomUrl,
onLeave,
isWebinar = false,
}: WherebyEmbedProps) {
const wherebyRef = useRef<HTMLElement>(null);
@@ -26,7 +28,8 @@ export default function WherebyWebinarEmbed({
<Box p={4} bg="white" borderRadius="md" boxShadow="md">
<HStack justifyContent="space-between" alignItems="center">
<Text>
This webinar is being recorded. By continuing, you agree to our{" "}
This {isWebinar ? "webinar" : "meeting"} is being recorded. By
continuing, you agree to our{" "}
<Link
href="https://monadical.com/privacy"
color="blue.600"