From f727e506f4a963fd9a0fe8ccdbe71951da1ddba5 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 6 Jul 2025 21:52:01 -0400 Subject: [PATCH] [PATCH] Add a toggle in account settings for search indexing This was added in Mastodon 4.3.0 but I missed it. (cherry picked from commit 39622f624be636fd0ca8d478ef27632eb37ad428) Gbp-Pq: Name upstream_b319e681_Add-a-toggle-in-account-settings-for-search-indexing.patch --- src/account/preferences.cpp | 19 +++++++++++++++++++ src/account/preferences.h | 20 ++++++++++++++++++++ src/content/ui/Settings/AccountPage.qml | 9 +++++++++ 3 files changed, 48 insertions(+) diff --git a/src/account/preferences.cpp b/src/account/preferences.cpp index 2b3feec..0d35a76 100644 --- a/src/account/preferences.cpp +++ b/src/account/preferences.cpp @@ -26,11 +26,13 @@ Preferences::Preferences(AbstractAccount *account) m_defaultVisibility = Post::stringToVisibility(obj[QStringLiteral("posting:default:visibility")].toString()); m_extendSpoiler = obj[QStringLiteral("reading:expand:spoilers")].toBool(); m_extendMedia = obj[QStringLiteral("reading:expand:media")].toString(); + m_indexable = obj[QStringLiteral("indexable")].toBool(); Q_EMIT defaultVisibilityChanged(); Q_EMIT defaultSensitiveChanged(); Q_EMIT defaultLanguageChanged(); Q_EMIT extendMediaChanged(); Q_EMIT extendSpoilerChanged(); + Q_EMIT indexableChanged(); }); }); } @@ -100,6 +102,23 @@ bool Preferences::extendSpoiler() const return m_extendSpoiler; } +bool Preferences::indexable() const +{ + return m_indexable; +} + +void Preferences::setIndexable(bool indexable) +{ + if (indexable == m_indexable) { + return; + } + + m_indexable = indexable; + Q_EMIT indexableChanged(); + + setPreferencesField(QStringLiteral("indexable"), indexable ? QStringLiteral("true") : QStringLiteral("false")); +} + void Preferences::setPreferencesField(const QString &name, const QString &value) { const auto multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType); diff --git a/src/account/preferences.h b/src/account/preferences.h index 31463a5..ec1f917 100644 --- a/src/account/preferences.h +++ b/src/account/preferences.h @@ -17,6 +17,7 @@ class Preferences final : public QObject Q_PROPERTY(QString defaultLanguage READ defaultLanguage WRITE setDefaultLanguage NOTIFY defaultLanguageChanged) Q_PROPERTY(QString extendMedia READ extendMedia NOTIFY extendMediaChanged) Q_PROPERTY(bool extendSpoiler READ extendSpoiler NOTIFY extendSpoilerChanged) + Q_PROPERTY(bool indexable READ indexable WRITE setIndexable NOTIFY indexableChanged) public: explicit Preferences(AbstractAccount *account); @@ -72,6 +73,19 @@ public: */ [[nodiscard]] bool extendSpoiler() const; + /** + * @return Whether public posts should be indexed. + * @see setIndexable() + */ + [[nodiscard]] bool indexable() const; + + /** + * @brief Set whether public posts should be indexed. + * @param indexable Whether or not public posts are indexed. + * @see indexable() + */ + void setIndexable(bool indexable); + Q_SIGNALS: /** * @brief Emitted when the default status visibility preference has been changed. @@ -101,6 +115,11 @@ Q_SIGNALS: */ void extendSpoilerChanged(); + /** + * @brief Emitted when the indexable preference has been changed. + */ + void indexableChanged(); + private: void setPreferencesField(const QString &name, const QString &value); @@ -111,4 +130,5 @@ private: QString m_defaultLanguage; QString m_extendMedia; bool m_extendSpoiler; + bool m_indexable; }; diff --git a/src/content/ui/Settings/AccountPage.qml b/src/content/ui/Settings/AccountPage.qml index c8612bb..213f6d8 100644 --- a/src/content/ui/Settings/AccountPage.qml +++ b/src/content/ui/Settings/AccountPage.qml @@ -173,6 +173,15 @@ Kirigami.Page { FormCard.FormDelegateSeparator { } + FormCard.FormSwitchDelegate { + text: i18nc("@label Account preferences", "Include public posts in search results") + checked: AccountManager.selectedAccount.preferences.indexable + onToggled: AccountManager.selectedAccount.preferences.indexable = checked + } + + FormCard.FormDelegateSeparator { + } + FormCard.FormButtonDelegate { text: i18nc("@label Account preferences", "Default post language") description: Qt.locale(AccountManager.selectedAccount.preferences.defaultLanguage).nativeLanguageName -- 2.30.2