diff --git a/src/c/gowhatsapp.h b/src/c/gowhatsapp.h
index 95953a4..95d2023 100644
--- a/src/c/gowhatsapp.h
+++ b/src/c/gowhatsapp.h
@@ -18,7 +18,7 @@ void gowhatsapp_login(PurpleAccount *account);
void gowhatsapp_close(PurpleConnection *pc);
// qrcode
-void gowhatsapp_handle_qrcode(PurpleAccount *account, const char *challenge, const char *terminal, void *image_data, size_t image_data_len);
+void gowhatsapp_handle_qrcode(PurpleConnection *pc, const char *challenge, const char *terminal, void *image_data, size_t image_data_len);
void gowhatsapp_close_qrcode(PurpleAccount *account);
// process_message
diff --git a/src/c/options.c b/src/c/options.c
index 3a71e21..35663aa 100644
--- a/src/c/options.c
+++ b/src/c/options.c
@@ -41,13 +41,6 @@ gowhatsapp_add_account_options(GList *account_options)
);
account_options = g_list_append(account_options, option);
- option = purple_account_option_bool_new(
- "Plain-text login",
- GOWHATSAPP_PLAIN_TEXT_LOGIN_OPTION,
- FALSE
- );
- account_options = g_list_append(account_options, option);
-
option = purple_account_option_bool_new(
"Display offline contacts as away",
GOWHATSAPP_FAKE_ONLINE_OPTION,
diff --git a/src/c/qrcode.c b/src/c/qrcode.c
index 961bc8f..7d497a9 100644
--- a/src/c/qrcode.c
+++ b/src/c/qrcode.c
@@ -53,13 +53,25 @@ gowhatsapp_display_qrcode(PurpleAccount *account, const char * challenge, void *
}
void
-gowhatsapp_handle_qrcode(PurpleAccount *account, const char *challenge, const char *terminal, void *image_data, size_t image_data_len)
+gowhatsapp_handle_qrcode(PurpleConnection *pc, const char *challenge, const char *terminal, void *image_data, size_t image_data_len)
{
- if (image_data_len > 0) {
+ PurpleMessageFlags flags = PURPLE_MESSAGE_RECV;
+ PurpleRequestUiOps *ui_ops = purple_request_get_ui_ops();
+ if (!ui_ops->request_fields || image_data_len <= 0) {
+ // The UI hasn't implemented the func we want, just output as a message instead
+ gchar *msg_out;
+ gpointer img_data = g_memdup(image_data, image_data_len);
+ int img_id = purple_imgstore_add_with_id(img_data, image_data_len, NULL);
+ if (img_id >= 0) {
+ msg_out = g_strdup_printf("%s: ![\"%s\"/]()
%s", "Please scan this QR code with your phone", img_id, challenge, terminal);
+ flags |= PURPLE_MESSAGE_IMAGES;
+ } else {
+ msg_out = g_strdup_printf("%s: %s
%s", "Please scan this QR code with your phone", challenge, terminal);
+ }
+ purple_serv_got_im(pc, "Logon QR Code", msg_out, flags, time(NULL));
+ g_free(msg_out);
+ } else {
+ PurpleAccount *account = purple_connection_get_account(pc);
gowhatsapp_display_qrcode(account, challenge, image_data, image_data_len);
}
- if (purple_account_get_bool(account, GOWHATSAPP_PLAIN_TEXT_LOGIN_OPTION, FALSE)) {
- PurpleConnection *pc = purple_account_get_connection(account);
- purple_serv_got_im(pc, "login@whatsmeow", terminal, PURPLE_MESSAGE_RECV, time(NULL));
- }
}
diff --git a/src/go/constants.h b/src/go/constants.h
index d857abe..e20d34e 100644
--- a/src/go/constants.h
+++ b/src/go/constants.h
@@ -25,7 +25,6 @@ CHARCONSTANT(GOWHATSAPP_QRCODE_SIZE_OPTION, "qrcode-size");
CHARCONSTANT(GOWHATSAPP_SEND_RECEIPT_OPTION, "send-receipt");
CHARCONSTANT(GOWHATSAPP_GET_ICONS_OPTION, "get-icons");
CHARCONSTANT(GOWHATSAPP_SPECTRUM_COMPATIBILITY_OPTION, "spectrum-compatibility");
-CHARCONSTANT(GOWHATSAPP_PLAIN_TEXT_LOGIN_OPTION, "plain-text-login");
CHARCONSTANT(GOWHATSAPP_DATABASE_ADDRESS_OPTION, "database-address");
CHARCONSTANT(GOWHATSAPP_DATABASE_ADDRESS_DEFAULT, "file:$purple_user_dir/whatsmeow.db?_foreign_keys=on&_busy_timeout=3000");
diff --git a/src/go/login.go b/src/go/login.go
index 7976275..da6f1a8 100644
--- a/src/go/login.go
+++ b/src/go/login.go
@@ -165,7 +165,7 @@ func (handler *Handler) connect() {
var png []byte
var b strings.Builder
fmt.Fprintf(&b, "Scan this code to log in:\n%s\n", evt.Code)
- qrterminal.Generate(evt.Code, qrterminal.L, &b)
+ qrterminal.GenerateHalfBlock(evt.Code, qrterminal.L, &b)
size := purple_get_int(handler.account, C.GOWHATSAPP_QRCODE_SIZE_OPTION, 256)
if size > 0 {
png, err = qrcode.Encode(evt.Code, qrcode.Medium, size)