[PATCH] Add a toggle in account settings for search indexing
authorJoshua Goins <josh@redstrate.com>
Mon, 7 Jul 2025 01:52:01 +0000 (21:52 -0400)
committerAurélien COUDERC <coucouf@debian.org>
Thu, 24 Jul 2025 16:34:20 +0000 (18:34 +0200)
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
src/account/preferences.h
src/content/ui/Settings/AccountPage.qml

index 2b3feeca8d7dad829bb048d892fb884195349a99..0d35a7632a23629ff4469431942a5c132e9085dd 100644 (file)
@@ -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);
index 31463a5e129bdae0cab3ec2b416b7e8f89a4940a..ec1f917a540578fae94c9a14f3e7dae539e8d800 100644 (file)
@@ -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;
 };
index c8612bb548dc45a2af5fb3ae2cd95b890701be18..213f6d820bad0a4869f041b421587f2e56cf94c5 100644 (file)
@@ -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