Skip to content

Upgrade mantine and catch fullscreen error#2092

Open
alex-Arc wants to merge 7 commits into
masterfrom
upgrade-mantine
Open

Upgrade mantine and catch fullscreen error#2092
alex-Arc wants to merge 7 commits into
masterfrom
upgrade-mantine

Conversation

@alex-Arc
Copy link
Copy Markdown
Collaborator

No description provided.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 27, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 14c9a607-7862-4f8a-b773-fd3f21c71d54

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upgrade-mantine

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

alex-Arc and others added 7 commits May 28, 2026 09:41
The toggle function from Mantine's useFullscreen hook is async and can
reject when requestFullscreen() fails (eg. due to browser security
policy, extensions blocking fullscreen, or similar restrictions).

Using it directly as onClick={toggle} left the rejected Promise
unhandled, causing a browser 'Uncaught (in promise) DOMException' error.

The fix wraps the toggle call in a try/catch inside a dedicated
handleToggleFullscreen callback. The navigation menu is also closed
before the fullscreen request is made, which avoids any potential
focus-management interference from the open dialog and gives better UX.

https://claude.ai/code/session_01HQ9UzKrKDR3h9JuSUYzr4b
Mantine's useFullscreen was only used in one place, and its toggle()
returns an async Promise that leaks into callers.

The new useFullscreen hook in common/hooks:
- Exposes isSupported so the call site has a single source of truth
  (removes the separate supportsFullscreen constant from externals.ts)
- toggle() is a plain void callback — errors from requestFullscreen /
  exitFullscreen are caught internally, so it is always safe to use
  directly as an onClick handler without any wrapping
- toggle() is a no-op when isSupported is false
- Targets document.documentElement only (the ref-based API from Mantine
  was never used in this project)
- No vendor-prefix shims — all supported browsers implement the
  standard Fullscreen API

https://claude.ai/code/session_01HQ9UzKrKDR3h9JuSUYzr4b
@@ -0,0 +1,21 @@
import { useFullscreenDocument } from '@mantine/hooks';
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

this is a basic operation which I dont think warrants too many abstraction layers. I think we are better off making our own

https://github.com/cpvalente/ontime/pull/2091/changes#diff-9c58da23a3df9c1af0e33fb5292c52991d3ccea2034ecb4e95a9e7cb9e3eabe6

data-disabled={disable}
onKeyDown={(event) => {
if (isKeyEnter(event)) {
if (!!disable && isKeyEnter(event)) {
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

this seems incorrect or at least confusing.

!! is usually used as a boolean casting operator, which we often prefer to use the boolean constructor instead to make the code explicit
but here I think you are trying to negate the boolean like !disable && isKeyEnter?
ie: if the element is not disabled, and user pressed enter, we do the thing

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.

3 participants