make qrcodegen optional wow!!!

This commit is contained in:
ouwou
2023-07-09 22:31:21 -04:00
parent b5d85f4958
commit 229555939d
7 changed files with 50 additions and 4 deletions

View File

@@ -11,6 +11,7 @@ option(USE_LIBHANDY "Enable features that require libhandy (default)" ON)
option(ENABLE_VOICE "Enable voice suppport" ON)
option(USE_KEYCHAIN "Store the token in the keychain (default)" ON)
option(ENABLE_NOTIFICATION_SOUNDS "Enable notification sounds (default)" ON)
option(ENABLE_QRCODE_LOGIN "Enable QR code login (default)" ON)
find_package(nlohmann_json REQUIRED)
find_package(CURL)
@@ -61,11 +62,14 @@ target_include_directories(abaddon PUBLIC ${ZLIB_INCLUDE_DIRS})
target_include_directories(abaddon PUBLIC ${SQLite3_INCLUDE_DIRS})
target_include_directories(abaddon PUBLIC ${NLOHMANN_JSON_INCLUDE_DIRS})
add_library(qrcodegen subprojects/qrcodegen/cpp/qrcodegen.hpp subprojects/qrcodegen/cpp/qrcodegen.cpp)
target_include_directories(qrcodegen PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/subprojects/qrcodegen/cpp")
target_link_libraries(abaddon qrcodegen)
if (ENABLE_QRCODE_LOGIN)
add_library(qrcodegen subprojects/qrcodegen/cpp/qrcodegen.hpp subprojects/qrcodegen/cpp/qrcodegen.cpp)
target_include_directories(qrcodegen PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/subprojects/qrcodegen/cpp")
target_link_libraries(abaddon qrcodegen)
target_include_directories(abaddon PUBLIC "subprojects/qrcodegen/cpp")
target_include_directories(abaddon PUBLIC "subprojects/qrcodegen/cpp")
target_compile_definitions(abaddon PRIVATE WITH_QRLOGIN)
endif ()
target_precompile_headers(abaddon PRIVATE <gtkmm.h> src/abaddon.hpp src/util.hpp)

View File

@@ -837,6 +837,7 @@ void Abaddon::ActionSetToken() {
}
void Abaddon::ActionLoginQR() {
#ifdef WITH_QRLOGIN
RemoteAuthDialog dlg(*m_main_window);
auto response = dlg.run();
if (response == Gtk::RESPONSE_OK) {
@@ -847,6 +848,7 @@ void Abaddon::ActionLoginQR() {
ActionConnect();
}
m_main_window->UpdateMenus();
#endif
}
void Abaddon::ActionChannelOpened(Snowflake id, bool expand_to) {

View File

@@ -1,8 +1,14 @@
#ifdef WITH_QRLOGIN
// clang-format off
#include "remoteauthclient.hpp"
#include "http.hpp"
#include <nlohmann/json.hpp>
#include <spdlog/fmt/bin_to_hex.h>
// clang-format on
RemoteAuthClient::RemoteAuthClient()
: m_ws("remote-auth-ws")
, m_log(spdlog::get("remote-auth")) {
@@ -341,3 +347,5 @@ RemoteAuthClient::type_signal_token RemoteAuthClient::signal_token() {
RemoteAuthClient::type_signal_error RemoteAuthClient::signal_error() {
return m_signal_error;
}
#endif

View File

@@ -1,4 +1,9 @@
#pragma once
#ifdef WITH_QRLOGIN
// clang-format off
#include <string>
#include <queue>
#include <spdlog/logger.h>
@@ -6,6 +11,8 @@
#include "discord/waiter.hpp"
#include "discord/websocket.hpp"
// clang-format on
class RemoteAuthClient {
public:
RemoteAuthClient();
@@ -84,3 +91,5 @@ private:
type_signal_token m_signal_token;
type_signal_error m_signal_error;
};
#endif

View File

@@ -1,6 +1,12 @@
#ifdef WITH_QRLOGIN
// clang-format off
#include "remoteauthdialog.hpp"
#include <qrcodegen.hpp>
// clang-format on
RemoteAuthDialog::RemoteAuthDialog(Gtk::Window &parent)
: Gtk::Dialog("Login with QR Code", parent, true)
, m_layout(Gtk::ORIENTATION_VERTICAL)
@@ -122,3 +128,5 @@ void RemoteAuthDialog::OnError(const std::string &error) {
Abaddon::Get().ShowConfirm(error, dynamic_cast<Gtk::Window *>(get_toplevel()));
response(Gtk::RESPONSE_CANCEL);
}
#endif

View File

@@ -1,7 +1,14 @@
#pragma once
#ifdef WITH_QRLOGIN
// clang-format off
#include <gtkmm/dialog.h>
#include "remoteauthclient.hpp"
// clang-format on
class RemoteAuthDialog : public Gtk::Dialog {
public:
RemoteAuthDialog(Gtk::Window &parent);
@@ -27,3 +34,5 @@ private:
std::string m_token;
};
#endif

View File

@@ -206,7 +206,9 @@ void MainWindow::OnDiscordSubmenuPopup() {
m_menu_discord_connect.set_sensitive(!token.empty() && !discord_active);
m_menu_discord_disconnect.set_sensitive(discord_active);
m_menu_discord_set_token.set_sensitive(!discord_active);
#ifdef WITH_QRLOGIN
m_menu_discord_login_qr.set_sensitive(!discord_active);
#endif
m_menu_discord_set_status.set_sensitive(discord_active);
}
@@ -249,6 +251,10 @@ void MainWindow::SetupMenu() {
m_menu_discord_disconnect.set_sensitive(false);
m_menu_discord_set_token.set_label("Set Token");
m_menu_discord_login_qr.set_label("Login with QR Code");
#ifndef WITH_QRLOGIN
m_menu_discord_login_qr.set_sensitive(false);
m_menu_discord_login_qr.set_tooltip_text("Not compiled with support");
#endif
m_menu_discord_set_status.set_label("Set Status");
m_menu_discord_set_status.set_sensitive(false);
m_menu_discord_add_recipient.set_label("Add user to DM");