add redact PL check
This commit is contained in:
parent
15d02458ab
commit
b80bd557dd
3 changed files with 16 additions and 3 deletions
|
|
@ -50,6 +50,10 @@ class PowerLevelController extends Notifier<bool> {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.eventType == "m.room.redaction") {
|
||||||
|
return userLevel >= (event.content["redact"] as int? ?? 50);
|
||||||
|
}
|
||||||
|
|
||||||
final requiredLevel = events.containsKey(config.eventType)
|
final requiredLevel = events.containsKey(config.eventType)
|
||||||
? (events[config.eventType] as int)
|
? (events[config.eventType] as int)
|
||||||
: (config.isStateEvent
|
: (config.isStateEvent
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ class ChatBox extends HookConsumerWidget {
|
||||||
|
|
||||||
final canSendMessages = ref.watch(
|
final canSendMessages = ref.watch(
|
||||||
PowerLevelController.provider(
|
PowerLevelController.provider(
|
||||||
PowerLevelConfig(eventType: "m.room.message"),
|
PowerLevelConfig(eventType: "m.room.redaction"),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,12 @@ import "package:flyer_chat_system_message/flyer_chat_system_message.dart";
|
||||||
import "package:hooks_riverpod/hooks_riverpod.dart";
|
import "package:hooks_riverpod/hooks_riverpod.dart";
|
||||||
import "package:nexus/controllers/client_controller.dart";
|
import "package:nexus/controllers/client_controller.dart";
|
||||||
import "package:nexus/controllers/client_state_controller.dart";
|
import "package:nexus/controllers/client_state_controller.dart";
|
||||||
|
import "package:nexus/controllers/power_level_controller.dart";
|
||||||
import "package:nexus/controllers/selected_room_controller.dart";
|
import "package:nexus/controllers/selected_room_controller.dart";
|
||||||
import "package:nexus/controllers/room_chat_controller.dart";
|
import "package:nexus/controllers/room_chat_controller.dart";
|
||||||
import "package:nexus/helpers/extensions/better_when.dart";
|
import "package:nexus/helpers/extensions/better_when.dart";
|
||||||
import "package:nexus/helpers/extensions/show_context_menu.dart";
|
import "package:nexus/helpers/extensions/show_context_menu.dart";
|
||||||
|
import "package:nexus/models/configs/power_level_config.dart";
|
||||||
import "package:nexus/models/relation_type.dart";
|
import "package:nexus/models/relation_type.dart";
|
||||||
import "package:nexus/models/requests/report_request.dart";
|
import "package:nexus/models/requests/report_request.dart";
|
||||||
import "package:nexus/widgets/chat_page/composer/chat_box.dart";
|
import "package:nexus/widgets/chat_page/composer/chat_box.dart";
|
||||||
|
|
@ -98,7 +100,11 @@ class RoomChat extends HookConsumerWidget {
|
||||||
},
|
},
|
||||||
child: ListTile(leading: Icon(Icons.edit), title: Text("Edit")),
|
child: ListTile(leading: Icon(Icons.edit), title: Text("Edit")),
|
||||||
),
|
),
|
||||||
if (isSentByMe) // TODO: Or if user has permission to redact others' messages
|
if (ref.watch(
|
||||||
|
PowerLevelController.provider(
|
||||||
|
PowerLevelConfig(eventType: "m.room.redaction"),
|
||||||
|
),
|
||||||
|
))
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
onTap: () => showDialog(
|
onTap: () => showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
|
|
@ -145,7 +151,10 @@ class RoomChat extends HookConsumerWidget {
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: ListTile(leading: Icon(Icons.delete), title: Text("Delete")),
|
child: ListTile(
|
||||||
|
leading: Icon(Icons.delete, color: danger),
|
||||||
|
title: Text("Delete", style: TextStyle(color: danger)),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
onTap: () => showDialog(
|
onTap: () => showDialog(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue