import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';

import 'package:im_app/app/di/app_providers.dart';
import 'package:im_app/app/router/app_route_name.dart';

part 'chat_view_model.g.dart';

/// 聊天页 ViewModel（@riverpod 自动生成 `chatViewModelProvider`）
///
/// 当前 chat 页面为 Demo，无需从服务端加载数据，状态为 void。
/// 后续接入会话列表时，将 build() 改为返回会话列表状态，并在此加载数据。
///
/// ## 数据流
///
/// ```
/// ChatPage
///   → ref.read(chatViewModelProvider.notifier).someMethod(context)
///     → ★ ChatViewModel ★      ← 你在这里
///       → 导航 / 业务逻辑
/// ```
@riverpod
class ChatViewModel extends _$ChatViewModel {
  @override
  void build() {}

  // ── 导航（Demo 按钮，正式开发后随 UI 一并替换） ──────────────────────────

  /// 切换到联系人 Tab。
  void goToContact(BuildContext context) {
    context.go(AppRouteName.contact.path);
  }

  /// 带 extra 参数 push 聊天详情页（extra 传 Dart Record）。
  void pushChatDetailWithExtra(BuildContext context) {
    context.push(
      AppRouteName.chatDetail.path,
      extra: (conversationId: '42', title: 'extra 传参'),
    );
  }

  /// 带路径参数 push 聊天详情页（id 内嵌在 URL 中）。
  void pushChatDetailById(BuildContext context) {
    context.push(AppRouteName.chatDetailByIdPath('99'));
  }

  /// 无参 push（演示 push 导航）。
  void pushSettingsTheme(BuildContext context) {
    context.push(AppRouteName.settingsTheme.path);
  }

  /// 切换到设置 Tab。
  void goToSettings(BuildContext context) {
    context.go(AppRouteName.settings.path);
  }

  /// 测试数据库性能
  void goToDatabaseTest(BuildContext context) {
    context.push(AppRouteName.chatDBTest.path);
  }

  // ── 业务 ─────────────────────────────────────────────────────────────────

  /// 退出登录
  ///
  /// 调用 [AuthNotifier.logout] 清除登录状态，go_router 守卫检测到后
  /// 自动重定向到登录页，无需手动导航。
  void logout() {
    ref.read(authNotifierProvider).logout();
  }
}
