44 lines
1.0 KiB
Dart
44 lines
1.0 KiB
Dart
library msc_1236_widgets;
|
|
|
|
import 'package:matrix/matrix.dart';
|
|
|
|
export 'src/widget.dart';
|
|
|
|
extension MatrixWidgets on Room {
|
|
/// Returns all present Widgets in the room.
|
|
List<MatrixWidget> get widgets => {
|
|
...states['m.widget'] ?? states['im.vector.modular.widgets'] ?? {},
|
|
}.values.expand((e) {
|
|
try {
|
|
return [MatrixWidget.fromJson(e.content, this)];
|
|
} catch (_) {
|
|
return <MatrixWidget>[];
|
|
}
|
|
}).toList();
|
|
|
|
Future<String> addWidget(MatrixWidget widget) {
|
|
final user = client.userID;
|
|
final widgetId =
|
|
'${widget.name!.toLowerCase().replaceAll(RegExp(r'\W'), '_')}_${user!}';
|
|
|
|
final json = widget.toJson();
|
|
json['creatorUserId'] = user;
|
|
json['id'] = widgetId;
|
|
return client.setRoomStateWithKey(
|
|
id,
|
|
'im.vector.modular.widgets',
|
|
widgetId,
|
|
json,
|
|
);
|
|
}
|
|
|
|
Future<String> deleteWidget(String widgetId) {
|
|
return client.setRoomStateWithKey(
|
|
id,
|
|
'im.vector.modular.widgets',
|
|
widgetId,
|
|
{},
|
|
);
|
|
}
|
|
}
|