From b25e10ba7698f0e473085454033dc82854026416 Mon Sep 17 00:00:00 2001 From: Gabby Gurdin Date: Tue, 9 Apr 2024 14:27:24 -0400 Subject: [PATCH] add power level check before inviting bot to space and setting power level --- lib/pages/new_space/new_space.dart | 4 ++++ lib/pangea/controllers/pangea_controller.dart | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/pages/new_space/new_space.dart b/lib/pages/new_space/new_space.dart index 402ea3e5b..8d09c65f0 100644 --- a/lib/pages/new_space/new_space.dart +++ b/lib/pages/new_space/new_space.dart @@ -233,6 +233,10 @@ class NewSpaceController extends State { GoogleAnalytics.createClass(room.name, room.classCode); try { await room.invite(BotName.byEnvironment); + await room.setPower( + BotName.byEnvironment, + ClassDefaultValues.powerLevelOfAdmin, + ); } catch (err) { ErrorHandler.logError( e: "Failed to invite pangea bot to space ${room.id}", diff --git a/lib/pangea/controllers/pangea_controller.dart b/lib/pangea/controllers/pangea_controller.dart index 86946f314..27d3af6d1 100644 --- a/lib/pangea/controllers/pangea_controller.dart +++ b/lib/pangea/controllers/pangea_controller.dart @@ -218,6 +218,10 @@ class PangeaController { final List spaces = matrixState.client.rooms.where((room) => room.isSpace).toList(); for (final Room space in spaces) { + if (space.ownPowerLevel < ClassDefaultValues.powerLevelOfAdmin || + !space.canInvite) { + continue; + } List participants; try { participants = await space.requestParticipants(); @@ -228,7 +232,7 @@ class PangeaController { continue; } final List userIds = participants.map((user) => user.id).toList(); - if (space.canInvite && !userIds.contains(BotName.byEnvironment)) { + if (!userIds.contains(BotName.byEnvironment)) { try { await space.invite(BotName.byEnvironment); await space.setPower( @@ -240,6 +244,18 @@ class PangeaController { e: "Failed to invite pangea bot to space ${space.id}", ); } + } else if (space.getPowerLevelByUserId(BotName.byEnvironment) < + ClassDefaultValues.powerLevelOfAdmin) { + try { + await space.setPower( + BotName.byEnvironment, + ClassDefaultValues.powerLevelOfAdmin, + ); + } catch (err) { + ErrorHandler.logError( + e: "Failed to reset power level for pangea bot in space ${space.id}", + ); + } } } }