diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2023-08-25 20:36:36 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2023-08-25 20:36:36 -0400 |
commit | ccabaa44d6954812e7a8582246d3aa14a749ccc9 (patch) | |
tree | 3ecc78516971b709419e93bc75f2709a544c3f40 /src | |
parent | 2bc709bf3ff54b0104fb0bd8e8d80ffd1ba84586 (diff) | |
parent | eea5987f379cd76786ace382da09dd687ecca28a (diff) | |
download | abaddon-portaudio-ccabaa44d6954812e7a8582246d3aa14a749ccc9.tar.gz abaddon-portaudio-ccabaa44d6954812e7a8582246d3aa14a749ccc9.zip |
Merge branch 'master' into rnnoise
Diffstat (limited to 'src')
-rw-r--r-- | src/audio/manager.cpp | 3 | ||||
-rw-r--r-- | src/components/chatinput.cpp | 5 | ||||
-rw-r--r-- | src/discord/objects.cpp | 10 | ||||
-rw-r--r-- | src/discord/voiceclient.cpp | 16 | ||||
-rw-r--r-- | src/discord/websocket.cpp | 3 | ||||
-rw-r--r-- | src/platform.cpp | 77 | ||||
-rw-r--r-- | src/remoteauth/remoteauthclient.cpp | 8 | ||||
-rw-r--r-- | src/util.cpp | 5 | ||||
-rw-r--r-- | src/windows/voicesettingswindow.cpp | 2 |
9 files changed, 99 insertions, 30 deletions
diff --git a/src/audio/manager.cpp b/src/audio/manager.cpp index 2113f05..20089d2 100644 --- a/src/audio/manager.cpp +++ b/src/audio/manager.cpp @@ -83,7 +83,8 @@ AudioManager::AudioManager() { return; } - spdlog::get("audio")->info("Audio backend: {}", ma_get_backend_name(m_context.backend)); + const auto backend_name = ma_get_backend_name(m_context.backend); + spdlog::get("audio")->info("Audio backend: {}", backend_name); Enumerate(); diff --git a/src/components/chatinput.cpp b/src/components/chatinput.cpp index 1133302..24fc22b 100644 --- a/src/components/chatinput.cpp +++ b/src/components/chatinput.cpp @@ -149,11 +149,6 @@ void ChatInputTextContainer::ShowFileChooser() { } }); - auto filter_all = Gtk::FileFilter::create(); - filter_all->set_name("All files (*.*)"); - filter_all->add_pattern("*.*"); - dlg->add_filter(filter_all); - dlg->run(); } diff --git a/src/discord/objects.cpp b/src/discord/objects.cpp index cb0a685..4ad17c3 100644 --- a/src/discord/objects.cpp +++ b/src/discord/objects.cpp @@ -27,7 +27,7 @@ void from_json(const nlohmann::json &j, MessageDeleteBulkData &m) { void from_json(const nlohmann::json &j, GuildMemberListUpdateMessage::GroupItem &m) { m.Type = "group"; JS_D("id", m.ID); - JS_D("count", m.Count); + JS_ON("count", m.Count); } GuildMember GuildMemberListUpdateMessage::MemberItem::GetAsMemberData() const { @@ -54,16 +54,16 @@ void from_json(const nlohmann::json &j, GuildMemberListUpdateMessage::OpObject & m.Items.emplace(); JS_D("range", m.Range); for (const auto &ij : j.at("items")) { - if (ij.contains("group")) - m.Items->push_back(std::make_unique<GuildMemberListUpdateMessage::GroupItem>(ij.at("group"))); - else if (ij.contains("member")) + if (ij.contains("member")) { m.Items->push_back(std::make_unique<GuildMemberListUpdateMessage::MemberItem>(ij.at("member"))); + } } } else if (m.Op == "UPDATE") { JS_D("index", m.Index); const auto &ij = j.at("item"); - if (ij.contains("member")) + if (ij.contains("member")) { m.OpItem = std::make_unique<GuildMemberListUpdateMessage::MemberItem>(ij.at("member")); + } } } diff --git a/src/discord/voiceclient.cpp b/src/discord/voiceclient.cpp index e9814b6..e4b56bd 100644 --- a/src/discord/voiceclient.cpp +++ b/src/discord/voiceclient.cpp @@ -182,7 +182,8 @@ void DiscordVoiceClient::Start() { void DiscordVoiceClient::Stop() { if (!IsConnected() && !IsConnecting()) { - m_log->warn("Requested stop while not connected (from {})", GetStateName(m_state)); + const auto state_name = GetStateName(m_state); + m_log->warn("Requested stop while not connected (from {})", state_name); return; } @@ -264,7 +265,8 @@ void DiscordVoiceClient::OnGatewayMessage(const std::string &str) { HandleGatewaySpeaking(msg); break; default: - m_log->warn("Unhandled opcode: {}", static_cast<int>(msg.Opcode)); + const auto opcode_int = static_cast<int>(msg.Opcode); + m_log->warn("Unhandled opcode: {}", opcode_int); } } @@ -318,7 +320,8 @@ void DiscordVoiceClient::HandleGatewayReady(const VoiceGatewayMessage &m) { void DiscordVoiceClient::HandleGatewaySessionDescription(const VoiceGatewayMessage &m) { VoiceSessionDescriptionData d = m.Data; - m_log->debug("Received session description (mode: {}) (key: {:ns}) ", d.Mode, spdlog::to_hex(d.SecretKey.begin(), d.SecretKey.end())); + const auto key_hex = spdlog::to_hex(d.SecretKey.begin(), d.SecretKey.end()); + m_log->debug("Received session description (mode: {}) (key: {:ns}) ", d.Mode, key_hex); VoiceSpeakingMessage msg; msg.Delay = 0; @@ -379,7 +382,7 @@ void DiscordVoiceClient::Discovery() { m_udp.Send(payload.data(), payload.size()); constexpr int MAX_TRIES = 100; - for (int i = 0; i < MAX_TRIES; i++) { + for (int i = 1; i <= MAX_TRIES; i++) { const auto response = m_udp.Receive(); if (response.size() >= 74 && response[0] == 0x00 && response[1] == 0x02) { const char *ip = reinterpret_cast<const char *>(response.data() + 8); @@ -388,7 +391,7 @@ void DiscordVoiceClient::Discovery() { SelectProtocol(ip, port); break; } else { - m_log->error("Received non-discovery packet after sending request (try {}/{})", i + 1, MAX_TRIES); + m_log->error("Received non-discovery packet after sending request (try {}/{})", i, MAX_TRIES); } } } @@ -451,7 +454,8 @@ void DiscordVoiceClient::KeepaliveThread() { } void DiscordVoiceClient::SetState(State state) { - m_log->debug("Changing state to {}", GetStateName(state)); + const auto state_name = GetStateName(state); + m_log->debug("Changing state to {}", state_name); m_state = state; m_signal_state_update.emit(state); } diff --git a/src/discord/websocket.cpp b/src/discord/websocket.cpp index cdc4db1..0c79f25 100644 --- a/src/discord/websocket.cpp +++ b/src/discord/websocket.cpp @@ -74,7 +74,8 @@ void Websocket::OnMessage(const ix::WebSocketMessagePtr &msg) { m_open_dispatcher.emit(); } break; case ix::WebSocketMessageType::Close: { - m_log->debug("Received close frame, dispatching. {} ({}){}", msg->closeInfo.code, msg->closeInfo.reason, msg->closeInfo.remote ? " Remote" : ""); + const auto remote = msg->closeInfo.remote ? " Remote" : ""; + m_log->debug("Received close frame, dispatching. {} ({}){}", msg->closeInfo.code, msg->closeInfo.reason, remote); m_close_info = msg->closeInfo; m_close_dispatcher.emit(); } break; diff --git a/src/platform.cpp b/src/platform.cpp index 0117e17..0a69721 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -103,7 +103,7 @@ std::string Platform::FindResourceFolder() { } } - puts("cant find a resources folder, will try to load from cwd"); + spdlog::get("discord")->warn("cant find a resources folder, will try to load from cwd"); found_path = "."; found = true; return found_path; @@ -133,7 +133,7 @@ std::string Platform::FindConfigFile() { } // fallback to cwd if cant find + cant make in ~/.config - puts("can't find configuration file!"); + spdlog::get("discord")->warn("can't find configuration file!"); return "./abaddon.ini"; } @@ -147,13 +147,78 @@ std::string Platform::FindStateCacheFolder() { if (util::IsFolder(home_path)) return home_path; } - puts("can't find cache folder!"); + spdlog::get("discord")->warn("can't find cache folder!"); return "."; } +#elif defined(__APPLE__) +#include <CoreFoundation/CoreFoundation.h> +#include <pwd.h> +#include <sys/param.h> +#include <sys/stat.h> +std::string Platform::FindResourceFolder() { + static std::string found_path; + static bool found = false; + if (found) return found_path; + + CFURLRef resourceURL = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); + char resourcePath[PATH_MAX]; + if (CFURLGetFileSystemRepresentation(resourceURL, true, (UInt8 *)resourcePath, PATH_MAX)) { + if (resourceURL != NULL) { + CFRelease(resourceURL); + } + found_path = resourcePath; + found = true; + return found_path; + } + + spdlog::get("discord")->warn("cant find a resources folder, will try to load from cwd"); + found_path = "."; + found = true; + return found_path; +} + +std::string Platform::FindConfigFile() { + const auto cfg = std::getenv("ABADDON_CONFIG"); + if (cfg != nullptr) return cfg; + + passwd *home = getpwuid(getuid()); + const char *homeDir = home->pw_dir; + + char appSupportPath[PATH_MAX]; + snprintf(appSupportPath, sizeof(appSupportPath), "%s/Library/Application Support", homeDir); + + char homefolder_path[PATH_MAX]; + snprintf(homefolder_path, sizeof(homefolder_path), "%s/%s", appSupportPath, "com.github.uowuo.abaddon"); + + if (mkdir(homefolder_path, 0755) == 0) { + spdlog::get("discord")->warn("created Application Support dir"); + } + + char home_path[PATH_MAX]; + snprintf(home_path, sizeof(home_path), "%s/%s", homefolder_path, "/abaddon.ini"); + + return home_path; +} + +std::string Platform::FindStateCacheFolder() { + + passwd *home = getpwuid(getuid()); + const char *homeDir = home->pw_dir; + + char appSupportPath[PATH_MAX]; + snprintf(appSupportPath, sizeof(appSupportPath), "%s/Library/Application Support", homeDir); + + char home_path[PATH_MAX]; + snprintf(home_path, sizeof(home_path), "%s/%s", appSupportPath, "com.github.uowuo.abaddon"); + + return home_path; +} + + #else std::string Platform::FindResourceFolder() { - puts("unknown OS, trying to load resources from cwd"); + spdlog::get("discord")->warn("unknown OS, trying to load resources from cwd"); return "."; } @@ -161,12 +226,12 @@ std::string Platform::FindConfigFile() { const auto x = std::getenv("ABADDON_CONFIG"); if (x != nullptr) return x; - puts("unknown OS, trying to load config from cwd"); + spdlog::get("discord")->warn("unknown OS, trying to load config from cwd"); return "./abaddon.ini"; } std::string Platform::FindStateCacheFolder() { - puts("unknown OS, setting state cache folder to cwd"); + spdlog::get("discord")->warn("unknown OS, setting state cache folder to cwd"); return "."; } #endif diff --git a/src/remoteauth/remoteauthclient.cpp b/src/remoteauth/remoteauthclient.cpp index 7653b78..5103c8d 100644 --- a/src/remoteauth/remoteauthclient.cpp +++ b/src/remoteauth/remoteauthclient.cpp @@ -111,9 +111,10 @@ void RemoteAuthClient::HandleGatewayPendingTicket(const nlohmann::json &j) { const auto encrypted_payload = Glib::Base64::decode(j.at("encrypted_user_payload").get<std::string>()); const auto payload = Decrypt(reinterpret_cast<const unsigned char *>(encrypted_payload.data()), encrypted_payload.size()); - m_log->trace("User payload: {}", std::string(payload.begin(), payload.end())); + const auto payload_str = std::string(payload.begin(), payload.end()); + m_log->trace("User payload: {}", payload_str); - const std::vector<Glib::ustring> user_info = Glib::Regex::split_simple(":", std::string(payload.begin(), payload.end())); + const std::vector<Glib::ustring> user_info = Glib::Regex::split_simple(":", payload_str); Snowflake user_id; std::string discriminator; std::string avatar_hash; @@ -140,7 +141,8 @@ void RemoteAuthClient::HandleGatewayCancel(const nlohmann::json &j) { void RemoteAuthClient::OnRemoteAuthLoginResponse(const std::optional<std::string> &encrypted_token, DiscordError err) { if (!encrypted_token.has_value()) { - m_log->error("Remote auth login failed: {}", static_cast<int>(err)); + const auto err_int = static_cast<int>(err); + m_log->error("Remote auth login failed: {}", err_int); if (err == DiscordError::CAPTCHA_REQUIRED) { m_signal_error.emit("Discord is requiring a captcha. You must use a web browser to log in."); } else { diff --git a/src/util.cpp b/src/util.cpp index 8d21ff4..ae948ea 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -160,7 +160,10 @@ std::string GetExtension(std::string url) { } bool IsURLViewableImage(const std::string &url) { - const auto ext = GetExtension(url); + std::string lw_url = url; + std::transform(lw_url.begin(), lw_url.end(), lw_url.begin(), ::tolower); + + const auto ext = GetExtension(lw_url); static const char *exts[] = { ".jpeg", ".jpg", ".png", nullptr }; diff --git a/src/windows/voicesettingswindow.cpp b/src/windows/voicesettingswindow.cpp index 3749986..97f77b5 100644 --- a/src/windows/voicesettingswindow.cpp +++ b/src/windows/voicesettingswindow.cpp @@ -35,7 +35,6 @@ VoiceSettingsWindow::VoiceSettingsWindow() m_encoding_mode.signal_changed().connect([this]() { const auto mode = m_encoding_mode.get_active_text(); auto &audio = Abaddon::Get().GetAudio(); - spdlog::get("audio")->debug("Chose encoding mode: {}", mode.c_str()); if (mode == "Voice") { audio.SetEncodingApplication(OPUS_APPLICATION_VOIP); } else if (mode == "Music") { @@ -67,7 +66,6 @@ VoiceSettingsWindow::VoiceSettingsWindow() m_signal.signal_changed().connect([this]() { const auto signal = m_signal.get_active_text(); auto &audio = Abaddon::Get().GetAudio(); - spdlog::get("audio")->debug("Chose signal hint: {}", signal.c_str()); if (signal == "Auto") { audio.SetSignalHint(OPUS_AUTO); } else if (signal == "Voice") { |