RealTimeX
Sign inStart for free
RealTimeXWeb Package
IntroductionPrerequisitesInstallationProject setupQuick start
Package structureConfigurationComponentsHooksAPI integrationSocket events
OverviewReplace entire UIReplace componentsStyle with classNamesThemes & localePhone & video callingIn-call control barFeatures
Unread badgeRich-text messagesPins, stars & datesMessage threadsMentionsCanvas & draftsNotificationsAdmin permissionsServer refusalsSession & token refresh
Host app integrationTroubleshootingFAQVersion historyBest practicesSupport & contact
Web packageBuilt-in features

Admin permissions

The workspace admin's settings are applied to the default UI automatically - denied features stay visible but disabled.

Overview

After login the package loads GET /settings/effective- the workspace admin's settings - and applies them to the default UI. A denied feature stays visible but disabled, with a tooltip such as “This feature is disabled by your administrator.”

What each setting controls

SettingControls
audioCallEnabled / videoCallEnabledPhone / video buttons (after calls.allowedByPlatform → calls.configured → calls.enabled)
callRecordingEnabledRecord button
callTranscriptionEnabledTranscript UI
whiteboardEnabledIn-call whiteboard
pushNotificationEnabledPush toggle
blockUsersEnabledBlock user
groupCreationEnabled“New group” tab
threadsEnabled / draftsEnabled / canvasEnabledThreads / drafts / canvas
attachments.*Attach on/off, max size, allowed types, max files per message
groupPolicy.defaults / lockedGroup permission drawer
messageTimers.*Edit / delete time windows
maxAdminsPerGroup, maxParticipantsPerGroup, maxPinnedMessagesPerConversation, maxRepliesPerThread, maxDraftLength, maxDraftsPerUserCaps
maxPinnedMessagesPerConversation = 0Pin is hidden (Unpin stays); at the cap, Pin says “You can pin up to N messages in this conversation.”
maxGroupsPerUser + ownedGroupCount“Create group” disabled with “You can own at most N groups” once the user owns that many; re-read after each create
maxMessagesPerMinuteNot shown up front - the server refuses the extra message and the composer shows a countdown

Gating your own components

Default components need no work. If you replace a slot, apply the same gate:

tsx
1import { useAdminFeatureGate, AdminPermissionTooltip } from "@realtimexsco/live-chat";2 3function MyVideoCallButton({ onVideoCall, className }) {4  const gate = useAdminFeatureGate("videoCall");5  return (6    <AdminPermissionTooltip disabled={!gate.enabled} message={gate.disabledReason}>7      <button type="button" className={className} disabled={!gate.enabled} onClick={onVideoCall}>8        Video9      </button>10    </AdminPermissionTooltip>11  );12}

Gate keys: audioCall, videoCall, pushNotification, blockUsers, attachments, groupCreation, threads, drafts, canvas. For recording and whiteboard use useEffectiveSettingsOptional().getCallRecordingGate() / getWhiteboardGate(). Call useEffectiveSettingsOptional().refresh() to re-load after an admin change.

Also exported: fetchEffectiveSettings, DEFAULT_EFFECTIVE_SETTINGS and the EffectiveSettings type.

PreviousNotificationsNextServer refusals

On this page

OverviewWhat each setting controlsGating your own components
Back to top