package com.ttstd.controlled.activity.splash;

import android.content.Intent;

import com.ttstd.controlled.R;
import com.ttstd.controlled.activity.activation.ActivationActivity;
import com.ttstd.controlled.activity.main.MainActivity;
import com.ttstd.controlled.base.mvvm.BaseMvvmActivity;
import com.ttstd.controlled.databinding.ActivitySplashBinding;

/**
 * 启动页。
 *
 * 作为应用入口：检查本地设备激活状态，
 * - 已激活：直接进入 {@link MainActivity}；
 * - 未激活：进入 {@link ActivationActivity} 提示并引导激活。
 */
public class SplashActivity extends BaseMvvmActivity<SplashViewModel, ActivitySplashBinding> {

    /** 启动页最短停留时间，避免闪屏一闪而过。 */
    private static final long MIN_SPLASH_MS = 800L;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_splash;
    }

    @Override
    protected void initView() {
        binding.tvStatus.setText(R.string.splash_checking);
    }

    @Override
    protected void initData() {
        viewModel.getActivated().observe(this, activated -> {
            // 保证启动页至少展示 MIN_SPLASH_MS，观感更自然。
            binding.getRoot().postDelayed(() -> {
                if (isFinishing() || isDestroyed()) return;
                Intent intent = Boolean.TRUE.equals(activated)
                        ? new Intent(this, MainActivity.class)
                        : new Intent(this, ActivationActivity.class);
                startActivity(intent);
                finish();
            }, MIN_SPLASH_MS);
        });
        viewModel.check(this);
    }

    @Override
    public void onBackPressed() {
        // 启动页检查期间屏蔽返回，避免produce中间态。
        // 不调用 super，直接忽略。
    }
}
