package com.ys.bdtp.adm.mvvm.ui.screen.flash

import android.content.SharedPreferences
import android.net.ConnectivityManager
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.ys.bdtp.adm.R
import com.ys.bdtp.adm.app.Token
import com.ys.bdtp.adm.app.isNet
import com.ys.bdtp.adm.app.theme.textBlackColor
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.flash.FlashViewModel
import org.kodein.di.compose.rememberInstance
import org.kodein.di.compose.rememberViewModel

@Composable
fun Flash() {
    val vm by rememberViewModel<FlashViewModel>()
    val cm by rememberInstance<ConnectivityManager>()
    val sp by rememberInstance<SharedPreferences>()

    val nav = LocalNavHostController.current!!

    LaunchedEffect(Unit) {
        val user = vm.currentUser()
        val isNet = isNet(cm)

        when {
            user == null -> { // 未登录
                nav.navigate(Main.Login) {
                    popUpTo(Main.Flash) {
                        inclusive = true
                    }
                }
            }
            !isNet -> { // 登录 && 未联网
                nav.navigate(Main.Project) {
                    popUpTo(Main.Flash) {
                        inclusive = true
                    }
                }
            }
            else -> {  // 登录 && 联网
                val token = sp.getString(Token, "")
                if (token == "") {
                    nav.navigate(Main.Login) {
                        popUpTo(Main.Flash) {
                            inclusive = true
                        }
                    }
                } else {
                    vm.getAccount(
                        success = {
                            nav.navigate(Main.Project) {
                                popUpTo(Main.Flash) {
                                    inclusive = true
                                }
                            }
                        },
                        failure = {
                            nav.navigate(Main.Login) {
                                popUpTo(Main.Flash) {
                                    inclusive = true
                                }
                            }
                        }
                    )
                }
            }
        }
    }

    Box(
        modifier = Modifier.fillMaxSize().background(Color.White),
        contentAlignment = Alignment.Center
    ) {
        Image(painter = painterResource(R.drawable.flash_bg), contentDescription = "")
        Column(
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            Image(painter = painterResource(R.drawable.flash_logo), contentDescription = "")
            Spacer(modifier = Modifier.height(32.dp).fillMaxWidth())
            Text("智慧建筑运维平台", fontSize = 48.sp, color = textBlackColor)
        }
    }
}

@Preview
@Composable
fun PreviewFlashScreen() {
    Flash()
}