fix(mobile-next): 把加载、失败、断网接到真实 SDK 与目录请求
会话列表、通讯录、好友申请、添加同事页覆盖 CompanyLoadingView/CompanyFailView; 主页断网横幅跟随 IMSdkStatus.connectionFailed。不伪造状态。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
092f513708
commit
2b2c2d28a4
@@ -24,6 +24,7 @@ class HomeLogic extends SuperController {
|
||||
final unhandledFriendApplicationCount = 0.obs;
|
||||
final unhandledGroupApplicationCount = 0.obs;
|
||||
final unhandledCount = 0.obs;
|
||||
final isOffline = false.obs;
|
||||
String? _lockScreenPwd;
|
||||
bool _isShowScreenLock = false;
|
||||
bool? _isAutoLogin;
|
||||
@@ -50,7 +51,8 @@ class HomeLogic extends SuperController {
|
||||
|
||||
void getUnhandledFriendApplicationCount() async {
|
||||
var i = 0;
|
||||
var list = await OpenIM.iMManager.friendshipManager.getFriendApplicationListAsRecipient();
|
||||
var list = await OpenIM.iMManager.friendshipManager
|
||||
.getFriendApplicationListAsRecipient();
|
||||
var haveReadList = DataSp.getHaveReadUnHandleFriendApplication();
|
||||
haveReadList ??= <String>[];
|
||||
for (var info in list) {
|
||||
@@ -65,7 +67,8 @@ class HomeLogic extends SuperController {
|
||||
|
||||
void getUnhandledGroupApplicationCount() async {
|
||||
var i = 0;
|
||||
var list = await OpenIM.iMManager.groupManager.getGroupApplicationListAsRecipient();
|
||||
var list = await OpenIM.iMManager.groupManager
|
||||
.getGroupApplicationListAsRecipient();
|
||||
var haveReadList = DataSp.getHaveReadUnHandleGroupApplication();
|
||||
haveReadList ??= <String>[];
|
||||
for (var info in list) {
|
||||
@@ -101,7 +104,12 @@ class HomeLogic extends SuperController {
|
||||
if (value.status == IMSdkStatus.syncStart) {
|
||||
_getRTCInvitationStart();
|
||||
}
|
||||
isOffline.value = value.status == IMSdkStatus.connectionFailed;
|
||||
});
|
||||
final lastStatus = imLogic.imSdkStatusSubject.values.lastOrNull;
|
||||
if (lastStatus != null) {
|
||||
isOffline.value = lastStatus.status == IMSdkStatus.connectionFailed;
|
||||
}
|
||||
|
||||
Apis.kickoffController.stream.listen((event) {
|
||||
DataSp.removeLoginCertificate();
|
||||
|
||||
@@ -9,6 +9,7 @@ import '../mine/mine_view.dart';
|
||||
import 'home_logic.dart';
|
||||
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
|
||||
import '../../company/feature_flags.dart';
|
||||
import '../../company/ui/state_views.dart';
|
||||
|
||||
class HomePage extends StatelessWidget {
|
||||
final logic = Get.find<HomeLogic>();
|
||||
@@ -22,9 +23,11 @@ class HomePage extends StatelessWidget {
|
||||
onDoubleTap: () {
|
||||
logic.scrollToUnreadMessage();
|
||||
},
|
||||
child: _setupIcon(ImageRes.homeTab1Sel.toImage, logic.unreadMsgCount.value),
|
||||
child: _setupIcon(
|
||||
ImageRes.homeTab1Sel.toImage, logic.unreadMsgCount.value),
|
||||
),
|
||||
inactiveIcon: _setupIcon(ImageRes.homeTab1Nor.toImage, logic.unreadMsgCount.value),
|
||||
inactiveIcon: _setupIcon(
|
||||
ImageRes.homeTab1Nor.toImage, logic.unreadMsgCount.value),
|
||||
title: StrRes.home,
|
||||
textStyle: Styles.ts_0089FF_10sp_semibold,
|
||||
),
|
||||
@@ -32,8 +35,10 @@ class HomePage extends StatelessWidget {
|
||||
PersistentTabConfig(
|
||||
screen: ContactsPage(),
|
||||
item: ItemConfig(
|
||||
icon: _setupIcon(ImageRes.homeTab2Sel.toImage, logic.unhandledCount.value),
|
||||
inactiveIcon: _setupIcon(ImageRes.homeTab2Nor.toImage, logic.unhandledCount.value),
|
||||
icon: _setupIcon(
|
||||
ImageRes.homeTab2Sel.toImage, logic.unhandledCount.value),
|
||||
inactiveIcon: _setupIcon(
|
||||
ImageRes.homeTab2Nor.toImage, logic.unhandledCount.value),
|
||||
title: StrRes.contacts,
|
||||
textStyle: Styles.ts_0089FF_10sp_semibold,
|
||||
),
|
||||
@@ -81,19 +86,30 @@ class HomePage extends StatelessWidget {
|
||||
return Scaffold(
|
||||
backgroundColor: Styles.c_FFFFFF,
|
||||
body: Obx(
|
||||
() => PersistentTabView(
|
||||
tabs: _tabs(),
|
||||
navBarBuilder: (navBarConfig) => Style1BottomNavBar(
|
||||
navBarConfig: navBarConfig,
|
||||
navBarDecoration: const NavBarDecoration(
|
||||
color: Colors.white,
|
||||
boxShadow: [
|
||||
BoxShadow(color: Colors.black12, blurRadius: 0.5, spreadRadius: 0.5),
|
||||
],
|
||||
() => Column(
|
||||
children: [
|
||||
if (logic.isOffline.value) const CompanyOfflineBanner(),
|
||||
Expanded(
|
||||
child: PersistentTabView(
|
||||
tabs: _tabs(),
|
||||
navBarBuilder: (navBarConfig) => Style1BottomNavBar(
|
||||
navBarConfig: navBarConfig,
|
||||
navBarDecoration: const NavBarDecoration(
|
||||
color: Colors.white,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black12,
|
||||
blurRadius: 0.5,
|
||||
spreadRadius: 0.5),
|
||||
],
|
||||
),
|
||||
),
|
||||
navBarOverlap: const NavBarOverlap.none(),
|
||||
screenTransitionAnimation:
|
||||
const ScreenTransitionAnimation.none(),
|
||||
),
|
||||
),
|
||||
),
|
||||
navBarOverlap: const NavBarOverlap.none(),
|
||||
screenTransitionAnimation: const ScreenTransitionAnimation.none(),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user