package com.example.triphelper.view.Auth

import android.util.Log
import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.navigation.NavController
import com.example.triphelper.domain.Constants
import com.example.triphelper.view.navigation.NavigationRoutes
import dagger.hilt.android.lifecycle.HiltViewModel
import io.github.jan.supabase.gotrue.Auth
import io.github.jan.supabase.gotrue.auth
import io.github.jan.supabase.gotrue.providers.builtin.Email
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject

@HiltViewModel
class AuthViewModel@Inject constructor(): ViewModel(){
    private var _navigationTo = MutableStateFlow<String?>(null) //Переменные для навигации страницы из авторизации на главный экран
    val navigationTo = _navigationTo.asStateFlow()

    var wrongSignIn = mutableStateOf(false)
    val wrongText = mutableStateOf("")

    //Функция для авторизация пользователя. Через Auth передаются данные и с помощью них происходит авторизация
    fun onSignInEmailPassword(emailUser: String, passwordUser: String, controller: NavController){
        viewModelScope.launch {
            try {
                if(emailUser == "" || passwordUser == ""){
                    wrongSignIn.value = true
                    wrongText.value = "Пустые данные"
                }
                else{
                    val user = Constants.supabase.auth.signInWith(Email){
                        email = emailUser
                        password = passwordUser
                    }
                    _navigationTo.value = NavigationRoutes.MAIN
                }
                Log.i("Auth", "Success")
            }catch (e: Exception){
                Log.i("Auth", "Error")
                wrongSignIn.value = true
                wrongText.value = "Неверно введены данные"
            }
        }
    }
}