aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsnap_launcher/bin/whatsiebin1723208 -> 1723552 bytes
-rw-r--r--src/main.cpp6
-rw-r--r--src/mainwindow.cpp34
3 files changed, 35 insertions, 5 deletions
diff --git a/snap_launcher/bin/whatsie b/snap_launcher/bin/whatsie
index 259c5da..268a7ab 100755
--- a/snap_launcher/bin/whatsie
+++ b/snap_launcher/bin/whatsie
Binary files differ
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()