Add reaction and message
This commit is contained in:
parent
74a634c642
commit
ae29162b5d
5 changed files with 80 additions and 17 deletions
1
.vscode/launch.json
vendored
1
.vscode/launch.json
vendored
|
@ -6,6 +6,7 @@
|
|||
"configurations": [
|
||||
{
|
||||
"name": "nexusbot",
|
||||
"preLaunchTask": "rm-socket",
|
||||
"program": "bin/nexusbot.dart",
|
||||
"args": [
|
||||
"--socket",
|
||||
|
|
14
.vscode/tasks.json
vendored
Normal file
14
.vscode/tasks.json
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "rm-socket",
|
||||
"type": "shell",
|
||||
"presentation": {
|
||||
"reveal": "silent",
|
||||
"close": true
|
||||
},
|
||||
"command": "rm socket || true"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
import "dart:convert";
|
||||
import "dart:io";
|
||||
import "package:markdown/markdown.dart";
|
||||
import "package:nexusbot/controllers/login_controller.dart";
|
||||
import "package:nexusbot/controllers/settings_controller.dart";
|
||||
import "package:nexusbot/models/registration.dart";
|
||||
|
@ -34,30 +35,68 @@ class ApiHelper {
|
|||
return json.decode(response.body)["room_id"];
|
||||
}
|
||||
|
||||
Future<String> sendMessage(message, {required String room}) async {
|
||||
final settings = ref.read(SettingsController.provider)!;
|
||||
final response = await http.put(
|
||||
settings.homeserver.replace(
|
||||
path:
|
||||
"_matrix/client/v3/rooms/${await getRoomId(room)}/send/m.room.message/${getTxn()}",
|
||||
),
|
||||
headers: await getHeaders(),
|
||||
body: json.encode({
|
||||
"msgtype": "m.text",
|
||||
"body": message,
|
||||
"format": "org.matrix.custom.html",
|
||||
"formatted_body": markdownToHtml(message),
|
||||
}),
|
||||
);
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception("Message send failed for room $room: ${response.body}");
|
||||
}
|
||||
|
||||
return json.decode(response.body)["event_id"];
|
||||
}
|
||||
|
||||
Future<String> react(
|
||||
String reaction, {
|
||||
required String eventId,
|
||||
required String room,
|
||||
}) async {
|
||||
final settings = ref.read(SettingsController.provider)!;
|
||||
final response = await http.put(
|
||||
settings.homeserver.replace(
|
||||
path:
|
||||
"_matrix/client/v3/rooms/${await getRoomId(room)}/send/m.reaction/${getTxn()}",
|
||||
),
|
||||
headers: await getHeaders(),
|
||||
body: json.encode({
|
||||
"m.relates_to": {
|
||||
"rel_type": "m.annotation",
|
||||
"event_id": eventId,
|
||||
"key": reaction,
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception("Reaction failed for room $room: ${response.body}");
|
||||
}
|
||||
|
||||
return json.decode(response.body)["event_id"];
|
||||
}
|
||||
|
||||
Future<Response> register(Request request) async {
|
||||
final settings = ref.read(SettingsController.provider)!;
|
||||
final registration = Registration.fromJson(
|
||||
json.decode(await request.readAsString()),
|
||||
);
|
||||
|
||||
final response = await http.post(
|
||||
settings.homeserver.replace(
|
||||
path:
|
||||
"_matrix/client/v3/rooms/${await getRoomId(settings.adminRoom)}/send/m.room.message/${getTxn()}",
|
||||
),
|
||||
headers: await getHeaders(),
|
||||
body: json.encode({
|
||||
"msgtype": "m.text",
|
||||
"body":
|
||||
"Signup request from ${registration.username}, email is: ${registration.email}.",
|
||||
}),
|
||||
);
|
||||
final event = await sendMessage("""# Registration request
|
||||
- Username: `${registration.username}`
|
||||
- Email: `${registration.email}`""", room: settings.adminRoom);
|
||||
|
||||
if (response.statusCode != 200) {
|
||||
throw Exception(
|
||||
"Registration failed for ${registration.username}: ${response.body}",
|
||||
);
|
||||
}
|
||||
await react("✅", eventId: event, room: settings.adminRoom);
|
||||
|
||||
return Response.found(settings.successUri);
|
||||
}
|
||||
|
|
|
@ -385,6 +385,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
markdown:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: markdown
|
||||
sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.3.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -19,6 +19,7 @@ dependencies:
|
|||
cli_tools: ^0.6.0
|
||||
args: ^2.7.0
|
||||
enough_mail: ^2.1.6
|
||||
markdown: ^7.3.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.4.6
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue