matrix: Use labadoor-open and labadoor-common::run_bin()

This commit is contained in:
George Kaklamanos 2023-11-28 18:13:58 +02:00
parent 6ece32b40e
commit 74edd5bdac
No known key found for this signature in database
GPG key ID: C0CAB8A6BDC9399D
2 changed files with 15 additions and 9 deletions

View file

@ -13,24 +13,26 @@ use matrix_sdk::{
}; };
pub struct MatrixArgs { pub struct MatrixArgs {
pub trigger: Binary,
pub username: String, pub username: String,
pub password: String, pub password: String,
pub device_id: Option<String>, pub device_id: Option<String>,
} }
fn open(param: String) { fn open(trigger: Vec<String>, param: String) -> BinaryResult {
use std::io::{self, Write}; let a = labadoor_common::OpenBinaryArgs {
use std::process::Command; method: "matrix".to_string(),
let mut cmd = Command::new("/usr/bin/labadoor-wrapper"); identifier: param,
cmd.arg("matrix").arg(param); resource_shortcut: 1,
let out = cmd.output().expect("Could not run command"); };
io::stdout().write_all(&out.stdout).unwrap(); labadoor_common::run_open(a, trigger)
} }
async fn on_room_message( async fn on_room_message(
event: OriginalSyncMessageLikeEvent<RoomMessageEventContent>, event: OriginalSyncMessageLikeEvent<RoomMessageEventContent>,
room: Room, room: Room,
client: Client, client: Client,
bin: Ctx<Binary>,
) { ) {
if let Room::Joined(room) = room { if let Room::Joined(room) = room {
let msg_body = match event.content.msgtype { let msg_body = match event.content.msgtype {
@ -42,8 +44,10 @@ async fn on_room_message(
} }
if msg_body == "1" { if msg_body == "1" {
open(event.sender.to_string()); let msg = match open(bin.clone(), event.sender.to_string()) {
let content = RoomMessageEventContent::text_plain("Open sesame!"); Ok(msg) | Err(msg) => msg,
};
let content = RoomMessageEventContent::text_plain(msg);
room.send(content, None).await.unwrap(); room.send(content, None).await.unwrap();
} }
if msg_body == "ping" { if msg_body == "ping" {
@ -91,5 +95,6 @@ pub async fn matrix(args: MatrixArgs) {
client.sync_once(SyncSettings::default()).await.unwrap(); client.sync_once(SyncSettings::default()).await.unwrap();
client.add_event_handler(on_room_message); client.add_event_handler(on_room_message);
client.add_event_handler(on_room_invite); client.add_event_handler(on_room_invite);
client.add_event_handler_context(args.trigger);
client.sync(SyncSettings::default()).await.unwrap(); client.sync(SyncSettings::default()).await.unwrap();
} }

View file

@ -3,6 +3,7 @@ trigger = [ "/usr/bin/labadoor", "open" ]
token = "" token = ""
[matrix] [matrix]
trigger = [ "/usr/bin/labadoor", "open" ]
username = "" username = ""
password = "" password = ""
device_id = "" device_id = ""