// #Pangea // import 'package:flutter/material.dart'; // import 'package:go_router/go_router.dart'; // import 'package:matrix/matrix.dart'; // import 'package:fluffychat/config/themes.dart'; // import 'package:fluffychat/l10n/l10n.dart'; // import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; // import 'package:fluffychat/widgets/avatar.dart'; // import 'package:fluffychat/widgets/matrix.dart'; // import '../../utils/fluffy_share.dart'; // import 'chat_list.dart'; // class ClientChooserButton extends StatelessWidget { // final ChatListController controller; // const ClientChooserButton(this.controller, {super.key}); // List> _bundleMenuItems(BuildContext context) { // final matrix = Matrix.of(context); // final bundles = matrix.accountBundles.keys.toList() // ..sort( // (a, b) => a!.isValidMatrixId == b!.isValidMatrixId // ? 0 // : a.isValidMatrixId && !b.isValidMatrixId // ? -1 // : 1, // ); // return >[ // PopupMenuItem( // value: SettingsAction.newGroup, // child: Row( // children: [ // const Icon(Icons.group_add_outlined), // const SizedBox(width: 18), // Text(L10n.of(context).createGroup), // ], // ), // ), // PopupMenuItem( // value: SettingsAction.setStatus, // child: Row( // children: [ // const Icon(Icons.edit_outlined), // const SizedBox(width: 18), // Text(L10n.of(context).setStatus), // ], // ), // ), // PopupMenuItem( // value: SettingsAction.invite, // child: Row( // children: [ // Icon(Icons.adaptive.share_outlined), // const SizedBox(width: 18), // Text(L10n.of(context).inviteContact), // ], // ), // ), // PopupMenuItem( // value: SettingsAction.archive, // child: Row( // children: [ // const Icon(Icons.archive_outlined), // const SizedBox(width: 18), // Text(L10n.of(context).archive), // ], // ), // ), // PopupMenuItem( // value: SettingsAction.settings, // child: Row( // children: [ // const Icon(Icons.settings_outlined), // const SizedBox(width: 18), // Text(L10n.of(context).settings), // ], // ), // ), // const PopupMenuDivider(), // for (final bundle in bundles) ...[ // if (matrix.accountBundles[bundle]!.length != 1 || // matrix.accountBundles[bundle]!.single!.userID != bundle) // PopupMenuItem( // value: null, // child: Column( // crossAxisAlignment: CrossAxisAlignment.start, // mainAxisSize: MainAxisSize.min, // children: [ // Text( // bundle!, // style: TextStyle( // color: Theme.of(context).textTheme.titleMedium!.color, // fontSize: 14, // ), // ), // const Divider(height: 1), // ], // ), // ), // ...matrix.accountBundles[bundle]! // .whereType() // .where((client) => client.isLogged()) // .map( // (client) => PopupMenuItem( // value: client, // child: FutureBuilder( // future: client.fetchOwnProfile(), // builder: (context, snapshot) => Row( // children: [ // Avatar( // mxContent: snapshot.data?.avatarUrl, // name: snapshot.data?.displayName ?? // client.userID!.localpart, // size: 32, // ), // const SizedBox(width: 12), // Expanded( // child: Text( // snapshot.data?.displayName ?? // client.userID!.localpart!, // overflow: TextOverflow.ellipsis, // ), // ), // const SizedBox(width: 12), // IconButton( // icon: const Icon(Icons.edit_outlined), // onPressed: () => controller.editBundlesForAccount( // client.userID, // bundle, // ), // ), // ], // ), // ), // ), // ), // ], // PopupMenuItem( // value: SettingsAction.addAccount, // child: Row( // children: [ // const Icon(Icons.person_add_outlined), // const SizedBox(width: 18), // Text(L10n.of(context).addAccount), // ], // ), // ), // ]; // } // @override // Widget build(BuildContext context) { // final matrix = Matrix.of(context); // var clientCount = 0; // matrix.accountBundles.forEach((key, value) => clientCount += value.length); // return FutureBuilder( // future: matrix.client.isLogged() ? matrix.client.fetchOwnProfile() : null, // builder: (context, snapshot) => Material( // clipBehavior: Clip.hardEdge, // borderRadius: BorderRadius.circular(99), // color: Colors.transparent, // child: PopupMenuButton( // popUpAnimationStyle: FluffyThemes.isColumnMode(context) // ? AnimationStyle.noAnimation // : null, // https://github.com/flutter/flutter/issues/167180 // onSelected: (o) => _clientSelected(o, context), // itemBuilder: _bundleMenuItems, // child: Center( // child: Avatar( // mxContent: snapshot.data?.avatarUrl, // name: // snapshot.data?.displayName ?? matrix.client.userID?.localpart, // size: 32, // ), // ), // ), // ), // ); // } // void _clientSelected( // Object object, // BuildContext context, // ) async { // if (object is Client) { // controller.setActiveClient(object); // } else if (object is String) { // controller.setActiveBundle(object); // } else if (object is SettingsAction) { // switch (object) { // case SettingsAction.addAccount: // final consent = await showOkCancelAlertDialog( // context: context, // title: L10n.of(context).addAccount, // message: L10n.of(context).enableMultiAccounts, // okLabel: L10n.of(context).next, // cancelLabel: L10n.of(context).cancel, // ); // if (consent != OkCancelResult.ok) return; // context.go('/rooms/settings/addaccount'); // break; // case SettingsAction.newGroup: // context.go('/rooms/newgroup'); // break; // case SettingsAction.invite: // FluffyShare.shareInviteLink(context); // break; // case SettingsAction.settings: // context.go('/rooms/settings'); // break; // case SettingsAction.archive: // context.go('/rooms/archive'); // break; // case SettingsAction.setStatus: // controller.setStatus(); // break; // } // } // } // } // enum SettingsAction { // addAccount, // newGroup, // setStatus, // invite, // settings, // archive, // } // Pangea#