diff options
-rwxr-xr-x | snap_launcher/bin/whatsie | bin | 1723208 -> 1723552 bytes | |||
-rw-r--r-- | src/main.cpp | 6 | ||||
-rw-r--r-- | src/mainwindow.cpp | 34 |
3 files changed, 35 insertions, 5 deletions
diff --git a/snap_launcher/bin/whatsie b/snap_launcher/bin/whatsie Binary files differindex 259c5da..268a7ab 100755 --- a/snap_launcher/bin/whatsie +++ b/snap_launcher/bin/whatsie diff --git a/src/main.cpp b/src/main.cpp index ebb0623..679b18e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,9 +51,9 @@ int main(int argc, char *argv[]) QStringList argsList = app.arguments(); qWarning()<<"Launching with argument"<<argsList; foreach (QString argStr, argsList) { - if(argStr.contains("http")){ - qWarning()<<"Link passed as argument"; - window.loadAppWithArgument(argsList.last()); + if(argStr.contains("whatsapp://")){ + qWarning()<<"Link passed as argument"<<argStr; + window.loadAppWithArgument(argStr); } } window.show(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 9219d6f..93ba706 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3,6 +3,7 @@ #include <QInputDialog> #include <QRegularExpression> #include <QStyleHints> +#include <QUrlQuery> #include <QWebEngineNotification> extern QString defaultUserAgentStr; @@ -75,8 +76,37 @@ MainWindow::MainWindow(QWidget *parent) void MainWindow::loadAppWithArgument(const QString arg) { - qWarning()<<"Opening"<<arg; - this->webEngine->page()->load(QUrl(arg)); + //https://faq.whatsapp.com/iphone/how-to-link-to-whatsapp-from-a-different-app/?lang=en + + //The WhatsApp Messenger application + if(arg.contains("://app")){ + qWarning()<<"WhatsApp Messenger application"; + this->show(); //restore app + return; + } + //PASSED SCHEME whatsapp://send?text=Hello%2C%20World!&phone=919568388397" + //CONVERTED URI https://web.whatsapp.com/send?phone=919568388397&text=Hello%2C%20World + //New chat composer + if(arg.contains("send?") || arg.contains("send/?")) + { + QString newArg = arg; + qWarning()<<"New chat composer"; + newArg = newArg.replace("?","&"); + QUrlQuery query(newArg); + qWarning()<<query.hasQueryItem("phone"); + QString phone, phoneStr, text, textStr, urlStr; + //create send url equivalent + phone = query.queryItemValue("phone"); + text = query.queryItemValue("text"); + + phoneStr = phone.isEmpty() ? "" : "phone="+phone; + textStr = text.isEmpty() ? "" : "text="+text; + + urlStr = "https://web.whatsapp.com/send?"+phoneStr+"&"+textStr; + qWarning()<<"Loading"<<urlStr; + this->webEngine->page()->load(QUrl(urlStr)); + return; + } } void MainWindow::updatePageTheme() |