Add Videokonferenz room experience - #61
joan-code6 wants to merge 1 commit into
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 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. Comment |
LanisProject ID: Tip Storage files get ClamAV malware scanning and encryption by default |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 26f4421246
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } catch (loadError) { | ||
| if (!controller.signal.aborted && !axios.isCancel(loadError)) { | ||
| setError(loadError instanceof Error ? loadError.message : 'Videoräume konnten nicht geladen werden.'); | ||
| } |
There was a problem hiding this comment.
Disable join actions after a refresh failure
When an automatic or manual refresh fails after a successful load, this catch only records the error while retaining the previous overview, including every room's old can_join value and short-lived join_url. During a backend or network outage, the cards therefore continue offering links for rooms that may have closed or whose URLs have expired; invalidate joinability while the status is stale, while optionally retaining the room metadata.
Useful? React with 👍 / 👎.
| if (module.url.toLowerCase().includes('/videokonferenz.php') || | ||
| module.name.toLowerCase().includes('videokonferenz')) { |
There was a problem hiding this comment.
Detect video modules through direct_url on dashboard clicks
When a module has a generic url and exposes /videokonferenz.php only through direct_url, the new availability and global-search logic recognize it, but this click handler does not. Clicking that dashboard tile consequently falls through and opens the external destination rather than the new in-app room page; use the combined url/direct_url matching already used by getModuleAvailability.
Useful? React with 👍 / 👎.
| if (u === '/videokonferenz' && method === 'get') { | ||
| return { status: 200, data: { success: true, available: true, source: 'schulportal', status_live: true, rooms: mockVideoRooms, count: mockVideoRooms.length, open_count: 1, updated_label: 'vor wenigen Sekunden' } }; |
There was a problem hiding this comment.
Expose the video room mock through the demo module list
Although the demo now has a route and this mock response, /modules still returns demoModules, which contains no Videokonferenz entry. As a result, module availability remains false and neither the demo sidebar, dashboard, nor global search links to this page, so ordinary demo users cannot reach the new mocked experience without manually entering /demo/videokonferenz; add the corresponding entry to the demo module data.
Useful? React with 👍 / 👎.

Summary
Validation
Paired PR
Rollout
Requires the paired backend PR to be deployed first.