From 7d52f58b4cb9930a3bd245907a2c4fa476e3070e Mon Sep 17 00:00:00 2001 From: Wilson Date: Wed, 5 Mar 2025 10:13:47 -0500 Subject: [PATCH] allow custom local bot name (#2027) Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com> --- assets/.env | 3 +++ ...activity_plan_page_launch_icon_button.dart | 24 ++++++++++++------- lib/pangea/bot/utils/bot_name.dart | 7 ++++-- lib/pangea/common/config/environment.dart | 4 ++++ .../common/controllers/pangea_controller.dart | 2 +- .../room_information_extension.dart | 4 +++- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/assets/.env b/assets/.env index b3fcafe96..10f5f5f94 100644 --- a/assets/.env +++ b/assets/.env @@ -12,3 +12,6 @@ RC_OFFERING_NAME = 'test' STRIPE_MANAGEMENT_LINK = 'https://billing.stripe.com/p/login/test_9AQaI8d3O9lmaXe5kk' SUPPORT_SPACE_ID = '!gqSNSkvwTpgumyjLsV:staging.pangea.chat' + +# custom bot name for local bot development +# BOT_NAME="@local-bot:staging.pangea.chat" diff --git a/lib/pangea/activity_planner/activity_plan_page_launch_icon_button.dart b/lib/pangea/activity_planner/activity_plan_page_launch_icon_button.dart index 9102f4e41..df19899b2 100644 --- a/lib/pangea/activity_planner/activity_plan_page_launch_icon_button.dart +++ b/lib/pangea/activity_planner/activity_plan_page_launch_icon_button.dart @@ -16,15 +16,21 @@ class ActivityPlanPageLaunchIconButton extends StatelessWidget { @override Widget build(BuildContext context) { - if (controller.room.isBotDM) { - return const SizedBox(); - } - return IconButton( - icon: const Icon(Icons.event_note_outlined), - tooltip: L10n.of(context).activityPlannerTitle, - onPressed: () { - controller.stopAudioStream.add(null); - context.go('/rooms/${controller.room.id}/planner'); + return FutureBuilder( + future: controller.room.isBotDM, + builder: (BuildContext context, snapshot) { + final isBotDM = snapshot.data; + if (isBotDM == true || isBotDM == null) { + return const SizedBox(); + } + return IconButton( + icon: const Icon(Icons.event_note_outlined), + tooltip: L10n.of(context).activityPlannerTitle, + onPressed: () { + controller.stopAudioStream.add(null); + context.go('/rooms/${controller.room.id}/planner'); + }, + ); }, ); } diff --git a/lib/pangea/bot/utils/bot_name.dart b/lib/pangea/bot/utils/bot_name.dart index 490c12cd4..c183be359 100644 --- a/lib/pangea/bot/utils/bot_name.dart +++ b/lib/pangea/bot/utils/bot_name.dart @@ -1,7 +1,10 @@ import 'package:fluffychat/pangea/common/config/environment.dart'; class BotName { - static String get byEnvironment => - Environment.isStaging ? "@bot:staging.pangea.chat" : "@bot:pangea.chat"; + static String get byEnvironment => Environment.botName != null + ? Environment.botName! + : Environment.isStaging + ? "@bot:staging.pangea.chat" + : "@bot:pangea.chat"; static String get localBot => "@matrix-bot-test:staging.pangea.chat"; } diff --git a/lib/pangea/common/config/environment.dart b/lib/pangea/common/config/environment.dart index 2f7ed4ffa..440eb7fe4 100644 --- a/lib/pangea/common/config/environment.dart +++ b/lib/pangea/common/config/environment.dart @@ -94,4 +94,8 @@ class Environment { static String get supportUserId { return isStaging ? '@support:staging.pangea.chat' : '@support:pangea.chat'; } + + static String? get botName { + return dotenv.env["BOT_NAME"]; + } } diff --git a/lib/pangea/common/controllers/pangea_controller.dart b/lib/pangea/common/controllers/pangea_controller.dart index 630f0b09b..164b154ca 100644 --- a/lib/pangea/common/controllers/pangea_controller.dart +++ b/lib/pangea/common/controllers/pangea_controller.dart @@ -198,7 +198,7 @@ class PangeaController { final List botDMs = []; for (final room in matrixState.client.rooms) { - if (room.isBotDM) { + if (await room.isBotDM) { botDMs.add(room); } } diff --git a/lib/pangea/extensions/room_information_extension.dart b/lib/pangea/extensions/room_information_extension.dart index a8894bd95..6a064e462 100644 --- a/lib/pangea/extensions/room_information_extension.dart +++ b/lib/pangea/extensions/room_information_extension.dart @@ -41,7 +41,9 @@ extension RoomInformationRoomExtension on Room { ); } - bool get isBotDM => botOptions?.mode == BotMode.directChat; + Future get isBotDM async { + return botOptions?.mode == BotMode.directChat && await botIsInRoom; + } bool isAnalyticsRoomOfUser(String userId) => isAnalyticsRoom && isMadeByUser(userId);