import 'package:chat/configs/app_colors.dart';
import 'package:chat/controllers/private_controller.dart';
import 'package:chat/routes/contact_routes.dart';
import 'package:chat/routes/conversation_routes.dart';
import 'package:chat/routes/moments_routes.dart';
import 'package:chat/services/tim/conversation_service.dart';
import 'package:chat/utils/im_tools.dart';
import 'package:chat/views/home/widgets/action_button.dart';
import 'package:chat/views/home/widgets/action_item.dart';
import 'package:chat/widgets/custom_avatar.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class ContactFriendProfilePage extends StatelessWidget {
  const ContactFriendProfilePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GetX<PrivateController>(builder: (_) {
      return Scaffold(
        appBar: AppBar(
          backgroundColor: AppColors.white,
          actions: [
            Visibility(
              visible: _.currentFriend.value.isFriend,
              child: IconButton(
                onPressed: () {
                  Get.toNamed(
                    ContactRoutes.friendProfileMore,
                  );
                },
                icon: const Icon(
                  Icons.more_horiz,
                ),
              ),
            ),
          ],
        ),
        body: Column(
          children: [
            Container(
              padding: const EdgeInsets.all(16),
              color: AppColors.white,
              child: Row(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  CustomAvatar(
                    _.currentFriend.value.userProfile?.faceUrl,
                    size: 54,
                  ),
                  const SizedBox(width: 16),
                  Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        _.currentFriend.value.conversation!.showName!,
                        style: const TextStyle(
                          fontSize: 18,
                          fontWeight: FontWeight.w400,
                        ),
                      ),
                      Text('昵称：${_.currentFriend.value.userProfile?.nickName}'),
                      // Text('区块链地址：$friendId'),
                    ],
                  ),
                ],
              ),
            ),
            ActionItem(
              '设置备注',
              isLast: true,
              extend: _.currentFriend.value.friendRemark,
              onTap: () {
                Get.toNamed(
                  ContactRoutes.friendRemark,
                );
              },
            ),
            const SizedBox(height: 9),
            ActionItem(
              '他的动态',
              isFirst: true,
              isLast: true,
              onTap: () {
                Get.toNamed(
                  MomentsRoutes.user,
                  arguments: {
                    'userId': _.currentFriend.value.userID,
                  },
                );
              },
            ),
            const SizedBox(height: 8),
            Visibility(
              visible: !_.currentFriend.value.isFriend,
              child: ActionButton(
                '添加到通讯录',
                hasTop: true,
                hasBottom: true,
                onTap: () {
                  Get.toNamed(
                    ContactRoutes.friendRequestApply,
                    arguments: {
                      'userID': _.currentFriend.value.userID,
                    },
                  );
                },
              ),
            ),
            Visibility(
              visible: _.currentFriend.value.isFriend,
              child: ActionButton(
                '发消息',
                hasTop: true,
                hasBottom: true,
                onTap: () async {
                  var result = await TimConversationService
                      .to.conversationManager
                      .getConversation(
                    conversationID: 'c2c_' + _.currentFriend.value.userID,
                  );
                  if (result.code == 0) {
                    Get.toNamed(
                      ConversationRoutes.index,
                      arguments: {
                        'conversation': result.data,
                      },
                    );
                  }
                },
              ),
            ),
            Visibility(
              visible: _.currentFriend.value.isFriend,
              child: ActionButton(
                '音视频通话',
                hasBottom: true,
                onTap: () {
                  ImTools.showTrtcMessage(_.currentFriend.value.userID);
                },
              ),
            ),
          ],
        ),
      );
    });
  }
}
