From 1d5bf56cf9dc8aea4aa849ef5f0f580c1eae4cdd Mon Sep 17 00:00:00 2001 From: Thulinma Date: Thu, 16 Sep 2021 01:41:55 +0200 Subject: Improvements for linking to events - Fixes scrolling to an event not being reliable - Adds new /goto command that can open URLs, go to events, or go to message indexes. - Refactored ChatPage::handleMatrixUri() to contain the handling originally in Nheko::openLink(), and makes it return a boolean based on whether the URL was handled internally or not. --- src/timeline/InputBar.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/timeline/InputBar.cpp') diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp index ece9db62..a6fbab78 100644 --- a/src/timeline/InputBar.cpp +++ b/src/timeline/InputBar.cpp @@ -630,6 +630,23 @@ InputBar::command(QString command, QString args) notice(args, false); } else if (command == "rainbownotice") { notice(args, true); + } else if (command == "goto") { + // Goto has three different modes: + // 1 - Going directly to a given event ID + if (args[0] == '$') { + room->showEvent(args); + return; + } + // 2 - Going directly to a given message index + if (args[0] >= '0' && args[0] <= '9') { + room->showEvent(args); + return; + } + // 3 - Matrix URI handler, as if you clicked the URI + if (ChatPage::instance()->handleMatrixUri(args)) { + return; + } + nhlog::net()->error("Could not resolve goto: {}", args.toStdString()); } } -- cgit 1.5.1