enterLiveRoomPage method

Future<bool> enterLiveRoomPage(
  1. BuildContext context,
  2. LiveInfo liveInfo
)

Implementation

Future<bool> enterLiveRoomPage(BuildContext context, LiveInfo liveInfo) async {
  LiveKitLogger.info('enterLiveRoomPage called, roomId: ${liveInfo.liveID}, isRepeatClick: $isRepeatClick');
  if (isRepeatClick) {
    LiveKitLogger.info('enterLiveRoomPage blocked by isRepeatClick');
    return false;
  }
  isRepeatClick = true;
  try {
    GlobalFloatWindowManager floatWindowManager = GlobalFloatWindowManager.instance;
    GlobalFloatWindowState state = floatWindowManager.state;
    if (floatWindowManager.isFloating()) {
      if (state.ownerId.value == TUIRoomEngine.getSelfInfo().userId) {
        makeToast(context, LiveKitLocalizations.of(Global.appContext())!.livelist_exit_float_window_tip,
            type: ToastType.warning);
        return false;
      }
      if (state.roomId.value == liveInfo.liveID) {
        floatWindowManager.switchToFullScreenMode();
        return false;
      } else {
        floatWindowManager.overlayManager.closeOverlay();
      }
    }
    bool isOwner = liveInfo.liveOwner.userID == TUIRoomEngine.getSelfInfo().userId;
    if (isOwner) {
      try {
        final result = await LiveListStore.shared.fetchLiveInfo(liveInfo.liveID);
        if (result.errorCode == TUIError.success.value()) {
          liveInfo.keepOwnerOnSeat = result.liveInfo.keepOwnerOnSeat;
        }
      } on Exception catch (e) {
        LiveKitLogger.error(e.toString());
      }
      Navigator.push(
          getContext(),
          MaterialPageRoute(
            settings: const RouteSettings(name: routeLiveRoomAudience),
            builder: (context) {
              if (floatWindowManager.isEnableFloatWindowFeature()) {
                return TUILiveRoomAnchorOverlay(roomId: liveInfo.liveID, liveInfo: liveInfo, needPrepare: false);
              } else {
                return TUILiveRoomAnchorWidget(roomId: liveInfo.liveID, liveInfo: liveInfo, needPrepare: false);
              }
            },
          ));
      return true;
    } else {
      Navigator.push(
          getContext(),
          MaterialPageRoute(
            settings: const RouteSettings(name: routeLiveRoomAudience),
            builder: (context) {
              if (floatWindowManager.isEnableFloatWindowFeature()) {
                return TUILiveRoomAudienceOverlay(roomId: liveInfo.liveID, liveInfo: liveInfo);
              } else {
                return TUILiveRoomAudienceWidget(roomId: liveInfo.liveID, liveInfo: liveInfo);
              }
            },
          ));
    }
    return true;
  } finally {
    isRepeatClick = false;
  }
}