package com.notifyhub.viewer.ui import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope import coil.load import com.notifyhub.viewer.NotizViewerApp import com.notifyhub.viewer.R import com.notifyhub.viewer.data.AuthRepository import com.notifyhub.viewer.databinding.FragmentAccountBinding import com.notifyhub.viewer.util.DeviceUtils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class AccountFragment : Fragment() { private var _binding: FragmentAccountBinding? = null private val binding get() = _binding!! private val app get() = (requireActivity().application as NotizViewerApp) override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { _binding = FragmentAccountBinding.inflate(inflater, container, false) val prefs = app.preferences binding.appNameText.text = prefs.brandAppName?.takeIf { it.isNotBlank() } ?: getString(R.string.app_name) val logoUrl = prefs.brandLogoUrl if (!logoUrl.isNullOrBlank()) { binding.brandLogo.load(logoUrl) { crossfade(true) error(android.R.drawable.ic_dialog_info) } } binding.companyText.text = prefs.companyName?.let { getString(R.string.company_label, it) } ?: "—" binding.companyNumberText.text = prefs.companyNumber?.let { getString(R.string.company_number_label, it) } ?: "" val planName = prefs.subscriptionPlan if (!planName.isNullOrBlank()) { val label = if (prefs.subscriptionPerpetual) "$planName (Unlimited)" else planName binding.subscriptionPlanText.text = getString(R.string.subscription_plan_label, label) binding.subscriptionPlanText.visibility = View.VISIBLE } val retentionDays = prefs.subscriptionRetentionDays val retentionLabel = if (prefs.subscriptionPerpetual || retentionDays == null) { "indefinitely" } else { "$retentionDays days" } binding.retentionText.text = getString(R.string.data_retention_label, retentionLabel) binding.retentionText.visibility = View.VISIBLE binding.logoutButton.setOnClickListener { lifecycleScope.launch { val repo = AuthRepository(app.api, app.preferences, DeviceUtils.name()) withContext(Dispatchers.IO) { repo.logout() } startActivity(Intent(requireContext(), LoginActivity::class.java)) requireActivity().finishAffinity() } } return binding.root } override fun onDestroyView() { super.onDestroyView() _binding = null } }