Skip to content

Global State

ClassroomState provides reactive Signal properties (suffixed with $). Subscribe via classroom.state.xxx$.subscribe().

Usage

typescript
classroom.state.classStatus$.subscribe(status => {
  console.log('Class status:', status);
});
const currentStatus = classroom.state.classStatus$.get();

All States

SignalTypeDescription
askStageList$ReadonlySignal<MemberInfo[]>Ask-stage request list (teacher side; from askStage signal queue).
askStageStatus$ReadonlySignal<AskStageStatus>Current user's ask-stage status (askStage flow; student side).
autoPlayFailed$ReadonlySignal<boolean>Whether autoplay was blocked by the browser (true=blocked; user interaction needed to resume).
beautyEnabled$ReadonlySignal<boolean>Whether beauty effects are enabled (true when any parameter is > 0).
beautyParam$ReadonlySignal<TBeautyParam>Current beauty parameters (whiten / lift / eye; range 0-100).
boardPermission$ReadonlySignal<boolean>Whiteboard permission
boardReady$ReadonlySignal<boolean>Whether the whiteboard is ready (operable).
boardStatus$ReadonlySignal<BoardStatus>Detailed whiteboard status (BoardStatus enum).
boardToolExpand$ReadonlySignal<boolean>Whiteboard toolbar expand/collapse state (controlled by UIKit).
cameraDeviceStatus$ReadonlySignal<DeviceStatus>Camera device status (DeviceStatus enum)
cameraList$ReadonlySignal<TDeviceInfo[]>Camera device list
cameraPermission$ReadonlySignal<boolean>Camera permission
chatPermission$ReadonlySignal<boolean>Chat send permission
classDuration$ReadonlySignal<number>Class duration in seconds (server-time calibrated).
classDurationCalibrated$ReadonlySignal<number>Server-time calibrated class duration in seconds (same as classDuration$ but more explicit).
classId$ReadonlySignal<number>Current classroom ID
classInfo$ReadonlySignal<ClassInfo | null>Full classroom info (available after joinClass, null after leaveClass).
classInfoReady$ReadonlySignal<boolean>Whether class info has been loaded
classLayout$ReadonlySignal<ClassLayout>Current classroom layout type.
classStatus$ReadonlySignal<ClassStatus>Classroom status: 'notStarted'
classVisible$ReadonlySignal<boolean>Whether the classroom page is currently visible (based on Page Visibility API).
config$ReadonlySignal<Readonly<ClassroomConfig>>Current SDK config (auto-syncs when setConfig() is called; subscribable).
currentCameraId$ReadonlySignal<string>Currently selected camera device ID
currentMicId$ReadonlySignal<string>Currently selected microphone device ID
currentQuizId$ReadonlySignal<string>Active quiz ID (set when quiz is active)
currentRole$ReadonlySignal<Role>Current user role (written after joinClass).
currentSpeakerId$ReadonlySignal<string>Currently selected speaker device ID
deviceOrientation$ReadonlySignal<"portrait" | "landscape">Device orientation (mobile).
enableStage$ReadonlySignal<boolean>Whether the hand-raise stage feature is enabled
globalNetworkStatus$ReadonlySignal<GlobalNetworkStatus>IM / Board / API,含 needStrongAlert 强提示标志)。
handUpList$ReadonlySignal<MemberInfo[]>Hand-up list (students requesting to go on stage; used on teacher side).
handUpTips$ReadonlySignal<boolean>Whether the hand-up tip overlay is visible (auto-hides after 3 seconds).
imAvailable$ReadonlySignal<boolean>Whether IM is connected and available
inviteStageStatus$ReadonlySignal<"idle" | "rejected" | "inviting" | "invited" | "accepted">Teacher-initiated invite-stage status (inviteStage flow).
joinedClass$ReadonlySignal<boolean>Whether joinClass completed.
joinProgress$ReadonlySignal<JoinProgress>Join flow phase (JoinProgress enum) — use it to drive join loading UI.
joinQuitTips$ReadonlySignal<boolean>Whether the member join/quit tips UI is visible (triggered by ImModule; consumed by UIKit).
likeCount$ReadonlySignal<number>Cumulative like count
marqueeConfig$ReadonlySignal<MarqueeConfig | null>Current marquee config (null if not configured).
memberCount$ReadonlySignal<number>Total online member count
memberList$ReadonlySignal<MemberInfo[]>Member list (array view of memberMap)
memberListOfflineCount$ReadonlySignal<number>Offline member count
memberListPageCount$ReadonlySignal<number>Number of member list pages loaded
memberListTotalCount$ReadonlySignal<number>Total member count (including offline)
memberMap$ReadonlySignal<Map<string, MemberInfo>>All members Map (single source of truth; key=userId, value=MemberInfo).
messageFilter$ReadonlySignal<MessageFilterType>Message list filter type (controls which messages appear in messageList$).
messageList$ReadonlySignal<Message[]>Chat message list (includes history after join; new messages appended in real time).
messageUnreadCount$ReadonlySignal<number>Unread message count (resets to 0 after calling markAllMessagesAsRead/markMessageAsRead).
micDeviceStatus$ReadonlySignal<DeviceStatus>Microphone device status (DeviceStatus enum)
micList$ReadonlySignal<TDeviceInfo[]>Microphone device list
micPermission$ReadonlySignal<boolean>Microphone permission
musicPlayStatus$ReadonlySignal<MusicPlayStatus>Background music play status.
muteAll$ReadonlySignal<boolean>Whether all-mute audio is active
muteVideoAll$ReadonlySignal<boolean>Whether all-video-mute is active
myHandUpStatus$ReadonlySignal<boolean>Whether the current user has raised their hand
networkQuality$ReadonlySignal<NetworkQuality>Upload and download network quality (uplink/downlink; 0-5, lower is better).
networkQualityLevel$ReadonlySignal<NetworkQualityLevel>Overall network quality level (NetworkQualityLevel enum; 0=unknown, 1=excellent, 5=very bad).
oneToOneStudentVideoHidden$ReadonlySignal<boolean>Whether the student's video is hidden by the teacher in a 1v1 classroom.
packageFeatures$ReadonlySignal<PackageFeatureConfig>Current package feature config (maxMembers, enableBeauty, enableSubtitle, etc.).
packageType$ReadonlySignal<PackageType>Current package type (PackageType enum: 0=Default...5=Enterprise).
quickReplyWords$ReadonlySignal<string[]>Quick reply words list (from class config)
quizAnswerCount$ReadonlySignal<number>Number of answers submitted for current quiz
quizStatus$ReadonlySignal<"idle" | "active" | "closed">Quiz status: 'idle'
schoolId$ReadonlySignal<number>School ID
schoolInfo$ReadonlySignal<SchoolInfo | null>School info (written after joinClass; includes sdkAppId, package type, feature whitelist, etc.).
schoolInfoReady$ReadonlySignal<boolean>Whether school info has been loaded
screenSharePermission$ReadonlySignal<number>Screen share permission (numeric, NOT boolean).
screenShareStatus$ReadonlySignal<ScreenShareStatus>Screen share status.
sdkAppId$ReadonlySignal<number>TRTC SDK AppID / TRTC SDK AppID
silenceMode$ReadonlySignal<SilenceMode>Current chat silence mode.
speakerList$ReadonlySignal<TDeviceInfo[]>Speaker device list
stageCount$ReadonlySignal<number>Number of members on stage
stageList$ReadonlySignal<MemberInfo[]>Members currently on stage
stageLoopEnabled$ReadonlySignal<boolean>Whether stage loop is active
stageStatus$ReadonlySignal<StageStatus>Current user's stage status.
streamList$ReadonlySignal<LiveStreamInfo[]>Current classroom live stream list (read-only).
subCameraEnabled$ReadonlySignal<boolean>Whether sub-camera is enabled (mobile second video)
subtitleEnabled$ReadonlySignal<boolean>Whether subtitle transcription is active
subtitleTranscriptionUserIds$ReadonlySignal<string[]>List of user IDs currently being transcribed.
taskList$ReadonlySignal<TaskInfo[]>Current classroom task list (quiz/timer, etc.; written by ClassModule).
userId$ReadonlySignal<string>Current user ID (written on joinClass)
videoPublishUserList$ReadonlySignal<string[]>List of user IDs currently publishing video streams (from TRTC).
virtualBgConfig$ReadonlySignal<TVirtualBackgroundParam | null>Current virtual background config; null when not active.
vodCurrentTime$ReadonlySignal<number>VOD current playback position in seconds (throttled at 200ms).
vodDuration$ReadonlySignal<number>VOD total duration in seconds
vodPlayStatus$ReadonlySignal<VodPlayStatus>VOD video play status.
waitStageUserId$ReadonlySignal<string>Most recently staged user ID (for UI animation)
watermarkConfig$ReadonlySignal<WatermarkConfig | null>Current watermark config (null if not configured).