|
@@ -12,11 +12,11 @@ import com.ys.bdtp.adm.app.isNet
|
|
|
import com.ys.bdtp.adm.app.theme.underColor
|
|
|
import com.ys.bdtp.adm.mvvm.model.FailureResponse
|
|
|
import com.ys.bdtp.adm.mvvm.model.SuccessResponse
|
|
|
-import com.ys.bdtp.adm.mvvm.model.vo.request.Account
|
|
|
-import com.ys.bdtp.adm.mvvm.ui.compose.Blank
|
|
|
-import com.ys.bdtp.adm.mvvm.ui.compose.Div
|
|
|
-import com.ys.bdtp.adm.mvvm.ui.compose.Head
|
|
|
-import com.ys.bdtp.adm.mvvm.ui.compose.HeadRight
|
|
|
+import com.ys.bdtp.adm.mvvm.model.db.entity.ProjectEntity
|
|
|
+import com.ys.bdtp.adm.mvvm.model.db.entity.UserEntity
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.compose.*
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.screen.main.LocalNavHostController
|
|
|
+import com.ys.bdtp.adm.mvvm.ui.screen.main.Main
|
|
|
import com.ys.bdtp.adm.mvvm.vm.project.ProjectViewModel
|
|
|
import kotlinx.coroutines.launch
|
|
|
import org.kodein.di.compose.rememberInstance
|
|
@@ -28,25 +28,46 @@ import org.kodein.di.compose.rememberViewModel
|
|
|
fun Project() {
|
|
|
val vm by rememberViewModel<ProjectViewModel>()
|
|
|
val cm by rememberInstance<ConnectivityManager>()
|
|
|
-
|
|
|
- var account by remember { mutableStateOf<Account?>(null) }
|
|
|
+ val nav = LocalNavHostController.current!!
|
|
|
val scope = rememberCoroutineScope()
|
|
|
+ var user by remember { mutableStateOf<UserEntity?>(null) }
|
|
|
+ var projects by remember { mutableStateOf<List<ProjectEntity>>(emptyList()) }
|
|
|
|
|
|
+ var popupState by remember { mutableStateOf(false) }
|
|
|
LaunchedEffect(Unit) {
|
|
|
// isNet 联网,进行网络通信,获取账号信息也判断 token是否能用
|
|
|
if (isNet(cm)) {
|
|
|
- scope.launch {
|
|
|
- when (val response = vm.getAccount()) {
|
|
|
- is SuccessResponse -> {
|
|
|
- val a = response.data
|
|
|
- account = a
|
|
|
- vm.setCurrentAccount(a)
|
|
|
- }
|
|
|
+ when (val response = vm.getAccount()) {
|
|
|
+ is SuccessResponse -> {
|
|
|
+ val account = response.data
|
|
|
+ vm.setCurrentAccount(account)
|
|
|
+ val up = vm.getUserWithProjectsById(account.id)
|
|
|
+ user = up.user
|
|
|
+ projects = up.projects
|
|
|
+ }
|
|
|
|
|
|
- is FailureResponse -> {
|
|
|
- // TODO 根据消息 进行跳转
|
|
|
+ is FailureResponse -> {
|
|
|
+ val fail = response.fail
|
|
|
+ if (fail.code == "catch") {
|
|
|
+ // 提示网络问题
|
|
|
+ } else {
|
|
|
+ // 根据不同 code 进行不同操作
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 离线
|
|
|
+ val u = vm.currentUser()
|
|
|
+ if (u == null) {
|
|
|
+ nav.navigate(Main.Login) {
|
|
|
+ popUpTo(Main.Project) {
|
|
|
+ inclusive = true
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ val up = vm.getUserWithProjectsById(u.id)
|
|
|
+ user = up.user
|
|
|
+ projects = up.projects
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -61,25 +82,42 @@ fun Project() {
|
|
|
right = {
|
|
|
HeadRight(
|
|
|
role = { "项目管家" },
|
|
|
- click = {}
|
|
|
+ click = {
|
|
|
+ popupState = !popupState
|
|
|
+ }
|
|
|
)
|
|
|
}
|
|
|
)
|
|
|
+
|
|
|
+ if (popupState) {
|
|
|
+ LogoutPopup(
|
|
|
+ click = {
|
|
|
+ scope.launch {
|
|
|
+ vm.logout()
|
|
|
+ }
|
|
|
+ popupState = false
|
|
|
+ nav.navigate(Main.Login) {
|
|
|
+ popUpTo(Main.Project) {
|
|
|
+ inclusive = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
Div(Div.Row)
|
|
|
Column(
|
|
|
modifier = Modifier
|
|
|
- .fillMaxHeight()
|
|
|
+ .fillMaxSize()
|
|
|
.wrapContentWidth()
|
|
|
.background(underColor)
|
|
|
.padding(horizontal = 32.dp, vertical = 40.dp)
|
|
|
) {
|
|
|
- account?.let {
|
|
|
- if (it.projects.isEmpty()) {
|
|
|
- Blank()
|
|
|
- } else {
|
|
|
- ProjectContent(it.projects)
|
|
|
- }
|
|
|
- }
|
|
|
+ if (projects.isEmpty())
|
|
|
+ Blank()
|
|
|
+ else
|
|
|
+ ProjectContent(projects)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|