select_friend_logic.dart 1.22 KB
import 'package:get/get.dart';

import 'friends_controller.dart';

class SelectFriendLogic {
  SelectFriendLogic(this._friendsController);

  final FriendsController _friendsController;
  final selectedIndex = (-1).obs;

  List<FriendHealthData> get friends => _friendsController.friends;

  Future<void> initialize() async {
    if (friends.isEmpty) {
      await _friendsController.loadFriends();
    }
    final items = friends;
    if (items.isEmpty) return;
    final watchFaceIndex = items.indexWhere((friend) => friend.isOnWatchFace);
    selectedIndex.value = watchFaceIndex < 0 ? 0 : watchFaceIndex;
  }

  void selectFriendAt(int index) {
    if (index < 0 || index >= friends.length) return;
    selectedIndex.value = index;
  }

  bool syncSelectedFriendToWatchFace() {
    final index = selectedIndex.value;
    if (index < 0 || index >= friends.length) return false;

    final updated = List.generate(
      friends.length,
      (itemIndex) => friends[itemIndex].copyWith(
        isOnWatchFace: itemIndex == index,
      ),
      growable: false,
    );
    _friendsController.friends.assignAll(updated);

    // TODO: Submit selected watch-face friend to the friend API when available.
    return true;
  }

  void dispose() {}
}