File indexing completed on 2024-05-12 05:22:26

0001 /*
0002  * SPDX-FileCopyrightText: 2021 Daniel Vrátil <dvratil@kde.org>
0003  * SPDX-FileCopyrightText: 2022 Claudio Cambra <claudio.cambra@kde.org>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only
0006  * SPDX-License-Identifier: LGPL-3.0-only
0007  * SPDX-License-Identifier: LicenseRef-KDE-Accepted-LGPL
0008  */
0009 
0010 #include "contactgroupmetadata.h"
0011 #include "peopleservice.h"
0012 
0013 #include <QJsonArray>
0014 #include <QJsonObject>
0015 #include <QJsonValue>
0016 #include <QSharedData>
0017 #include <QDateTime>
0018 
0019 #include <algorithm>
0020 
0021 namespace KGAPI2::People
0022 {
0023 class ContactGroupMetadata::Private : public QSharedData
0024 {
0025 public:
0026     explicit Private() = default;
0027     Private(const Private &) = default;
0028     Private(Private &&) noexcept = delete;
0029     Private &operator=(const Private &) = delete;
0030     Private &operator=(Private &&) noexcept = delete;
0031     ~Private() = default;
0032 
0033     bool operator==(const Private &other) const
0034     {
0035         return updateTime == other.updateTime && deleted == other.deleted;
0036     }
0037 
0038     bool operator!=(const Private &other) const
0039     {
0040         return !(*this == other);
0041     }
0042 
0043     QDateTime updateTime{};
0044     bool deleted{};
0045 };
0046 
0047 ContactGroupMetadata::ContactGroupMetadata()
0048     : d(new Private)
0049 {
0050 }
0051 
0052 ContactGroupMetadata::ContactGroupMetadata(const ContactGroupMetadata &) = default;
0053 ContactGroupMetadata::ContactGroupMetadata(ContactGroupMetadata &&) noexcept = default;
0054 ContactGroupMetadata &ContactGroupMetadata::operator=(const ContactGroupMetadata &) = default;
0055 ContactGroupMetadata &ContactGroupMetadata::operator=(ContactGroupMetadata &&) noexcept = default;
0056 ContactGroupMetadata::~ContactGroupMetadata() = default;
0057 
0058 bool ContactGroupMetadata::operator==(const ContactGroupMetadata &other) const
0059 {
0060     return *d == *other.d;
0061 }
0062 
0063 bool ContactGroupMetadata::operator!=(const ContactGroupMetadata &other) const
0064 {
0065     return !(*this == other);
0066 }
0067 
0068 QDateTime ContactGroupMetadata::updateTime() const
0069 {
0070     return d->updateTime;
0071 }
0072 bool ContactGroupMetadata::deleted() const
0073 {
0074     return d->deleted;
0075 }
0076 
0077 ContactGroupMetadata ContactGroupMetadata::fromJSON(const QJsonObject &obj)
0078 {
0079     ContactGroupMetadata contactGroupMetadata;
0080 
0081     if (!obj.isEmpty()) {
0082         contactGroupMetadata.d->updateTime = obj.value(QStringLiteral("updateTime")).toVariant().toDateTime();
0083         contactGroupMetadata.d->deleted = obj.value(QStringLiteral("deleted")).toBool();
0084     }
0085 
0086     return contactGroupMetadata;
0087 }
0088 
0089 QJsonValue ContactGroupMetadata::toJSON() const
0090 {
0091     QJsonObject obj;
0092 
0093     PeopleUtils::addValueToJsonObjectIfValid(obj, "updateTime", d->updateTime.toString(Qt::ISODate));
0094     PeopleUtils::addValueToJsonObjectIfValid(obj, "deleted", d->deleted);
0095     return obj;
0096 }
0097 
0098 } // namespace KGAPI2::People