import 'package:flutter/material.dart';

import 'package:together_mobile/utils/app_dir.dart';

class UserAccount extends ChangeNotifier {
  String id = '';
  String username = '';
  String email = '';

  void init(Map<String, dynamic> data) {
    id = data['id']!;
    username = data['username']!;
    email = data['email']!;
  }

  Map<String, String> toMap() {
    return {
      'id': id,
      'username': username,
      'email': email,
    };
  }

  void updateUsername(String newUsername) {
    username = newUsername;
  }

  void updateEmail(String newEmail) {
    email = newEmail;
  }

  void clean() {
    id = '';
    username = '';
    email = '';
  }
}

class UserProfile extends ChangeNotifier {
  String nickname = '';
  String gender = '';
  String birthday = '';
  String location = '';
  String status = '';
  String sign = '';
  String avatar = '';
  String baseImageDir = '';
  bool isInitialised = false;

  Future<void> init(Map<String, dynamic> json) async {
    nickname = json['nickname'] ?? '';
    birthday = json['birthday'] ?? '';
    location = json['location'] ?? '';
    status = json['status'] ?? '';
    sign = json['sign'] ?? '';
    avatar = json['avatar'] ?? '';
    baseImageDir = await getChatImageDir();
    gender = _genderEn2Cn(json['gender'] ?? '');
    isInitialised = true;
  }

  Map<String, String> toMap() {
    return {
      'nickname': nickname,
      'gender': gender,
      'birthday': birthday,
      'location': location,
      'status': status,
      'sign': sign,
      'avatar': avatar,
    };
  }

  void updateBasic(Map<String, String> newBasic) {
    nickname = newBasic['nickname']!;
    location = newBasic['location']!;
    birthday = newBasic['birthday']!;
    gender = newBasic['gender']!;
  }

  void updateSign(String newSign) {
    sign = newSign;
  }

  void updateAvatar(String newAvatar) async {
    avatar = newAvatar;
  }

  void clean() {
    nickname = '';
    gender = '';
    birthday = '';
    location = '';
    status = '';
    sign = '';
    avatar = '';
    baseImageDir = '';
    isInitialised = false;
  }

  String _genderEn2Cn(String newGender) {
    if (newGender.isEmpty) {
      return newGender;
    } else {
      return newGender == 'man' ? '男' : '女';
    }
  }
}