mix mob.adopt.bridge (mob_dev v0.6.14)

Copy Markdown View Source

Patches assets/js/app.js and lib/<web>/components/layouts/root.html.heex to wire window.mob through a LiveView phx-hook. Output matches mix mob.new --liveview.

Mob's native shell injects window.mob into every WebView for direct JS↔native interop (camera, audio, sensors). The LV bridge patches here replace that injection on mount with a LiveView-routed shim, so window.mob.send goes through pushEvent/handle_event instead of straight to native code. Useful when you want server-side BEAM visibility into JS messages. Skip this if your project isn't using LiveView (e.g. Hologram, vanilla controllers) — the native injection alone is what you want.

Options

  • --no-live-view — skip the patches entirely with a notice. For Hologram-only or non-Phoenix hosts.

Other orchestrator flags (--no-ios, --no-android, --local, --python, --host-url) are accepted but inert here — declared in the schema only so mix mob.adopt can forward its full argv without Igniter rejecting unknown options.

Refusal (LV mode)

Refuses (via Igniter.add_issue/2) when assets/js/app.js is missing or doesn't contain a new LiveSocket(...) call, or when the root.html.heex layout is missing or has no <body> tag. The pre-1.0 contract is "blessed shape only" — --no-live-view is the escape hatch for everything else.

Idempotency

Both MobDev.Adopt.Patcher.inject_mob_hook/1 and inject_mob_bridge_element/1 short-circuit when their markers (MobHook / mob-bridge) are already present.

Typically called by mix mob.adopt, not directly.