// nodes_provider.dart — 节点清单 + 当前选择(含智能选择 AUTO)
import 'package:flutter_riverpod/flutter_riverpod.dart';

import '../models/node.dart';

/// 可用节点(演示数据;接口就绪后替换为 nodes API)。
final nodesProvider = Provider<List<Node>>((ref) => kDemoNodes);

/// 当前选中的节点 code;`AUTO` 表示智能选择(默认)。
final selectedNodeCodeProvider = StateProvider<String>((ref) => kSmartNodeCode);

/// 是否处于智能选择。
final isSmartSelectProvider = Provider<bool>(
  (ref) => ref.watch(selectedNodeCodeProvider) == kSmartNodeCode,
);

/// 实际生效的节点:智能选择时取延迟最小者,否则取选中节点。
final effectiveNodeProvider = Provider<Node>((ref) {
  final nodes = ref.watch(nodesProvider);
  final code = ref.watch(selectedNodeCodeProvider);
  if (code == kSmartNodeCode) {
    return nodes.reduce((a, b) => a.ping <= b.ping ? a : b);
  }
  return nodes.firstWhere((n) => n.code == code, orElse: () => nodes.first);
});
