On this page
Overview
Binds shared inbox, conversation, settings, theme, and provider workflows into one UI controller.
- Artifact
CommunicationAppController.js· esm - Classification
public first party - Availability
Browser / native WebView hybrid - Normalization
Controller state normalized; provider/DOM failures mixed.
Import and lifecycle
import * as module from '/arcane/modules/CommunicationAppController.js';
Binds fixed DOM components and listeners, loads theme and preferences, creates providers, refreshes and sends, mutates modal and status UI, and may open an external URL.
Application-facing behavior: default controller with start(), bind(), configure(), refresh(), select(), send(), and settings actions.
Protocol and host implementation
DOM plus communication providers This detail does not widen the application-facing API or grant authority.
Exports, signatures, parameters, and results
| Binding | Form | Declaration or signature | Parameter syntax |
|---|---|---|---|
COMMUNICATION_APP_CONTROLLER_ERROR_CODES | variable · value | variable COMMUNICATION_APP_CONTROLLER_ERROR_CODES | — |
default | default · class | class CommunicationAppController | — |
| Callable | Kind | Exact public signature | Parameter syntax |
|---|---|---|---|
CommunicationAppController.start | public-member | async start() | — |
CommunicationAppController.bind | public-member | bind() | — |
CommunicationAppController.configure | public-member | configure() | — |
CommunicationAppController.refresh | public-member | async refresh() | — |
CommunicationAppController.select | public-member | async select(thread) | thread |
CommunicationAppController.send | public-member | async send({thread,body}) | {thread,body} |
| Member | Kind | Exact public declaration | Parameter syntax |
|---|---|---|---|
CommunicationAppController.constructor | constructor | constructor({
appId,
services,
channels,
labels={},
inspectMessage=null,
prepareMessageInspection=null,
onAdvisoryAction=null
}) | {
appId,
services,
channels,
labels={},
inspectMessage=null,
prepareMessageInspection=null,
onAdvisoryAction=null
} |
CommunicationAppController.assertActive | method | assertActive() | — |
CommunicationAppController.start | async method | async start() | — |
CommunicationAppController.bind | method | bind() | — |
CommunicationAppController.handleOpenSettings | method | handleOpenSettings() | — |
CommunicationAppController.handleCloseSettings | method | handleCloseSettings() | — |
CommunicationAppController.handleSaveSettings | method | handleSaveSettings(event) | event |
CommunicationAppController.handleIntegrationAction | method | handleIntegrationAction(event) | event |
CommunicationAppController.handleInboxRefresh | method | handleInboxRefresh() | — |
CommunicationAppController.handleThreadSelect | method | handleThreadSelect(event) | event |
CommunicationAppController.handleCommunicationSend | method | handleCommunicationSend(event) | event |
CommunicationAppController.handleAdvisoryAction | method | handleAdvisoryAction(event) | event |
CommunicationAppController.handleSettingsBackdropClick | method | handleSettingsBackdropClick(event) | event |
CommunicationAppController.handleDocumentKeyDown | method | handleDocumentKeyDown(event) | event |
CommunicationAppController.handlePageHide | method | handlePageHide() | — |
CommunicationAppController.configure | method | configure() | — |
CommunicationAppController.rebuildHub | method | rebuildHub() | — |
CommunicationAppController.disposeHub | method | disposeHub() | — |
CommunicationAppController.disposeHubInstance | method | disposeHubInstance(hub) | hub |
CommunicationAppController.setStatus | method | setStatus(message,tone='muted') | message,tone='muted' |
CommunicationAppController.refresh | async method | async refresh() | — |
CommunicationAppController.select | async method | async select(thread) | thread |
CommunicationAppController.send | async method | async send({thread,body}) | {thread,body} |
CommunicationAppController.openSettings | method | openSettings() | — |
CommunicationAppController.closeSettings | method | closeSettings() | — |
CommunicationAppController.saveSettings | async method | async saveSettings(values) | values |
CommunicationAppController.action | method | action(service) | service |
CommunicationAppController.destroy | method | destroy() | — |
Parameter meanings and results
CommunicationAppController(options) exposes start, bind, configure, rebuildHub, setStatus, refresh, select, send, and settings actions. Workflow methods update UI and generally contain provider errors as status text.
Events, side effects, and errors
Source-literal CustomEvent dispatches
No source-literal CustomEvent dispatch is part of this artifact.
Lifecycle and event flow
- consumes unified-inbox-ready
- consumes conversation-view-ready
- consumes integration-settings-ready
- consumes integration-settings-close
- consumes integration-settings-save
- consumes integration-action
- consumes inbox-refresh
- consumes thread-select
- consumes communication-send
- consumes communication-advisory-action
Direct coded failures
This artifact directly assigns no stable coded failure.
Exported Error subclasses
This artifact exports no Error subclass.
Documented failure behavior
- constructor and DOM contract failures can throw
- most asynchronous workflow and provider failures are rendered rather than rethrown
Availability and capabilities
Browser / native WebView hybrid. Controller state normalized; provider/DOM failures mixed.
High-level browser UI orchestration over normalized communication providers; Core is involved only through configured host preferences or providers.
Contract example
import CommunicationAppController from '/arcane/modules/CommunicationAppController.js';
const status=document.body.appendChild(
Object.assign(document.createElement('p'),{id:'appStatus'})
);
const controller=new CommunicationAppController({
appId:'communications',
services:[],
channels:[]
});
controller.setStatus('Ready','success');
console.log(status.dataset.tone);