File indexing completed on 2024-04-28 04:59:49

0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu>
0002 // SPDX-License-Identifier: LGPL-2.0-or-later
0003 
0004 #pragma once
0005 
0006 #include <KConfigGroup>
0007 #include <KSharedConfig>
0008 
0009 /**
0010  * Store and retrieve the last message of a room.
0011  */
0012 class RoomLastMessageProvider
0013 {
0014 public:
0015     /**
0016      * Get the global instance of RoomLastMessageProvider.
0017      */
0018     static RoomLastMessageProvider &self();
0019     ~RoomLastMessageProvider();
0020 
0021     /**
0022      * Check if we have the last message content for the specified roomId.
0023      */
0024     bool hasKey(const QString &roomId) const;
0025 
0026     /**
0027      * Read the last message content of the specified roomId.
0028      */
0029     QByteArray read(const QString &roomId) const;
0030 
0031     /**
0032      * Write the last message content for the specified roomId.
0033      */
0034     void write(const QString &roomId, const QByteArray &json);
0035 
0036 private:
0037     RoomLastMessageProvider();
0038 
0039     KSharedConfig::Ptr m_config;
0040     KConfigGroup m_configGroup;
0041 };