mirror of
https://github.com/chatwoot/chatwoot.git
synced 2026-06-19 21:07:35 +08:00
Chatwoot now lets external apps know when an inbox loses its connection and needs re-authentication. When a channel's authorization expires (for example, an email inbox disconnects), Chatwoot fires an `inbox_updated` webhook reflecting the new `reauthorization_required` status, and fires it again once the inbox is re-authenticated. Integrators can keep their own view of which inboxes are healthy without polling the API. This is gated behind the `ENABLE_INBOX_EVENTS` installation flag — the **Inbox updated** webhook subscription only appears in the dashboard when that flag is enabled, so no event is offered that the backend wouldn't dispatch. Fixes https://linear.app/chatwoot/issue/CW-7148/emit-inbox-webhook-when-an-inbox-is-disconnected ## How to test 1. Set `ENABLE_INBOX_EVENTS=true` and restart the app. 2. In **Settings → Integrations → Webhooks**, add a webhook and subscribe to **Inbox updated**. 3. Disconnect an inbox — let an email/Instagram channel hit its auth-error threshold, or run `inbox.channel.prompt_reauthorization!` in a console. 4. The endpoint receives an `inbox_updated` event whose `changed_attributes` shows `reauthorization_required` flipping to `true`. 5. Re-authenticate the inbox (or run `inbox.channel.reauthorized!`) — the endpoint receives the `true → false` transition. 6. Confirm the **Inbox updated** option is hidden when `ENABLE_INBOX_EVENTS` is unset. --------- Co-authored-by: Muhsin <[email protected]>
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
/**
|
|
* A function that provides access to various configuration values.
|
|
* @returns {Object} An object containing configuration values.
|
|
*/
|
|
export function useConfig() {
|
|
const config = window.chatwootConfig || {};
|
|
|
|
/**
|
|
* The host URL of the Chatwoot instance.
|
|
* @type {string|undefined}
|
|
*/
|
|
const hostURL = config.hostURL;
|
|
|
|
/**
|
|
* The VAPID public key for web push notifications.
|
|
* @type {string|undefined}
|
|
*/
|
|
const vapidPublicKey = config.vapidPublicKey;
|
|
|
|
/**
|
|
* An array of enabled languages in the Chatwoot instance.
|
|
* @type {string[]|undefined}
|
|
*/
|
|
const enabledLanguages = config.enabledLanguages;
|
|
|
|
/**
|
|
* Indicates whether the current instance is an enterprise version.
|
|
* @type {boolean}
|
|
*/
|
|
const isEnterprise = config.isEnterprise === 'true';
|
|
|
|
/**
|
|
* The name of the enterprise plan, if applicable.
|
|
* Returns "community" or "enterprise"
|
|
* @type {string|undefined}
|
|
*/
|
|
const enterprisePlanName = config.enterprisePlanName;
|
|
|
|
/**
|
|
* Indicates whether inbox webhook events (ENABLE_INBOX_EVENTS) are enabled.
|
|
* @type {boolean}
|
|
*/
|
|
const inboxEventsEnabled = config.inboxEventsEnabled === 'true';
|
|
|
|
return {
|
|
hostURL,
|
|
vapidPublicKey,
|
|
enabledLanguages,
|
|
isEnterprise,
|
|
enterprisePlanName,
|
|
inboxEventsEnabled,
|
|
};
|
|
}
|