From b28fa86e6ab633b2d3d9bfdb4642c661ff8c45fc Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Wed, 26 Oct 2022 01:10:35 +0200 Subject: Enable -Wconversion --- src/Cache.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index a83b73f7..4f1fed1c 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -3777,9 +3777,9 @@ Cache::spaces() std::string_view room_data; if (roomsDb_.get(txn, space_id, room_data)) { RoomInfo tmp = nlohmann::json::parse(std::move(room_data)).get(); - ret.insert(QString::fromUtf8(space_id.data(), (qsizetype)space_id.size()), tmp); + ret.insert(QString::fromUtf8(space_id.data(), (int)space_id.size()), tmp); } else { - ret.insert(QString::fromUtf8(space_id.data(), (qsizetype)space_id.size()), + ret.insert(QString::fromUtf8(space_id.data(), (int)space_id.size()), std::nullopt); } } @@ -4938,7 +4938,7 @@ to_json(nlohmann::json &obj, const GroupSessionData &msg) void from_json(const nlohmann::json &obj, GroupSessionData &msg) { - msg.message_index = obj.at("message_index").get(); + msg.message_index = obj.at("message_index").get(); msg.timestamp = obj.value("ts", 0ULL); msg.trusted = obj.value("trust", true); -- cgit 1.5.1 From d8669ccf3d4429e44caa87e2592b3bc3afa4e41c Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Fri, 28 Oct 2022 01:42:24 +0200 Subject: Turn metasync and sync back on for the database to account for bad filesystems --- src/Cache.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index 4f1fed1c..e090e40d 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -293,7 +293,10 @@ Cache::setup() // NOTE(Nico): We may want to use (MDB_MAPASYNC | MDB_WRITEMAP) in the future, but // it can really mess up our database, so we shouldn't. For now, hopefully // NOMETASYNC is fast enough. - env_.open(cacheDirectory_.toStdString().c_str(), MDB_NOMETASYNC | MDB_NOSYNC); + // + // 2022-10-28: Disable the nosync flags again in the hope to crack down on some database + // corruption. + env_.open(cacheDirectory_.toStdString().c_str()); //, MDB_NOMETASYNC | MDB_NOSYNC); } catch (const lmdb::error &e) { if (e.code() != MDB_VERSION_MISMATCH && e.code() != MDB_INVALID) { throw std::runtime_error("LMDB initialization failed" + std::string(e.what())); -- cgit 1.5.1 From 676a6506cbf92c9a31fa4f382861630ede64187e Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 1 Nov 2022 20:58:01 +0100 Subject: Speedup sending encrypted messages after metasync was reenabled Calling fsync everytime we save to the db is slow, which is actually fairly noticeable in some larger E2EE rooms. Speed that up slightly by batching the olm session persisting. --- src/Cache.cpp | 23 ++++++++ src/Cache_p.h | 2 + src/encryption/Olm.cpp | 149 ++++++++++++++++++++++++++----------------------- 3 files changed, 105 insertions(+), 69 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index e090e40d..2784cf50 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -912,6 +912,29 @@ Cache::getMegolmSessionData(const MegolmSessionIndex &index) // OLM sessions. // +void +Cache::saveOlmSessions(std::vector> sessions, + uint64_t timestamp) +{ + using namespace mtx::crypto; + + auto txn = lmdb::txn::begin(env_); + for (const auto &[curve25519, session] : sessions) { + auto db = getOlmSessionsDb(txn, curve25519); + + const auto pickled = pickle(session.get(), pickle_secret_); + const auto session_id = mtx::crypto::session_id(session.get()); + + StoredOlmSession stored_session; + stored_session.pickled_session = pickled; + stored_session.last_message_ts = timestamp; + + db.put(txn, session_id, nlohmann::json(stored_session).dump()); + } + + txn.commit(); +} + void Cache::saveOlmSession(const std::string &curve25519, mtx::crypto::OlmSessionPtr session, diff --git a/src/Cache_p.h b/src/Cache_p.h index 1694adb7..742e4aab 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -277,6 +277,8 @@ public: void saveOlmSession(const std::string &curve25519, mtx::crypto::OlmSessionPtr session, uint64_t timestamp); + void saveOlmSessions(std::vector> sessions, + uint64_t timestamp); std::vector getOlmSessions(const std::string &curve25519); std::optional getOlmSession(const std::string &curve25519, const std::string &session_id); diff --git a/src/encryption/Olm.cpp b/src/encryption/Olm.cpp index 7ada2f92..a9d5b1c2 100644 --- a/src/encryption/Olm.cpp +++ b/src/encryption/Olm.cpp @@ -1299,78 +1299,83 @@ send_encrypted_to_device_messages(const std::mapidentity_keys().curve25519; - for (const auto &[user, devices] : targets) { - auto deviceKeys = cache::client()->userKeys(user); + { + auto currentTime = QDateTime::currentSecsSinceEpoch(); + std::vector> sessionsToPersist; - // no keys for user, query them - if (!deviceKeys) { - keysToQuery[user] = devices; - continue; - } + for (const auto &[user, devices] : targets) { + auto deviceKeys = cache::client()->userKeys(user); - auto deviceTargets = devices; - if (devices.empty()) { - deviceTargets.clear(); - deviceTargets.reserve(deviceKeys->device_keys.size()); - for (const auto &[device, keys] : deviceKeys->device_keys) { - (void)keys; - deviceTargets.push_back(device); + // no keys for user, query them + if (!deviceKeys) { + keysToQuery[user] = devices; + continue; } - } - for (const auto &device : deviceTargets) { - if (!deviceKeys->device_keys.count(device)) { - keysToQuery[user] = {}; - break; + auto deviceTargets = devices; + if (devices.empty()) { + deviceTargets.clear(); + deviceTargets.reserve(deviceKeys->device_keys.size()); + for (const auto &[device, keys] : deviceKeys->device_keys) { + (void)keys; + deviceTargets.push_back(device); + } } - auto d = deviceKeys->device_keys.at(device); + for (const auto &device : deviceTargets) { + if (!deviceKeys->device_keys.count(device)) { + keysToQuery[user] = {}; + break; + } - if (!d.keys.count("curve25519:" + device) || !d.keys.count("ed25519:" + device)) { - nhlog::crypto()->warn("Skipping device {} since it has no keys!", device); - continue; - } + const auto &d = deviceKeys->device_keys.at(device); - auto device_curve = d.keys.at("curve25519:" + device); - if (device_curve == our_curve) { - nhlog::crypto()->warn("Skipping our own device, since sending " - "ourselves olm messages makes no sense."); - continue; - } + if (!d.keys.count("curve25519:" + device) || !d.keys.count("ed25519:" + device)) { + nhlog::crypto()->warn("Skipping device {} since it has no keys!", device); + continue; + } - auto session = cache::getLatestOlmSession(device_curve); - if (!session || force_new_session) { - auto currentTime = QDateTime::currentSecsSinceEpoch(); - if (rateLimit.value(QPair(user, device)) + 60 * 60 * 10 < currentTime) { - claims.one_time_keys[user][device] = mtx::crypto::SIGNED_CURVE25519; - pks[user][device].ed25519 = d.keys.at("ed25519:" + device); - pks[user][device].curve25519 = d.keys.at("curve25519:" + device); + auto device_curve = d.keys.at("curve25519:" + device); + if (device_curve == our_curve) { + nhlog::crypto()->warn("Skipping our own device, since sending " + "ourselves olm messages makes no sense."); + continue; + } - rateLimit.insert(QPair(user, device), currentTime); - } else { - nhlog::crypto()->warn("Not creating new session with {}:{} " - "because of rate limit", - user, - device); + auto session = cache::getLatestOlmSession(device_curve); + if (!session || force_new_session) { + if (rateLimit.value(QPair(user, device)) + 60 * 60 * 10 < currentTime) { + claims.one_time_keys[user][device] = mtx::crypto::SIGNED_CURVE25519; + pks[user][device].ed25519 = d.keys.at("ed25519:" + device); + pks[user][device].curve25519 = d.keys.at("curve25519:" + device); + + rateLimit.insert(QPair(user, device), currentTime); + } else { + nhlog::crypto()->warn("Not creating new session with {}:{} " + "because of rate limit", + user, + device); + } + continue; } - continue; - } - messages[mtx::identifiers::parse(user)][device] = - olm::client() - ->create_olm_encrypted_content(session->get(), - ev_json, - UserId(user), - d.keys.at("ed25519:" + device), - device_curve) - .get(); + messages[mtx::identifiers::parse(user)][device] = + olm::client() + ->create_olm_encrypted_content(session->get(), + ev_json, + UserId(user), + d.keys.at("ed25519:" + device), + device_curve) + .get(); + sessionsToPersist.emplace_back(d.keys.at("curve25519:" + device), + std::move(*session)); + } + } + if (!sessionsToPersist.empty()) { try { - nhlog::crypto()->debug("Updated olm session: {}", - mtx::crypto::session_id(session->get())); - cache::saveOlmSession(d.keys.at("curve25519:" + device), - std::move(*session), - QDateTime::currentMSecsSinceEpoch()); + nhlog::crypto()->debug("Updated olm sessions: {}", sessionsToPersist.size()); + cache::client()->saveOlmSessions(std::move(sessionsToPersist), currentTime); } catch (const lmdb::error &e) { nhlog::db()->critical("failed to save outbound olm session: {}", e.what()); } catch (const mtx::crypto::olm_exception &e) { @@ -1395,6 +1400,9 @@ send_encrypted_to_device_messages(const std::map> messages; + auto currentTime = QDateTime::currentSecsSinceEpoch(); + std::vector> sessionsToPersist; + for (const auto &[user_id, retrieved_devices] : res.one_time_keys) { nhlog::net()->debug("claimed keys for {}", user_id); if (retrieved_devices.size() == 0) { @@ -1440,21 +1448,24 @@ send_encrypted_to_device_messages(const std::map(); - try { - nhlog::crypto()->debug("Updated olm session: {}", - mtx::crypto::session_id(session.get())); - cache::saveOlmSession( - id_key, std::move(session), QDateTime::currentMSecsSinceEpoch()); - } catch (const lmdb::error &e) { - nhlog::db()->critical("failed to save outbound olm session: {}", e.what()); - } catch (const mtx::crypto::olm_exception &e) { - nhlog::crypto()->critical("failed to pickle outbound olm session: {}", - e.what()); - } + sessionsToPersist.emplace_back(id_key, std::move(session)); } nhlog::net()->info("send_to_device: {}", user_id); } + if (!sessionsToPersist.empty()) { + try { + nhlog::crypto()->debug("Updated (new) olm sessions: {}", + sessionsToPersist.size()); + cache::client()->saveOlmSessions(std::move(sessionsToPersist), currentTime); + } catch (const lmdb::error &e) { + nhlog::db()->critical("failed to save outbound olm session: {}", e.what()); + } catch (const mtx::crypto::olm_exception &e) { + nhlog::crypto()->critical("failed to pickle outbound olm session: {}", + e.what()); + } + } + if (!messages.empty()) http::client()->send_to_device( http::client()->generate_txn_id(), messages, [](mtx::http::RequestErr err) { -- cgit 1.5.1 From 54931cb21b080d079a80978e88e8e79e6c43196f Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 1 Nov 2022 21:13:11 +0100 Subject: Optimize fetching olm session from the db --- src/Cache.cpp | 53 ++++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index 2784cf50..cb4ee0b0 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -962,19 +962,20 @@ Cache::getOlmSession(const std::string &curve25519, const std::string &session_i { using namespace mtx::crypto; - auto txn = lmdb::txn::begin(env_); - auto db = getOlmSessionsDb(txn, curve25519); + try { + auto txn = ro_txn(env_); + auto db = getOlmSessionsDb(txn, curve25519); - std::string_view pickled; - bool found = db.get(txn, session_id, pickled); + std::string_view pickled; + bool found = db.get(txn, session_id, pickled); - txn.commit(); + if (found) { + auto data = nlohmann::json::parse(pickled).get(); + return unpickle(data.pickled_session, pickle_secret_); + } - if (found) { - auto data = nlohmann::json::parse(pickled).get(); - return unpickle(data.pickled_session, pickle_secret_); + } catch (...) { } - return std::nullopt; } @@ -983,26 +984,28 @@ Cache::getLatestOlmSession(const std::string &curve25519) { using namespace mtx::crypto; - auto txn = lmdb::txn::begin(env_); - auto db = getOlmSessionsDb(txn, curve25519); - - std::string_view session_id, pickled_session; + try { + auto txn = ro_txn(env_); + auto db = getOlmSessionsDb(txn, curve25519); - std::optional currentNewest; + std::string_view session_id, pickled_session; - auto cursor = lmdb::cursor::open(txn, db); - while (cursor.get(session_id, pickled_session, MDB_NEXT)) { - auto data = nlohmann::json::parse(pickled_session).get(); - if (!currentNewest || currentNewest->last_message_ts < data.last_message_ts) - currentNewest = data; - } - cursor.close(); + std::optional currentNewest; - txn.commit(); + auto cursor = lmdb::cursor::open(txn, db); + while (cursor.get(session_id, pickled_session, MDB_NEXT)) { + auto data = nlohmann::json::parse(pickled_session).get(); + if (!currentNewest || currentNewest->last_message_ts < data.last_message_ts) + currentNewest = data; + } + cursor.close(); - return currentNewest ? std::optional(unpickle(currentNewest->pickled_session, - pickle_secret_)) - : std::nullopt; + return currentNewest ? std::optional(unpickle(currentNewest->pickled_session, + pickle_secret_)) + : std::nullopt; + } catch (...) { + return std::nullopt; + } } std::vector -- cgit 1.5.1 From 231bebba44d3c79834d2b31677a21d46b7ca7076 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 1 Nov 2022 21:26:31 +0100 Subject: The hybris of committing a line without linting --- src/Cache.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index cb4ee0b0..3426ccfe 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -964,7 +964,7 @@ Cache::getOlmSession(const std::string &curve25519, const std::string &session_i try { auto txn = ro_txn(env_); - auto db = getOlmSessionsDb(txn, curve25519); + auto db = getOlmSessionsDb(txn, curve25519); std::string_view pickled; bool found = db.get(txn, session_id, pickled); @@ -986,7 +986,7 @@ Cache::getLatestOlmSession(const std::string &curve25519) try { auto txn = ro_txn(env_); - auto db = getOlmSessionsDb(txn, curve25519); + auto db = getOlmSessionsDb(txn, curve25519); std::string_view session_id, pickled_session; -- cgit 1.5.1 From 76347f1c6f3aa41654fb989d1726d7ce4b56795e Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Thu, 3 Nov 2022 23:26:59 +0100 Subject: Continue fetching past messages when searching --- src/Cache.cpp | 98 ++++++++++++++++++++++------------------- src/timeline/EventStore.cpp | 11 ++--- src/timeline/TimelineFilter.cpp | 32 ++++++++++++-- src/timeline/TimelineFilter.h | 4 ++ src/timeline/TimelineModel.cpp | 1 + src/timeline/TimelineModel.h | 2 + 6 files changed, 94 insertions(+), 54 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index 3426ccfe..b577f201 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -1013,20 +1013,22 @@ Cache::getOlmSessions(const std::string &curve25519) { using namespace mtx::crypto; - auto txn = lmdb::txn::begin(env_); - auto db = getOlmSessionsDb(txn, curve25519); - - std::string_view session_id, unused; - std::vector res; + try { + auto txn = ro_txn(env_); + auto db = getOlmSessionsDb(txn, curve25519); - auto cursor = lmdb::cursor::open(txn, db); - while (cursor.get(session_id, unused, MDB_NEXT)) - res.emplace_back(session_id); - cursor.close(); + std::string_view session_id, unused; + std::vector res; - txn.commit(); + auto cursor = lmdb::cursor::open(txn, db); + while (cursor.get(session_id, unused, MDB_NEXT)) + res.emplace_back(session_id); + cursor.close(); - return res; + return res; + } catch (...) { + return {}; + } } void @@ -2173,18 +2175,22 @@ Cache::roomIds() std::string Cache::previousBatchToken(const std::string &room_id) { - auto txn = lmdb::txn::begin(env_, nullptr); - auto orderDb = getEventOrderDb(txn, room_id); + auto txn = ro_txn(env_); + try { + auto orderDb = getEventOrderDb(txn, room_id); - auto cursor = lmdb::cursor::open(txn, orderDb); - std::string_view indexVal, val; - if (!cursor.get(indexVal, val, MDB_FIRST)) { - return ""; - } + auto cursor = lmdb::cursor::open(txn, orderDb); + std::string_view indexVal, val; + if (!cursor.get(indexVal, val, MDB_FIRST)) { + return ""; + } - auto j = nlohmann::json::parse(val); + auto j = nlohmann::json::parse(val); - return j.value("prev_batch", ""); + return j.value("prev_batch", ""); + } catch (...) { + return ""; + } } Cache::Messages @@ -3206,10 +3212,10 @@ Cache::pendingEvents(const std::string &room_id) std::optional Cache::firstPendingMessage(const std::string &room_id) { - auto txn = lmdb::txn::begin(env_); + auto txn = ro_txn(env_); auto pending = getPendingMessagesDb(txn, room_id); - { + try { auto pendingCursor = lmdb::cursor::open(txn, pending); std::string_view tsIgnored, pendingTxn; while (pendingCursor.get(tsIgnored, pendingTxn, MDB_NEXT)) { @@ -3225,7 +3231,6 @@ Cache::firstPendingMessage(const std::string &room_id) from_json(nlohmann::json::parse(event), te); pendingCursor.close(); - txn.commit(); return te; } catch (std::exception &e) { nhlog::db()->error("Failed to parse message from cache {}", e.what()); @@ -3233,10 +3238,8 @@ Cache::firstPendingMessage(const std::string &room_id) continue; } } + } catch (const lmdb::error &e) { } - - txn.commit(); - return std::nullopt; } @@ -3998,33 +4001,36 @@ Cache::hasEnoughPowerLevel(const std::vector &eventTypes using namespace mtx::events; using namespace mtx::events::state; - auto txn = lmdb::txn::begin(env_); - auto db = getStatesDb(txn, room_id); + auto txn = ro_txn(env_); + try { + auto db = getStatesDb(txn, room_id); - int64_t min_event_level = std::numeric_limits::max(); - int64_t user_level = std::numeric_limits::min(); + int64_t min_event_level = std::numeric_limits::max(); + int64_t user_level = std::numeric_limits::min(); - std::string_view event; - bool res = db.get(txn, to_string(EventType::RoomPowerLevels), event); + std::string_view event; + bool res = db.get(txn, to_string(EventType::RoomPowerLevels), event); - if (res) { - try { - StateEvent msg = - nlohmann::json::parse(std::string_view(event.data(), event.size())) - .get>(); + if (res) { + try { + StateEvent msg = + nlohmann::json::parse(std::string_view(event.data(), event.size())) + .get>(); - user_level = msg.content.user_level(user_id); + user_level = msg.content.user_level(user_id); - for (const auto &ty : eventTypes) - min_event_level = std::min(min_event_level, msg.content.state_level(to_string(ty))); - } catch (const nlohmann::json::exception &e) { - nhlog::db()->warn("failed to parse m.room.power_levels event: {}", e.what()); + for (const auto &ty : eventTypes) + min_event_level = + std::min(min_event_level, msg.content.state_level(to_string(ty))); + } catch (const nlohmann::json::exception &e) { + nhlog::db()->warn("failed to parse m.room.power_levels event: {}", e.what()); + } } - } - - txn.commit(); - return user_level >= min_event_level; + return user_level >= min_event_level; + } catch (...) { + return false; + } } std::vector diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index de813196..65efc0b4 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp @@ -80,8 +80,8 @@ EventStore::EventStore(std::string room_id, QObject *) emit beginInsertRows(toExternalIdx(newFirst), toExternalIdx(this->first - 1)); this->first = newFirst; emit endInsertRows(); - emit fetchedMore(); emit dataChanged(toExternalIdx(oldFirst), toExternalIdx(oldFirst)); + emit fetchedMore(); } else { auto range = cache::client()->getTimelineRange(room_id_); @@ -725,10 +725,11 @@ EventStore::decryptEvent(const IdIndex &idx, case olm::DecryptionErrorCode::ParsingFailed: break; case olm::DecryptionErrorCode::ReplayAttack: - nhlog::crypto()->critical("Reply attack while decryptiong event {} in room {} from {}!", - e.event_id, - room_id_, - e.sender); + nhlog::crypto()->critical( + "Replay attack while decryptiong event {} in room {} from {}!", + e.event_id, + room_id_, + e.sender); break; case olm::DecryptionErrorCode::NoError: // unreachable diff --git a/src/timeline/TimelineFilter.cpp b/src/timeline/TimelineFilter.cpp index 15d2590c..cd17a7f6 100644 --- a/src/timeline/TimelineFilter.cpp +++ b/src/timeline/TimelineFilter.cpp @@ -19,8 +19,10 @@ TimelineFilter::setThreadId(const QString &t) if (this->threadId != t) { this->threadId = t; invalidateFilter(); + + fetchMore({}); + emit threadIdChanged(); } - emit threadIdChanged(); } void @@ -30,21 +32,45 @@ TimelineFilter::setContentFilter(const QString &c) if (this->contentFilter != c) { this->contentFilter = c; invalidateFilter(); + + fetchMore({}); + emit contentFilterChanged(); + } +} + +void +TimelineFilter::fetchAgain() +{ + if (threadId.isEmpty() && contentFilter.isEmpty()) + return; + + if (auto s = source()) { + if (rowCount() == cachedCount && s->canFetchMore(QModelIndex())) + s->fetchMore(QModelIndex()); + else + cachedCount = rowCount(); } - emit contentFilterChanged(); } void TimelineFilter::setSource(TimelineModel *s) { if (auto orig = this->source(); orig != s) { - if (orig) + cachedCount = 0; + + if (orig) { disconnect(orig, &TimelineModel::currentIndexChanged, this, &TimelineFilter::currentIndexChanged); + disconnect(orig, &TimelineModel::fetchedMore, this, &TimelineFilter::fetchAgain); + } + this->setSourceModel(s); + connect(s, &TimelineModel::currentIndexChanged, this, &TimelineFilter::currentIndexChanged); + connect(s, &TimelineModel::fetchedMore, this, &TimelineFilter::fetchAgain); + emit sourceChanged(); invalidateFilter(); } diff --git a/src/timeline/TimelineFilter.h b/src/timeline/TimelineFilter.h index 3b04650e..a602f84f 100644 --- a/src/timeline/TimelineFilter.h +++ b/src/timeline/TimelineFilter.h @@ -45,9 +45,13 @@ signals: void sourceChanged(); void currentIndexChanged(); +private slots: + void fetchAgain(); + protected: bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; private: QString threadId, contentFilter; + int cachedCount = 0; }; diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index b20e36bc..6b764081 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -449,6 +449,7 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj connect(&events, &EventStore::fetchedMore, this, [this]() { setPaginationInProgress(false); updateLastMessage(); + emit fetchedMore(); }); connect(&events, &EventStore::fetchedMore, this, &TimelineModel::checkAfterFetch); connect(&events, diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h index 9cd60e5d..9daeeb3a 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h @@ -465,6 +465,8 @@ signals: void scrollTargetChanged(); + void fetchedMore(); + private: template void sendEncryptedMessage(mtx::events::RoomEvent msg, mtx::events::EventType eventType); -- cgit 1.5.1 From 1f77e1c810ad8b47cb40cb59e52b01fe534652b7 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 6 Nov 2022 01:06:01 +0100 Subject: Prompt before deleting the database --- src/Cache.cpp | 3 ++- src/ChatPage.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index b577f201..09e3fe5c 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -361,7 +361,8 @@ fatalSecretError() "have multiple reasons. Check if your D-Bus service is running and you have configured a " "service like KWallet, Gnome Keyring, KeePassXC or the equivalent for your platform. If " "you are having trouble, feel free to open an issue here: " - "https://github.com/Nheko-Reborn/nheko/issues")); + "https://github.com/Nheko-Reborn/nheko/issues"), + QMessageBox::StandardButton::Close); QCoreApplication::exit(1); exit(1); diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index f87c2738..8edaa1cf 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -378,6 +378,20 @@ ChatPage::dropToLoginPage(const QString &msg) http::client()->shutdown(); connectivityTimer_.stop(); + auto btn = QMessageBox::warning( + nullptr, + tr("Confirm logout"), + tr("Because of the following reason Nheko wants to drop you to the login page:\n%1\nIf you " + "think this is a mistake, you can close Nheko instead to possibly recover your encrpytion " + "keys. After you have been dropped to the login page, you can sign in again using your " + "usual methods."), + QMessageBox::StandardButton::Close | QMessageBox::StandardButton::Ok, + QMessageBox::StandardButton::Ok); + if (btn == QMessageBox::StandardButton::Close) { + QCoreApplication::exit(1); + exit(1); + } + resetUI(); deleteConfigs(); -- cgit 1.5.1 From 537fa437e2cf7aae82d3e066cfc26b4149652523 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 6 Nov 2022 03:36:56 +0100 Subject: Store secrets (apart from the pickle key) in the database --- src/Cache.cpp | 127 +++++++++++++++++++++++++++++++------------------ src/Cache_p.h | 14 ++++-- src/ChatPage.cpp | 3 +- src/encryption/Olm.cpp | 21 +++++--- 4 files changed, 107 insertions(+), 58 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index 09e3fe5c..41dd507c 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -39,7 +39,7 @@ //! Should be changed when a breaking change occurs in the cache format. //! This will reset client's data. -static const std::string CURRENT_CACHE_FORMAT_VERSION{"2022.04.08"}; +static const std::string CURRENT_CACHE_FORMAT_VERSION{"2022.11.06"}; //! Keys used for the DB static const std::string_view NEXT_BATCH_KEY("next_batch"); @@ -340,13 +340,13 @@ Cache::setup() txn.commit(); - loadSecrets({ - {mtx::secret_storage::secrets::cross_signing_master, false}, - {mtx::secret_storage::secrets::cross_signing_self_signing, false}, - {mtx::secret_storage::secrets::cross_signing_user_signing, false}, - {mtx::secret_storage::secrets::megolm_backup_v1, false}, - {"pickle_secret", true}, - }); + loadSecretsFromStore( + { + {"pickle_secret", true}, + }, + [this](const std::string &, bool, const std::string &value) { + this->pickle_secret_ = value; + }); } static void @@ -380,7 +380,9 @@ secretName(std::string name, bool internal) } void -Cache::loadSecrets(std::vector> toLoad) +Cache::loadSecretsFromStore( + std::vector> toLoad, + std::function callback) { auto settings = UserSettings::instance()->qsettings(); @@ -398,12 +400,11 @@ Cache::loadSecrets(std::vector> toLoad) if (value.isEmpty()) { nhlog::db()->info("Restored empty secret '{}'.", name.toStdString()); } else { - std::unique_lock lock(secret_storage.mtx); - secret_storage.secrets[name.toStdString()] = value.toStdString(); + callback(name_, internal, value.toStdString()); } } // if we emit the databaseReady signal directly it won't be received - QTimer::singleShot(0, this, [this] { loadSecrets({}); }); + QTimer::singleShot(0, this, [this, callback] { loadSecretsFromStore({}, callback); }); return; } @@ -419,7 +420,7 @@ Cache::loadSecrets(std::vector> toLoad) connect(job, &QKeychain::ReadPasswordJob::finished, this, - [this, name, toLoad, job](QKeychain::Job *) mutable { + [this, name, toLoad, job, name_, internal, callback](QKeychain::Job *) mutable { nhlog::db()->debug("Finished reading '{}'", toLoad.begin()->first); const QString secret = job->textData(); if (job->error() && job->error() != QKeychain::Error::EntryNotFound) { @@ -433,40 +434,72 @@ Cache::loadSecrets(std::vector> toLoad) if (secret.isEmpty()) { nhlog::db()->debug("Restored empty secret '{}'.", name.toStdString()); } else { - std::unique_lock lock(secret_storage.mtx); - secret_storage.secrets[name.toStdString()] = secret.toStdString(); + callback(name_, internal, secret.toStdString()); } // load next secret toLoad.erase(toLoad.begin()); // You can't start a job from the finish signal of a job. - QTimer::singleShot(0, this, [this, toLoad] { loadSecrets(toLoad); }); + QTimer::singleShot( + 0, this, [this, toLoad, callback] { loadSecretsFromStore(toLoad, callback); }); }); nhlog::db()->debug("Reading '{}'", name_); job->start(); } std::optional -Cache::secret(const std::string name_, bool internal) +Cache::secret(const std::string &name_, bool internal) { auto name = secretName(name_, internal); - std::unique_lock lock(secret_storage.mtx); - if (auto secret = secret_storage.secrets.find(name.toStdString()); - secret != secret_storage.secrets.end()) - return secret->second; - else + + auto txn = ro_txn(env_); + std::string_view value; + auto db_name = "secret." + name.toStdString(); + if (!syncStateDb_.get(txn, db_name, value)) return std::nullopt; + + mtx::secret_storage::AesHmacSha2EncryptedData data = nlohmann::json::parse(value); + + auto decrypted = mtx::crypto::decrypt(data, mtx::crypto::to_binary_buf(pickle_secret_), name_); + if (decrypted.empty()) + return std::nullopt; + else + return decrypted; } void -Cache::storeSecret(const std::string name_, const std::string secret, bool internal) +Cache::storeSecret(const std::string &name_, const std::string &secret, bool internal) { auto name = secretName(name_, internal); - { - std::unique_lock lock(secret_storage.mtx); - secret_storage.secrets[name.toStdString()] = secret; - } + + auto txn = lmdb::txn::begin(env_); + + auto encrypted = + mtx::crypto::encrypt(secret, mtx::crypto::to_binary_buf(pickle_secret_), name_); + + auto db_name = "secret." + name.toStdString(); + syncStateDb_.put(txn, db_name, nlohmann::json(encrypted).dump()); + txn.commit(); + emit secretChanged(name_); +} + +void +Cache::deleteSecret(const std::string &name_, bool internal) +{ + auto name = secretName(name_, internal); + + auto txn = lmdb::txn::begin(env_); + std::string_view value; + auto db_name = "secret." + name.toStdString(); + syncStateDb_.del(txn, db_name, value); + txn.commit(); +} + +void +Cache::storeSecretInStore(const std::string name_, const std::string secret) +{ + auto name = secretName(name_, true); auto settings = UserSettings::instance()->qsettings(); if (settings->value(QStringLiteral("run_without_secure_secrets_service"), false).toBool()) { @@ -507,13 +540,9 @@ Cache::storeSecret(const std::string name_, const std::string secret, bool inter } void -Cache::deleteSecret(const std::string name, bool internal) +Cache::deleteSecretFromStore(const std::string name, bool internal) { auto name_ = secretName(name, internal); - { - std::unique_lock lock(secret_storage.mtx); - secret_storage.secrets.erase(name_.toStdString()); - } auto settings = UserSettings::instance()->qsettings(); if (settings->value(QStringLiteral("run_without_secure_secrets_service"), false).toBool()) { @@ -539,13 +568,8 @@ std::string Cache::pickleSecret() { if (pickle_secret_.empty()) { - auto s = secret("pickle_secret", true); - if (!s) { - this->pickle_secret_ = mtx::client::utils::random_token(64, true); - storeSecret("pickle_secret", pickle_secret_, true); - } else { - this->pickle_secret_ = *s; - } + this->pickle_secret_ = mtx::client::utils::random_token(64, true); + storeSecretInStore("pickle_secret", pickle_secret_); } return pickle_secret_; @@ -1179,11 +1203,7 @@ Cache::deleteData() nhlog::db()->info("deleted cache files from disk"); } - deleteSecret(mtx::secret_storage::secrets::megolm_backup_v1); - deleteSecret(mtx::secret_storage::secrets::cross_signing_master); - deleteSecret(mtx::secret_storage::secrets::cross_signing_user_signing); - deleteSecret(mtx::secret_storage::secrets::cross_signing_self_signing); - deleteSecret("pickle_secret", true); + deleteSecretFromStore("pickle_secret", true); } } @@ -1392,7 +1412,8 @@ Cache::runMigrations() }}, {"2021.08.31", [this]() { - storeSecret("pickle_secret", "secret", true); + storeSecretInStore("pickle_secret", "secret"); + this->pickle_secret_ = "secret"; return true; }}, {"2022.04.08", @@ -1448,6 +1469,22 @@ Cache::runMigrations() return false; } }}, + {"2022.11.06", + [this]() { + loadSecretsFromStore( + { + {mtx::secret_storage::secrets::cross_signing_master, false}, + {mtx::secret_storage::secrets::cross_signing_self_signing, false}, + {mtx::secret_storage::secrets::cross_signing_user_signing, false}, + {mtx::secret_storage::secrets::megolm_backup_v1, false}, + }, + [this](const std::string &name, bool internal, const std::string &value) { + this->storeSecret(name, value, internal); + QTimer::singleShot( + 0, this, [this, name, internal] { deleteSecretFromStore(name, internal); }); + }); + return true; + }}, }; nhlog::db()->info("Running migrations, this may take a while!"); diff --git a/src/Cache_p.h b/src/Cache_p.h index 742e4aab..5a42c7f9 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -291,9 +291,9 @@ public: void deleteBackupVersion(); std::optional backupVersion(); - void storeSecret(const std::string name, const std::string secret, bool internal = false); - void deleteSecret(const std::string name, bool internal = false); - std::optional secret(const std::string name, bool internal = false); + void storeSecret(const std::string &name, const std::string &secret, bool internal = false); + void deleteSecret(const std::string &name, bool internal = false); + std::optional secret(const std::string &name, bool internal = false); std::string pickleSecret(); @@ -324,7 +324,12 @@ signals: void databaseReady(); private: - void loadSecrets(std::vector> toLoad); + void loadSecretsFromStore( + std::vector> toLoad, + std::function + callback); + void storeSecretInStore(const std::string name, const std::string secret); + void deleteSecretFromStore(const std::string name, bool internal); //! Save an invited room. void saveInvite(lmdb::txn &txn, @@ -685,7 +690,6 @@ private: std::string pickle_secret_; VerificationStorage verification_storage; - SecretsStorage secret_storage; bool databaseReady_ = false; }; diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 8edaa1cf..5e0a7b73 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -384,7 +384,8 @@ ChatPage::dropToLoginPage(const QString &msg) tr("Because of the following reason Nheko wants to drop you to the login page:\n%1\nIf you " "think this is a mistake, you can close Nheko instead to possibly recover your encrpytion " "keys. After you have been dropped to the login page, you can sign in again using your " - "usual methods."), + "usual methods.") + .arg(msg), QMessageBox::StandardButton::Close | QMessageBox::StandardButton::Ok, QMessageBox::StandardButton::Ok); if (btn == QMessageBox::StandardButton::Close) { diff --git a/src/encryption/Olm.cpp b/src/encryption/Olm.cpp index a9d5b1c2..a1d311e1 100644 --- a/src/encryption/Olm.cpp +++ b/src/encryption/Olm.cpp @@ -6,6 +6,7 @@ #include "Olm.h" #include +#include #include #include @@ -98,13 +99,19 @@ handle_secret_request(const mtx::events::DeviceEventcontent.requesting_device_id}}}}, secretSend); - - nhlog::net()->info("Sent secret '{}' to ({},{})", - e->content.name, - local_user.to_string(), - e->content.requesting_device_id); + // Randomly delay reply to workaround olm session generation races + QTimer::singleShot(QRandomGenerator::global()->bounded(0, 3000), + ChatPage::instance(), + [local_user, e = *e, secretSend] { + send_encrypted_to_device_messages( + {{local_user.to_string(), {{e.content.requesting_device_id}}}}, + secretSend); + + nhlog::net()->info("Sent secret '{}' to ({},{})", + e.content.name, + local_user.to_string(), + e.content.requesting_device_id); + }); } void -- cgit 1.5.1 From 725b5e0383089ff0f5fb566860513f2b390807ad Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 6 Nov 2022 04:02:14 +0100 Subject: Try to fix clang-tidy --- src/Cache.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index 41dd507c..5cb87a2f 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -420,7 +420,8 @@ Cache::loadSecretsFromStore( connect(job, &QKeychain::ReadPasswordJob::finished, this, - [this, name, toLoad, job, name_, internal, callback](QKeychain::Job *) mutable { + [this, name, toLoad, job, name_ = name_, internal = internal, callback]( + QKeychain::Job *) mutable { nhlog::db()->debug("Finished reading '{}'", toLoad.begin()->first); const QString secret = job->textData(); if (job->error() && job->error() != QKeychain::Error::EntryNotFound) { -- cgit 1.5.1 From 1a9f7860d41fe14ca38bc9a3c99931dceae95679 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Fri, 16 Dec 2022 17:24:52 +0100 Subject: Fix sending confetti --- CMakeLists.txt | 2 +- io.github.NhekoReborn.Nheko.yaml | 2 +- src/Cache.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/Cache.cpp') diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a7e333f..3af559a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -595,7 +595,7 @@ if(USE_BUNDLED_MTXCLIENT) FetchContent_Declare( MatrixClient GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git - GIT_TAG 36619300be0dd8127b71119b443a07fffe4f53a3 + GIT_TAG 6252a4a902053fb227b61e65e76c1c29bc905a45 ) set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "") set(BUILD_LIB_TESTS OFF CACHE INTERNAL "") diff --git a/io.github.NhekoReborn.Nheko.yaml b/io.github.NhekoReborn.Nheko.yaml index 3b735b64..a150f97b 100644 --- a/io.github.NhekoReborn.Nheko.yaml +++ b/io.github.NhekoReborn.Nheko.yaml @@ -182,7 +182,7 @@ modules: buildsystem: cmake-ninja name: mtxclient sources: - - commit: 36619300be0dd8127b71119b443a07fffe4f53a3 + - commit: 6252a4a902053fb227b61e65e76c1c29bc905a45 #tag: v0.8.2 type: git url: https://github.com/Nheko-Reborn/mtxclient.git diff --git a/src/Cache.cpp b/src/Cache.cpp index 5cb87a2f..809d5e17 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -3251,7 +3251,7 @@ Cache::pendingEvents(const std::string &room_id) std::optional Cache::firstPendingMessage(const std::string &room_id) { - auto txn = ro_txn(env_); + auto txn = lmdb::txn::begin(env_); auto pending = getPendingMessagesDb(txn, room_id); try { -- cgit 1.5.1 From f98b289ba2f8241ebe33da3e4aac9a6e71ca5c3e Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 27 Dec 2022 01:40:03 +0100 Subject: Show invite reason in the UI (hidden by default) --- CMakeLists.txt | 2 +- io.github.NhekoReborn.Nheko.yaml | 2 +- resources/qml/TimelineView.qml | 39 +++++++++++++++++++++++++++++++++++++++ src/Cache.cpp | 29 ++++++++++++++++++++++++++++- src/CacheStructs.h | 1 + src/Cache_p.h | 8 +++++--- src/timeline/RoomlistModel.cpp | 14 ++++++++++++++ src/timeline/RoomlistModel.h | 4 +++- 8 files changed, 92 insertions(+), 7 deletions(-) (limited to 'src/Cache.cpp') diff --git a/CMakeLists.txt b/CMakeLists.txt index 3af559a6..8658b228 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -595,7 +595,7 @@ if(USE_BUNDLED_MTXCLIENT) FetchContent_Declare( MatrixClient GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git - GIT_TAG 6252a4a902053fb227b61e65e76c1c29bc905a45 + GIT_TAG d187c63a27710fa87a44ab44d43b7cfa2023132a ) set(BUILD_LIB_EXAMPLES OFF CACHE INTERNAL "") set(BUILD_LIB_TESTS OFF CACHE INTERNAL "") diff --git a/io.github.NhekoReborn.Nheko.yaml b/io.github.NhekoReborn.Nheko.yaml index a150f97b..e8b6e9f2 100644 --- a/io.github.NhekoReborn.Nheko.yaml +++ b/io.github.NhekoReborn.Nheko.yaml @@ -182,7 +182,7 @@ modules: buildsystem: cmake-ninja name: mtxclient sources: - - commit: 6252a4a902053fb227b61e65e76c1c29bc905a45 + - commit: d187c63a27710fa87a44ab44d43b7cfa2023132a #tag: v0.8.2 type: git url: https://github.com/Nheko-Reborn/mtxclient.git diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index 14b74e68..dcbcc87e 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -170,6 +170,7 @@ Item { property string roomName: room ? room.roomName : (roomPreview ? roomPreview.roomName : "") property string roomTopic: room ? room.roomTopic : (roomPreview ? roomPreview.roomTopic : "") property string avatarUrl: room ? room.roomAvatarUrl : (roomPreview ? roomPreview.roomAvatarUrl : "") + property string reason: roomPreview ? roomPreview.reason : "" visible: room != null && room.isSpace || roomPreview != null enabled: visible @@ -277,6 +278,44 @@ Item { onClicked: Rooms.declineInvite(roomPreview.roomid) } + ScrollView { + id: reasonField + property bool showReason: false + + Layout.alignment: Qt.AlignHCenter + Layout.fillWidth: true + Layout.leftMargin: Nheko.paddingLarge + Layout.rightMargin: Nheko.paddingLarge + visible: preview.reason !== "" && showReason + + TextArea { + text: TimelineManager.escapeEmoji(preview.reason) + wrapMode: TextEdit.WordWrap + textFormat: TextEdit.RichText + readOnly: true + background: null + selectByMouse: true + color: Nheko.colors.text + horizontalAlignment: TextEdit.AlignHCenter + } + + } + + Button { + id: showReasonButton + + Layout.alignment: Qt.AlignHCenter + //Layout.fillWidth: true + Layout.leftMargin: Nheko.paddingLarge + Layout.rightMargin: Nheko.paddingLarge + + visible: preview.reason !== "" + text: reasonField.showReason ? qsTr("Hide invite reason") : qsTr("Show invite reason") + onClicked: { + reasonField.showReason = !reasonField.showReason; + } + } + Item { visible: room != null Layout.preferredHeight: Math.ceil(fontMetrics.lineSpacing * 2) diff --git a/src/Cache.cpp b/src/Cache.cpp index 809d5e17..5d87f9f2 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -2018,7 +2018,8 @@ Cache::saveInvite(lmdb::txn &txn, auto display_name = msg->content.display_name.empty() ? msg->state_key : msg->content.display_name; - MemberInfo tmp{display_name, msg->content.avatar_url, msg->content.is_direct}; + MemberInfo tmp{ + display_name, msg->content.avatar_url, msg->content.reason, msg->content.is_direct}; membersdb.put(txn, msg->state_key, nlohmann::json(tmp).dump()); } else { @@ -3144,6 +3145,29 @@ Cache::getMembers(const std::string &room_id, std::size_t startIndex, std::size_ } } +std::optional +Cache::getInviteMember(const std::string &room_id, const std::string &user_id) +{ + if (user_id.empty() || !env_.handle()) + return std::nullopt; + + try { + auto txn = ro_txn(env_); + + auto membersdb = getInviteMembersDb(txn, room_id); + + std::string_view info; + if (membersdb.get(txn, user_id, info)) { + MemberInfo m = nlohmann::json::parse(info).get(); + return m; + } + } catch (std::exception &e) { + nhlog::db()->warn( + "Failed to read member ({}) in invite room ({}): {}", user_id, room_id, e.what()); + } + return std::nullopt; +} + std::vector Cache::getMembersFromInvite(const std::string &room_id, std::size_t startIndex, std::size_t len) { @@ -4959,6 +4983,8 @@ to_json(nlohmann::json &j, const MemberInfo &info) j["avatar_url"] = info.avatar_url; if (info.is_direct) j["is_direct"] = info.is_direct; + if (!info.reason.empty()) + j["reason"] = info.reason; } void @@ -4967,6 +4993,7 @@ from_json(const nlohmann::json &j, MemberInfo &info) info.name = j.at("name").get(); info.avatar_url = j.at("avatar_url").get(); info.is_direct = j.value("is_direct", false); + info.reason = j.value("reason", ""); } void diff --git a/src/CacheStructs.h b/src/CacheStructs.h index 1f035fee..535807fe 100644 --- a/src/CacheStructs.h +++ b/src/CacheStructs.h @@ -107,6 +107,7 @@ struct MemberInfo { std::string name; std::string avatar_url; + std::string reason; bool is_direct = false; }; diff --git a/src/Cache_p.h b/src/Cache_p.h index 5a42c7f9..6712e48e 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -244,6 +244,8 @@ public: //! Check if a user is a member of the room. bool isRoomMember(const std::string &user_id, const std::string &room_id); + std::optional + getInviteMember(const std::string &room_id, const std::string &user_id); // // Outbound Megolm Sessions @@ -396,7 +398,7 @@ private: e->content.display_name.empty() ? e->state_key : e->content.display_name; // Lightweight representation of a member. - MemberInfo tmp{display_name, e->content.avatar_url}; + MemberInfo tmp{display_name, e->content.avatar_url, e->content.reason}; membersdb.put(txn, e->state_key, nlohmann::json(tmp).dump()); break; @@ -406,8 +408,8 @@ private: break; } } - - return; + // fallthrough to also store it as state event to eventually migrate away from a + // separate members db. } else if (std::holds_alternative>(event)) { setEncryptedRoom(txn, room_id); return; diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp index 82b3fc3d..827cbed1 100644 --- a/src/timeline/RoomlistModel.cpp +++ b/src/timeline/RoomlistModel.cpp @@ -723,6 +723,13 @@ RoomlistModel::getRoomPreviewById(QString roomid) const if (invites.contains(roomid)) { i = invites.value(roomid); preview.isInvite_ = true; + + auto member = cache::client()->getInviteMember(roomid.toStdString(), + http::client()->user_id().to_string()); + + if (member) { + preview.reason_ = QString::fromStdString(member->reason); + } } else { i = previewedRooms.value(roomid); preview.isInvite_ = false; @@ -769,6 +776,13 @@ RoomlistModel::setCurrentRoom(const QString &roomid) if (invites.contains(roomid)) { i = invites.value(roomid); p.isInvite_ = true; + + auto member = cache::client()->getInviteMember(roomid.toStdString(), + http::client()->user_id().to_string()); + + if (member) { + p.reason_ = QString::fromStdString(member->reason); + } } else { i = previewedRooms.value(roomid); p.isInvite_ = false; diff --git a/src/timeline/RoomlistModel.h b/src/timeline/RoomlistModel.h index 0eb57547..0d52102d 100644 --- a/src/timeline/RoomlistModel.h +++ b/src/timeline/RoomlistModel.h @@ -31,6 +31,7 @@ class RoomPreview Q_PROPERTY(QString roomName READ roomName CONSTANT) Q_PROPERTY(QString roomTopic READ roomTopic CONSTANT) Q_PROPERTY(QString roomAvatarUrl READ roomAvatarUrl CONSTANT) + Q_PROPERTY(QString reason READ reason CONSTANT) Q_PROPERTY(bool isInvite READ isInvite CONSTANT) public: @@ -40,9 +41,10 @@ public: QString roomName() const { return roomName_; } QString roomTopic() const { return roomTopic_; } QString roomAvatarUrl() const { return roomAvatarUrl_; } + QString reason() const { return reason_; } bool isInvite() const { return isInvite_; } - QString roomid_, roomName_, roomAvatarUrl_, roomTopic_; + QString roomid_, roomName_, roomAvatarUrl_, roomTopic_, reason_; bool isInvite_ = false; }; -- cgit 1.5.1 From 01915360b4edc4e4c82d2f79457859c649b7b1d2 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Tue, 27 Dec 2022 16:15:49 +0100 Subject: Fix state reset command --- src/Cache.cpp | 8 +++++++- src/Cache_p.h | 4 +++- src/timeline/TimelineModel.cpp | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) (limited to 'src/Cache.cpp') diff --git a/src/Cache.cpp b/src/Cache.cpp index 5d87f9f2..41b84e11 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -1669,7 +1669,7 @@ Cache::calculateRoomReadStatus(const std::string &room_id) } void -Cache::updateState(const std::string &room, const mtx::responses::StateEvents &state) +Cache::updateState(const std::string &room, const mtx::responses::StateEvents &state, bool wipe) { auto txn = lmdb::txn::begin(env_); auto statesdb = getStatesDb(txn, room); @@ -1677,6 +1677,12 @@ Cache::updateState(const std::string &room, const mtx::responses::StateEvents &s auto membersdb = getMembersDb(txn, room); auto eventsDb = getEventsDb(txn, room); + if (wipe) { + membersdb.drop(txn); + statesdb.drop(txn); + stateskeydb.drop(txn); + } + saveStateEvents(txn, statesdb, stateskeydb, membersdb, eventsDb, room, state.events); RoomInfo updatedInfo; diff --git a/src/Cache_p.h b/src/Cache_p.h index 6712e48e..40ce6e5c 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -118,7 +118,9 @@ public: std::size_t len = 30); size_t memberCount(const std::string &room_id); - void updateState(const std::string &room, const mtx::responses::StateEvents &state); + void updateState(const std::string &room, + const mtx::responses::StateEvents &state, + bool wipe = false); void saveState(const mtx::responses::Sync &res); bool isInitialized(); bool isDatabaseReady() { return databaseReady_ && isInitialized(); } diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index 62dbdae6..46f8e57c 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -496,7 +496,7 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj showEventTimer.callOnTimeout(this, &TimelineModel::scrollTimerEvent); connect(this, &TimelineModel::newState, this, [this](mtx::responses::StateEvents events_) { - cache::client()->updateState(room_id_.toStdString(), events_); + cache::client()->updateState(room_id_.toStdString(), events_, true); this->syncState({std::move(events_.events)}); }); } -- cgit 1.5.1 From 3a6a905429309ba37a611a364ad40987133f93a2 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Mon, 2 Jan 2023 04:25:33 +0100 Subject: A whole new year full of excitement and possibilities! --- resources/qml/Avatar.qml | 1 + resources/qml/ChatPage.qml | 1 + resources/qml/CommunitiesList.qml | 1 + resources/qml/Completer.qml | 1 + resources/qml/ElidedLabel.qml | 1 + resources/qml/EncryptionIndicator.qml | 1 + resources/qml/ForwardCompleter.qml | 1 + resources/qml/ImageButton.qml | 1 + resources/qml/MatrixText.qml | 1 + resources/qml/MatrixTextField.qml | 1 + resources/qml/MessageInput.qml | 1 + resources/qml/MessageView.qml | 1 + resources/qml/NhekoBusyIndicator.qml | 1 + resources/qml/NotificationWarning.qml | 1 + resources/qml/PrivacyScreen.qml | 1 + resources/qml/QuickSwitcher.qml | 1 + resources/qml/Reactions.qml | 1 + resources/qml/ReplyPopup.qml | 1 + resources/qml/RoomList.qml | 1 + resources/qml/Root.qml | 1 + resources/qml/ScrollHelper.qml | 1 + resources/qml/SelfVerificationCheck.qml | 1 + resources/qml/StatusIndicator.qml | 1 + resources/qml/TimelineRow.qml | 1 + resources/qml/TimelineView.qml | 1 + resources/qml/ToggleButton.qml | 1 + resources/qml/TopBar.qml | 1 + resources/qml/TypingIndicator.qml | 1 + resources/qml/UploadBox.qml | 1 + resources/qml/components/AdaptiveLayout.qml | 1 + resources/qml/components/AdaptiveLayoutElement.qml | 1 + resources/qml/components/AvatarListTile.qml | 1 + resources/qml/components/FlatButton.qml | 1 + resources/qml/components/MainWindowDialog.qml | 1 + resources/qml/components/NotificationBubble.qml | 1 + resources/qml/components/ReorderableListview.qml | 1 + resources/qml/components/SpaceMenuLevel.qml | 1 + resources/qml/components/TextButton.qml | 1 + resources/qml/delegates/Encrypted.qml | 1 + resources/qml/delegates/FileMessage.qml | 1 + resources/qml/delegates/ImageMessage.qml | 1 + resources/qml/delegates/MessageDelegate.qml | 1 + resources/qml/delegates/NoticeMessage.qml | 1 + resources/qml/delegates/Pill.qml | 1 + resources/qml/delegates/Placeholder.qml | 1 + resources/qml/delegates/PlayableMediaMessage.qml | 1 + resources/qml/delegates/Redacted.qml | 1 + resources/qml/delegates/Reply.qml | 1 + resources/qml/delegates/TextMessage.qml | 1 + resources/qml/device-verification/DeviceVerification.qml | 1 + resources/qml/device-verification/DigitVerification.qml | 1 + resources/qml/device-verification/EmojiElement.qml | 1 + resources/qml/device-verification/EmojiVerification.qml | 1 + resources/qml/device-verification/Failed.qml | 1 + resources/qml/device-verification/NewVerificationRequest.qml | 1 + resources/qml/device-verification/Success.qml | 1 + resources/qml/device-verification/Waiting.qml | 1 + resources/qml/dialogs/AliasEditor.qml | 1 + resources/qml/dialogs/AllowedRoomsSettingsDialog.qml | 1 + resources/qml/dialogs/ConfirmJoinRoomDialog.qml | 1 + resources/qml/dialogs/CreateDirect.qml | 1 + resources/qml/dialogs/CreateRoom.qml | 1 + resources/qml/dialogs/HiddenEventsDialog.qml | 1 + resources/qml/dialogs/ImageOverlay.qml | 1 + resources/qml/dialogs/ImagePackEditorDialog.qml | 1 + resources/qml/dialogs/ImagePackSettingsDialog.qml | 1 + resources/qml/dialogs/InputDialog.qml | 1 + resources/qml/dialogs/InviteDialog.qml | 1 + resources/qml/dialogs/JoinRoomDialog.qml | 1 + resources/qml/dialogs/LeaveRoomDialog.qml | 1 + resources/qml/dialogs/LogoutDialog.qml | 1 + resources/qml/dialogs/PhoneNumberInputDialog.qml | 1 + resources/qml/dialogs/PowerLevelEditor.qml | 1 + resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml | 1 + resources/qml/dialogs/RawMessageDialog.qml | 1 + resources/qml/dialogs/ReadReceipts.qml | 1 + resources/qml/dialogs/RoomDirectory.qml | 1 + resources/qml/dialogs/RoomMembers.qml | 1 + resources/qml/dialogs/RoomSettings.qml | 1 + resources/qml/dialogs/UserProfile.qml | 1 + resources/qml/emoji/EmojiPicker.qml | 1 + resources/qml/emoji/StickerPicker.qml | 1 + resources/qml/pages/LoginPage.qml | 1 + resources/qml/pages/RegisterPage.qml | 1 + resources/qml/pages/UserSettingsPage.qml | 1 + resources/qml/pages/WelcomePage.qml | 1 + resources/qml/ui/NhekoSlider.qml | 1 + resources/qml/ui/Ripple.qml | 1 + resources/qml/ui/Snackbar.qml | 1 + resources/qml/ui/Spinner.qml | 1 + resources/qml/ui/animations/BlinkAnimation.qml | 1 + resources/qml/ui/media/MediaControls.qml | 1 + resources/qml/voip/ActiveCallBar.qml | 1 + resources/qml/voip/CallDevices.qml | 1 + resources/qml/voip/CallInvite.qml | 1 + resources/qml/voip/CallInviteBar.qml | 1 + resources/qml/voip/DeviceError.qml | 1 + resources/qml/voip/PlaceCall.qml | 1 + resources/qml/voip/ScreenShare.qml | 1 + resources/qml/voip/VideoCall.qml | 1 + src/AliasEditModel.cpp | 1 + src/AliasEditModel.h | 1 + src/AvatarProvider.cpp | 1 + src/AvatarProvider.h | 1 + src/BlurhashProvider.cpp | 1 + src/BlurhashProvider.h | 1 + src/Cache.cpp | 1 + src/Cache.h | 1 + src/CacheCryptoStructs.h | 1 + src/CacheStructs.h | 1 + src/Cache_p.h | 1 + src/ChatPage.cpp | 1 + src/ChatPage.h | 1 + src/Clipboard.cpp | 1 + src/Clipboard.h | 1 + src/ColorImageProvider.cpp | 1 + src/ColorImageProvider.h | 1 + src/CombinedImagePackModel.cpp | 1 + src/CombinedImagePackModel.h | 1 + src/CommandCompleter.cpp | 1 + src/CommandCompleter.h | 1 + src/CompletionModelRoles.h | 1 + src/CompletionProxyModel.cpp | 1 + src/CompletionProxyModel.h | 1 + src/Config.h | 1 + src/EventAccessors.cpp | 1 + src/EventAccessors.h | 1 + src/ImagePackListModel.cpp | 1 + src/ImagePackListModel.h | 1 + src/InviteesModel.cpp | 1 + src/InviteesModel.h | 1 + src/JdenticonProvider.cpp | 1 + src/JdenticonProvider.h | 1 + src/Logging.cpp | 1 + src/Logging.h | 1 + src/LoginPage.cpp | 1 + src/LoginPage.h | 1 + src/MainWindow.cpp | 1 + src/MainWindow.h | 1 + src/MatrixClient.cpp | 1 + src/MatrixClient.h | 1 + src/MemberList.cpp | 1 + src/MemberList.h | 1 + src/MxcImageProvider.cpp | 1 + src/MxcImageProvider.h | 1 + src/PowerlevelsEditModels.cpp | 1 + src/PowerlevelsEditModels.h | 1 + src/ReadReceiptsModel.cpp | 1 + src/ReadReceiptsModel.h | 1 + src/RegisterPage.cpp | 1 + src/RegisterPage.h | 1 + src/RoomDirectoryModel.cpp | 1 + src/RoomDirectoryModel.h | 1 + src/RoomsModel.cpp | 1 + src/RoomsModel.h | 1 + src/SSOHandler.cpp | 1 + src/SSOHandler.h | 1 + src/SingleImagePackModel.cpp | 1 + src/SingleImagePackModel.h | 1 + src/TrayIcon.cpp | 1 + src/TrayIcon.h | 1 + src/UserSettingsPage.cpp | 1 + src/UserSettingsPage.h | 1 + src/UsersModel.cpp | 1 + src/UsersModel.h | 1 + src/Utils.cpp | 1 + src/Utils.h | 1 + src/dbus/NhekoDBusApi.cpp | 1 + src/dbus/NhekoDBusApi.h | 1 + src/dbus/NhekoDBusBackend.cpp | 1 + src/dbus/NhekoDBusBackend.h | 1 + src/dialogs/FallbackAuth.cpp | 1 + src/dialogs/FallbackAuth.h | 1 + src/dialogs/ReCaptcha.cpp | 1 + src/dialogs/ReCaptcha.h | 1 + src/dock/Dock.cpp | 1 + src/dock/Dock.h | 1 + src/emoji/EmojiModel.cpp | 1 + src/emoji/EmojiModel.h | 1 + src/emoji/MacHelper.h | 1 + src/emoji/Provider.cpp | 1 + src/emoji/Provider.h | 1 + src/encryption/DeviceVerificationFlow.cpp | 1 + src/encryption/DeviceVerificationFlow.h | 1 + src/encryption/Olm.cpp | 1 + src/encryption/Olm.h | 1 + src/encryption/SelfVerificationStatus.cpp | 1 + src/encryption/SelfVerificationStatus.h | 1 + src/encryption/VerificationManager.cpp | 1 + src/encryption/VerificationManager.h | 1 + src/main.cpp | 1 + src/notifications/MacNotificationDelegate.h | 1 + src/notifications/Manager.cpp | 1 + src/notifications/Manager.h | 1 + src/notifications/ManagerLinux.cpp | 1 + src/notifications/ManagerMac.cpp | 1 + src/notifications/ManagerWin.cpp | 1 + src/notifications/NotificationManagerProxy.h | 1 + src/timeline/CommunitiesModel.cpp | 1 + src/timeline/CommunitiesModel.h | 1 + src/timeline/DelegateChooser.cpp | 1 + src/timeline/DelegateChooser.h | 1 + src/timeline/EventStore.cpp | 1 + src/timeline/EventStore.h | 1 + src/timeline/InputBar.cpp | 1 + src/timeline/InputBar.h | 1 + src/timeline/Permissions.cpp | 1 + src/timeline/Permissions.h | 1 + src/timeline/PresenceEmitter.cpp | 1 + src/timeline/PresenceEmitter.h | 1 + src/timeline/Reaction.cpp | 1 + src/timeline/Reaction.h | 1 + src/timeline/RoomlistModel.cpp | 1 + src/timeline/RoomlistModel.h | 1 + src/timeline/TimelineFilter.cpp | 1 + src/timeline/TimelineFilter.h | 1 + src/timeline/TimelineModel.cpp | 1 + src/timeline/TimelineModel.h | 1 + src/timeline/TimelineViewManager.cpp | 1 + src/timeline/TimelineViewManager.h | 1 + src/ui/HiddenEvents.cpp | 1 + src/ui/HiddenEvents.h | 1 + src/ui/MxcAnimatedImage.cpp | 1 + src/ui/MxcAnimatedImage.h | 1 + src/ui/MxcMediaProxy.cpp | 1 + src/ui/MxcMediaProxy.h | 1 + src/ui/NhekoCursorShape.cpp | 1 + src/ui/NhekoCursorShape.h | 1 + src/ui/NhekoDropArea.cpp | 1 + src/ui/NhekoDropArea.h | 1 + src/ui/NhekoEventObserver.cpp | 1 + src/ui/NhekoEventObserver.h | 1 + src/ui/NhekoGlobalObject.cpp | 1 + src/ui/NhekoGlobalObject.h | 1 + src/ui/RoomSettings.cpp | 1 + src/ui/RoomSettings.h | 1 + src/ui/RoomSummary.cpp | 1 + src/ui/RoomSummary.h | 1 + src/ui/Theme.cpp | 1 + src/ui/Theme.h | 1 + src/ui/ThemeManager.cpp | 1 + src/ui/ThemeManager.h | 1 + src/ui/UIA.cpp | 1 + src/ui/UIA.h | 1 + src/ui/UserProfile.cpp | 1 + src/ui/UserProfile.h | 1 + src/voip/CallDevices.cpp | 1 + src/voip/CallDevices.h | 1 + src/voip/CallManager.cpp | 1 + src/voip/CallManager.h | 1 + src/voip/WebRTCSession.cpp | 1 + src/voip/WebRTCSession.h | 1 + 252 files changed, 252 insertions(+) (limited to 'src/Cache.cpp') diff --git a/resources/qml/Avatar.qml b/resources/qml/Avatar.qml index 2da59370..549b8d17 100644 --- a/resources/qml/Avatar.qml +++ b/resources/qml/Avatar.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ChatPage.qml b/resources/qml/ChatPage.qml index cc62d501..3d76616a 100644 --- a/resources/qml/ChatPage.qml +++ b/resources/qml/ChatPage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/CommunitiesList.qml b/resources/qml/CommunitiesList.qml index 853302a5..1722cc85 100644 --- a/resources/qml/CommunitiesList.qml +++ b/resources/qml/CommunitiesList.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/Completer.qml b/resources/qml/Completer.qml index abf37486..04ff1495 100644 --- a/resources/qml/Completer.qml +++ b/resources/qml/Completer.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ElidedLabel.qml b/resources/qml/ElidedLabel.qml index 11df479a..4c734cc5 100644 --- a/resources/qml/ElidedLabel.qml +++ b/resources/qml/ElidedLabel.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/EncryptionIndicator.qml b/resources/qml/EncryptionIndicator.qml index 04d4bace..a75bd976 100644 --- a/resources/qml/EncryptionIndicator.qml +++ b/resources/qml/EncryptionIndicator.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ForwardCompleter.qml b/resources/qml/ForwardCompleter.qml index 76d77bfd..765c3a34 100644 --- a/resources/qml/ForwardCompleter.qml +++ b/resources/qml/ForwardCompleter.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ImageButton.qml b/resources/qml/ImageButton.qml index 080bea23..6a5c0782 100644 --- a/resources/qml/ImageButton.qml +++ b/resources/qml/ImageButton.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/MatrixText.qml b/resources/qml/MatrixText.qml index 69eb7cdb..9ce61435 100644 --- a/resources/qml/MatrixText.qml +++ b/resources/qml/MatrixText.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/MatrixTextField.qml b/resources/qml/MatrixTextField.qml index e3632b61..5ebc9728 100644 --- a/resources/qml/MatrixTextField.qml +++ b/resources/qml/MatrixTextField.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/MessageInput.qml b/resources/qml/MessageInput.qml index ab6e260f..59b19d4d 100644 --- a/resources/qml/MessageInput.qml +++ b/resources/qml/MessageInput.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml index a49c046c..ae8eee56 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/NhekoBusyIndicator.qml b/resources/qml/NhekoBusyIndicator.qml index aafe8900..6f6869f4 100644 --- a/resources/qml/NhekoBusyIndicator.qml +++ b/resources/qml/NhekoBusyIndicator.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/NotificationWarning.qml b/resources/qml/NotificationWarning.qml index 285e5a5c..2d0a0975 100644 --- a/resources/qml/NotificationWarning.qml +++ b/resources/qml/NotificationWarning.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/PrivacyScreen.qml b/resources/qml/PrivacyScreen.qml index f91e4a73..bc128302 100644 --- a/resources/qml/PrivacyScreen.qml +++ b/resources/qml/PrivacyScreen.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/QuickSwitcher.qml b/resources/qml/QuickSwitcher.qml index ac5d3aea..77992e69 100644 --- a/resources/qml/QuickSwitcher.qml +++ b/resources/qml/QuickSwitcher.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/Reactions.qml b/resources/qml/Reactions.qml index aae42cb1..94a8408d 100644 --- a/resources/qml/Reactions.qml +++ b/resources/qml/Reactions.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ReplyPopup.qml b/resources/qml/ReplyPopup.qml index 05464e33..3c4922b2 100644 --- a/resources/qml/ReplyPopup.qml +++ b/resources/qml/ReplyPopup.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/RoomList.qml b/resources/qml/RoomList.qml index 97639baa..2cfd71f9 100644 --- a/resources/qml/RoomList.qml +++ b/resources/qml/RoomList.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/Root.qml b/resources/qml/Root.qml index 1f079213..5f7d7229 100644 --- a/resources/qml/Root.qml +++ b/resources/qml/Root.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ScrollHelper.qml b/resources/qml/ScrollHelper.qml index c87b730e..afbc116f 100644 --- a/resources/qml/ScrollHelper.qml +++ b/resources/qml/ScrollHelper.qml @@ -2,6 +2,7 @@ // Copyright (C) 2017 Christian Mollekopf, // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/SelfVerificationCheck.qml b/resources/qml/SelfVerificationCheck.qml index 336b966d..f6954d3b 100644 --- a/resources/qml/SelfVerificationCheck.qml +++ b/resources/qml/SelfVerificationCheck.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/StatusIndicator.qml b/resources/qml/StatusIndicator.qml index e1ed3b29..2276de11 100644 --- a/resources/qml/StatusIndicator.qml +++ b/resources/qml/StatusIndicator.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml index 4814d84f..2ee9ee77 100644 --- a/resources/qml/TimelineRow.qml +++ b/resources/qml/TimelineRow.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml index dcbcc87e..b82cba65 100644 --- a/resources/qml/TimelineView.qml +++ b/resources/qml/TimelineView.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ToggleButton.qml b/resources/qml/ToggleButton.qml index 98950b8a..b24458c6 100644 --- a/resources/qml/ToggleButton.qml +++ b/resources/qml/ToggleButton.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/TopBar.qml b/resources/qml/TopBar.qml index cce2c89b..4a52d234 100644 --- a/resources/qml/TopBar.qml +++ b/resources/qml/TopBar.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/TypingIndicator.qml b/resources/qml/TypingIndicator.qml index 0b92b2d2..ac995e3c 100644 --- a/resources/qml/TypingIndicator.qml +++ b/resources/qml/TypingIndicator.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/UploadBox.qml b/resources/qml/UploadBox.qml index ccd59f45..2b20c837 100644 --- a/resources/qml/UploadBox.qml +++ b/resources/qml/UploadBox.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/AdaptiveLayout.qml b/resources/qml/components/AdaptiveLayout.qml index 8e3c0e3d..a2148c06 100644 --- a/resources/qml/components/AdaptiveLayout.qml +++ b/resources/qml/components/AdaptiveLayout.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/AdaptiveLayoutElement.qml b/resources/qml/components/AdaptiveLayoutElement.qml index 666a47cc..68793f07 100644 --- a/resources/qml/components/AdaptiveLayoutElement.qml +++ b/resources/qml/components/AdaptiveLayoutElement.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/AvatarListTile.qml b/resources/qml/components/AvatarListTile.qml index 910e0e47..498dc045 100644 --- a/resources/qml/components/AvatarListTile.qml +++ b/resources/qml/components/AvatarListTile.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/FlatButton.qml b/resources/qml/components/FlatButton.qml index 2c9ea061..bcc4697f 100644 --- a/resources/qml/components/FlatButton.qml +++ b/resources/qml/components/FlatButton.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/MainWindowDialog.qml b/resources/qml/components/MainWindowDialog.qml index def4f96b..76c95038 100644 --- a/resources/qml/components/MainWindowDialog.qml +++ b/resources/qml/components/MainWindowDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/NotificationBubble.qml b/resources/qml/components/NotificationBubble.qml index ca0ae6cb..f1315626 100644 --- a/resources/qml/components/NotificationBubble.qml +++ b/resources/qml/components/NotificationBubble.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/ReorderableListview.qml b/resources/qml/components/ReorderableListview.qml index 7e9ae05d..853ea5f6 100644 --- a/resources/qml/components/ReorderableListview.qml +++ b/resources/qml/components/ReorderableListview.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/SpaceMenuLevel.qml b/resources/qml/components/SpaceMenuLevel.qml index f552978d..1641e727 100644 --- a/resources/qml/components/SpaceMenuLevel.qml +++ b/resources/qml/components/SpaceMenuLevel.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/components/TextButton.qml b/resources/qml/components/TextButton.qml index a37f3aee..f34cbb0e 100644 --- a/resources/qml/components/TextButton.qml +++ b/resources/qml/components/TextButton.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/Encrypted.qml b/resources/qml/delegates/Encrypted.qml index ecc771f5..679f7b49 100644 --- a/resources/qml/delegates/Encrypted.qml +++ b/resources/qml/delegates/Encrypted.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/FileMessage.qml b/resources/qml/delegates/FileMessage.qml index daae8635..5e496db5 100644 --- a/resources/qml/delegates/FileMessage.qml +++ b/resources/qml/delegates/FileMessage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/ImageMessage.qml b/resources/qml/delegates/ImageMessage.qml index 12e8a465..af69b983 100644 --- a/resources/qml/delegates/ImageMessage.qml +++ b/resources/qml/delegates/ImageMessage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/MessageDelegate.qml b/resources/qml/delegates/MessageDelegate.qml index c2d49e91..d0569c5a 100644 --- a/resources/qml/delegates/MessageDelegate.qml +++ b/resources/qml/delegates/MessageDelegate.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/NoticeMessage.qml b/resources/qml/delegates/NoticeMessage.qml index 342469db..a1de0465 100644 --- a/resources/qml/delegates/NoticeMessage.qml +++ b/resources/qml/delegates/NoticeMessage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/Pill.qml b/resources/qml/delegates/Pill.qml index 8b67c346..fd24fb51 100644 --- a/resources/qml/delegates/Pill.qml +++ b/resources/qml/delegates/Pill.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/Placeholder.qml b/resources/qml/delegates/Placeholder.qml index f63e62f5..62fb2d9f 100644 --- a/resources/qml/delegates/Placeholder.qml +++ b/resources/qml/delegates/Placeholder.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/PlayableMediaMessage.qml b/resources/qml/delegates/PlayableMediaMessage.qml index 4828843c..c4c143cc 100644 --- a/resources/qml/delegates/PlayableMediaMessage.qml +++ b/resources/qml/delegates/PlayableMediaMessage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/Redacted.qml b/resources/qml/delegates/Redacted.qml index dcdb7248..0b208fb9 100644 --- a/resources/qml/delegates/Redacted.qml +++ b/resources/qml/delegates/Redacted.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/Reply.qml b/resources/qml/delegates/Reply.qml index 8962fa52..4b98b78b 100644 --- a/resources/qml/delegates/Reply.qml +++ b/resources/qml/delegates/Reply.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/delegates/TextMessage.qml b/resources/qml/delegates/TextMessage.qml index da1c66da..bbb58736 100644 --- a/resources/qml/delegates/TextMessage.qml +++ b/resources/qml/delegates/TextMessage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/DeviceVerification.qml b/resources/qml/device-verification/DeviceVerification.qml index ead293d2..845516e0 100644 --- a/resources/qml/device-verification/DeviceVerification.qml +++ b/resources/qml/device-verification/DeviceVerification.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/DigitVerification.qml b/resources/qml/device-verification/DigitVerification.qml index e1f8f6cf..1e25fa9b 100644 --- a/resources/qml/device-verification/DigitVerification.qml +++ b/resources/qml/device-verification/DigitVerification.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/EmojiElement.qml b/resources/qml/device-verification/EmojiElement.qml index d02ede48..20b23e12 100644 --- a/resources/qml/device-verification/EmojiElement.qml +++ b/resources/qml/device-verification/EmojiElement.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/EmojiVerification.qml b/resources/qml/device-verification/EmojiVerification.qml index 4b88ef7b..1948f19c 100644 --- a/resources/qml/device-verification/EmojiVerification.qml +++ b/resources/qml/device-verification/EmojiVerification.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/Failed.qml b/resources/qml/device-verification/Failed.qml index 77327a75..33d46042 100644 --- a/resources/qml/device-verification/Failed.qml +++ b/resources/qml/device-verification/Failed.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/NewVerificationRequest.qml b/resources/qml/device-verification/NewVerificationRequest.qml index 187c3246..98b3fdf3 100644 --- a/resources/qml/device-verification/NewVerificationRequest.qml +++ b/resources/qml/device-verification/NewVerificationRequest.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/Success.qml b/resources/qml/device-verification/Success.qml index d9365194..1608e36a 100644 --- a/resources/qml/device-verification/Success.qml +++ b/resources/qml/device-verification/Success.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/device-verification/Waiting.qml b/resources/qml/device-verification/Waiting.qml index 3054b9c3..b5b43a9e 100644 --- a/resources/qml/device-verification/Waiting.qml +++ b/resources/qml/device-verification/Waiting.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/AliasEditor.qml b/resources/qml/dialogs/AliasEditor.qml index 0f7ed332..d1437d68 100644 --- a/resources/qml/dialogs/AliasEditor.qml +++ b/resources/qml/dialogs/AliasEditor.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml b/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml index 80905039..970d8d0f 100644 --- a/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml +++ b/resources/qml/dialogs/AllowedRoomsSettingsDialog.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/ConfirmJoinRoomDialog.qml b/resources/qml/dialogs/ConfirmJoinRoomDialog.qml index a07aadd2..d61a75f7 100644 --- a/resources/qml/dialogs/ConfirmJoinRoomDialog.qml +++ b/resources/qml/dialogs/ConfirmJoinRoomDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/CreateDirect.qml b/resources/qml/dialogs/CreateDirect.qml index 85768cad..69eb38d0 100644 --- a/resources/qml/dialogs/CreateDirect.qml +++ b/resources/qml/dialogs/CreateDirect.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/CreateRoom.qml b/resources/qml/dialogs/CreateRoom.qml index bfc6d797..569886f2 100644 --- a/resources/qml/dialogs/CreateRoom.qml +++ b/resources/qml/dialogs/CreateRoom.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/HiddenEventsDialog.qml b/resources/qml/dialogs/HiddenEventsDialog.qml index 444ce6a1..7e7a9c05 100644 --- a/resources/qml/dialogs/HiddenEventsDialog.qml +++ b/resources/qml/dialogs/HiddenEventsDialog.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/ImageOverlay.qml b/resources/qml/dialogs/ImageOverlay.qml index 70aa3e87..7437a04b 100644 --- a/resources/qml/dialogs/ImageOverlay.qml +++ b/resources/qml/dialogs/ImageOverlay.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/ImagePackEditorDialog.qml b/resources/qml/dialogs/ImagePackEditorDialog.qml index 891d9c3d..c7325b2f 100644 --- a/resources/qml/dialogs/ImagePackEditorDialog.qml +++ b/resources/qml/dialogs/ImagePackEditorDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/ImagePackSettingsDialog.qml b/resources/qml/dialogs/ImagePackSettingsDialog.qml index 2bbcfe54..ce4d554a 100644 --- a/resources/qml/dialogs/ImagePackSettingsDialog.qml +++ b/resources/qml/dialogs/ImagePackSettingsDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/InputDialog.qml b/resources/qml/dialogs/InputDialog.qml index a674c3fb..de079797 100644 --- a/resources/qml/dialogs/InputDialog.qml +++ b/resources/qml/dialogs/InputDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/InviteDialog.qml b/resources/qml/dialogs/InviteDialog.qml index e7dd4e3a..33fd32c4 100644 --- a/resources/qml/dialogs/InviteDialog.qml +++ b/resources/qml/dialogs/InviteDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/JoinRoomDialog.qml b/resources/qml/dialogs/JoinRoomDialog.qml index 0098370d..b6b1af24 100644 --- a/resources/qml/dialogs/JoinRoomDialog.qml +++ b/resources/qml/dialogs/JoinRoomDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/LeaveRoomDialog.qml b/resources/qml/dialogs/LeaveRoomDialog.qml index cb15a74d..969073f7 100644 --- a/resources/qml/dialogs/LeaveRoomDialog.qml +++ b/resources/qml/dialogs/LeaveRoomDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/LogoutDialog.qml b/resources/qml/dialogs/LogoutDialog.qml index fb5b39f6..3e2a20c2 100644 --- a/resources/qml/dialogs/LogoutDialog.qml +++ b/resources/qml/dialogs/LogoutDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/PhoneNumberInputDialog.qml b/resources/qml/dialogs/PhoneNumberInputDialog.qml index 9c36c98f..1fc5e061 100644 --- a/resources/qml/dialogs/PhoneNumberInputDialog.qml +++ b/resources/qml/dialogs/PhoneNumberInputDialog.qml @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2021 Mirian Margiani // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/PowerLevelEditor.qml b/resources/qml/dialogs/PowerLevelEditor.qml index 4c23d9af..a6124102 100644 --- a/resources/qml/dialogs/PowerLevelEditor.qml +++ b/resources/qml/dialogs/PowerLevelEditor.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml b/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml index 83af00f7..19a9654a 100644 --- a/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml +++ b/resources/qml/dialogs/PowerLevelSpacesApplyDialog.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/RawMessageDialog.qml b/resources/qml/dialogs/RawMessageDialog.qml index 774b078b..4801c179 100644 --- a/resources/qml/dialogs/RawMessageDialog.qml +++ b/resources/qml/dialogs/RawMessageDialog.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/ReadReceipts.qml b/resources/qml/dialogs/ReadReceipts.qml index da87996e..27b03e6a 100644 --- a/resources/qml/dialogs/ReadReceipts.qml +++ b/resources/qml/dialogs/ReadReceipts.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/RoomDirectory.qml b/resources/qml/dialogs/RoomDirectory.qml index d143ed43..9f7f6f8f 100644 --- a/resources/qml/dialogs/RoomDirectory.qml +++ b/resources/qml/dialogs/RoomDirectory.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/RoomMembers.qml b/resources/qml/dialogs/RoomMembers.qml index b44eeab3..d1584555 100644 --- a/resources/qml/dialogs/RoomMembers.qml +++ b/resources/qml/dialogs/RoomMembers.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/RoomSettings.qml b/resources/qml/dialogs/RoomSettings.qml index f6c296f8..7b04f55b 100644 --- a/resources/qml/dialogs/RoomSettings.qml +++ b/resources/qml/dialogs/RoomSettings.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/dialogs/UserProfile.qml b/resources/qml/dialogs/UserProfile.qml index e57d4de5..684ada8f 100644 --- a/resources/qml/dialogs/UserProfile.qml +++ b/resources/qml/dialogs/UserProfile.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/emoji/EmojiPicker.qml b/resources/qml/emoji/EmojiPicker.qml index 174ea6ae..fee746f6 100644 --- a/resources/qml/emoji/EmojiPicker.qml +++ b/resources/qml/emoji/EmojiPicker.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/emoji/StickerPicker.qml b/resources/qml/emoji/StickerPicker.qml index d38461a1..db39f791 100644 --- a/resources/qml/emoji/StickerPicker.qml +++ b/resources/qml/emoji/StickerPicker.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/pages/LoginPage.qml b/resources/qml/pages/LoginPage.qml index 8261ca60..cda1d0d0 100644 --- a/resources/qml/pages/LoginPage.qml +++ b/resources/qml/pages/LoginPage.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/pages/RegisterPage.qml b/resources/qml/pages/RegisterPage.qml index 4cdd98c1..69172bd7 100644 --- a/resources/qml/pages/RegisterPage.qml +++ b/resources/qml/pages/RegisterPage.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/pages/UserSettingsPage.qml b/resources/qml/pages/UserSettingsPage.qml index becfc612..f49ed396 100644 --- a/resources/qml/pages/UserSettingsPage.qml +++ b/resources/qml/pages/UserSettingsPage.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/pages/WelcomePage.qml b/resources/qml/pages/WelcomePage.qml index e1ecc31d..914de763 100644 --- a/resources/qml/pages/WelcomePage.qml +++ b/resources/qml/pages/WelcomePage.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ui/NhekoSlider.qml b/resources/qml/ui/NhekoSlider.qml index 623eeb71..a3df54e2 100644 --- a/resources/qml/ui/NhekoSlider.qml +++ b/resources/qml/ui/NhekoSlider.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ui/Ripple.qml b/resources/qml/ui/Ripple.qml index 0619d924..d6803173 100644 --- a/resources/qml/ui/Ripple.qml +++ b/resources/qml/ui/Ripple.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ui/Snackbar.qml b/resources/qml/ui/Snackbar.qml index 80c0d888..256933d9 100644 --- a/resources/qml/ui/Snackbar.qml +++ b/resources/qml/ui/Snackbar.qml @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ui/Spinner.qml b/resources/qml/ui/Spinner.qml index 3681a36b..c386f95c 100644 --- a/resources/qml/ui/Spinner.qml +++ b/resources/qml/ui/Spinner.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ui/animations/BlinkAnimation.qml b/resources/qml/ui/animations/BlinkAnimation.qml index 87e3b135..d8090db8 100644 --- a/resources/qml/ui/animations/BlinkAnimation.qml +++ b/resources/qml/ui/animations/BlinkAnimation.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/ui/media/MediaControls.qml b/resources/qml/ui/media/MediaControls.qml index d73957ee..b4283e9b 100644 --- a/resources/qml/ui/media/MediaControls.qml +++ b/resources/qml/ui/media/MediaControls.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/ActiveCallBar.qml b/resources/qml/voip/ActiveCallBar.qml index a8a65421..6251b939 100644 --- a/resources/qml/voip/ActiveCallBar.qml +++ b/resources/qml/voip/ActiveCallBar.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/CallDevices.qml b/resources/qml/voip/CallDevices.qml index 60db762a..2e2dd5cf 100644 --- a/resources/qml/voip/CallDevices.qml +++ b/resources/qml/voip/CallDevices.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/CallInvite.qml b/resources/qml/voip/CallInvite.qml index beed2e51..84cfdfef 100644 --- a/resources/qml/voip/CallInvite.qml +++ b/resources/qml/voip/CallInvite.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/CallInviteBar.qml b/resources/qml/voip/CallInviteBar.qml index a622ca27..02034305 100644 --- a/resources/qml/voip/CallInviteBar.qml +++ b/resources/qml/voip/CallInviteBar.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/DeviceError.qml b/resources/qml/voip/DeviceError.qml index 3f37612c..9f0c50d8 100644 --- a/resources/qml/voip/DeviceError.qml +++ b/resources/qml/voip/DeviceError.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/PlaceCall.qml b/resources/qml/voip/PlaceCall.qml index 33ad4cfa..c6efbe9e 100644 --- a/resources/qml/voip/PlaceCall.qml +++ b/resources/qml/voip/PlaceCall.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/ScreenShare.qml b/resources/qml/voip/ScreenShare.qml index f27c4485..d08e72de 100644 --- a/resources/qml/voip/ScreenShare.qml +++ b/resources/qml/voip/ScreenShare.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/resources/qml/voip/VideoCall.qml b/resources/qml/voip/VideoCall.qml index 20bb0535..08a94f20 100644 --- a/resources/qml/voip/VideoCall.qml +++ b/resources/qml/voip/VideoCall.qml @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/AliasEditModel.cpp b/src/AliasEditModel.cpp index 3f24a7c5..bb5b9bfe 100644 --- a/src/AliasEditModel.cpp +++ b/src/AliasEditModel.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/AliasEditModel.h b/src/AliasEditModel.h index 8709e945..6cfc34bc 100644 --- a/src/AliasEditModel.h +++ b/src/AliasEditModel.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/AvatarProvider.cpp b/src/AvatarProvider.cpp index cfa536fe..eb1e7e2a 100644 --- a/src/AvatarProvider.cpp +++ b/src/AvatarProvider.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/AvatarProvider.h b/src/AvatarProvider.h index 0bdb8b7c..e0cf6e52 100644 --- a/src/AvatarProvider.h +++ b/src/AvatarProvider.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/BlurhashProvider.cpp b/src/BlurhashProvider.cpp index 0b06b2d0..f8edc791 100644 --- a/src/BlurhashProvider.cpp +++ b/src/BlurhashProvider.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/BlurhashProvider.h b/src/BlurhashProvider.h index c0826e72..aec6ab7c 100644 --- a/src/BlurhashProvider.h +++ b/src/BlurhashProvider.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Cache.cpp b/src/Cache.cpp index 41b84e11..d018665a 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Cache.h b/src/Cache.h index bb779866..c6a61b8f 100644 --- a/src/Cache.h +++ b/src/Cache.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CacheCryptoStructs.h b/src/CacheCryptoStructs.h index 99e563bd..f1d6184a 100644 --- a/src/CacheCryptoStructs.h +++ b/src/CacheCryptoStructs.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CacheStructs.h b/src/CacheStructs.h index 535807fe..bf8741ea 100644 --- a/src/CacheStructs.h +++ b/src/CacheStructs.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Cache_p.h b/src/Cache_p.h index 7b3bf8b0..69d0240e 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: 2019 The nheko authors // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 27019ba3..c5d3d012 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ChatPage.h b/src/ChatPage.h index 4dc219b4..0ac39faa 100644 --- a/src/ChatPage.h +++ b/src/ChatPage.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Clipboard.cpp b/src/Clipboard.cpp index 72a954ce..51f9b225 100644 --- a/src/Clipboard.cpp +++ b/src/Clipboard.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Clipboard.h b/src/Clipboard.h index 568604b0..213a19fa 100644 --- a/src/Clipboard.h +++ b/src/Clipboard.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ColorImageProvider.cpp b/src/ColorImageProvider.cpp index 6a38c46c..70cc334c 100644 --- a/src/ColorImageProvider.cpp +++ b/src/ColorImageProvider.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ColorImageProvider.h b/src/ColorImageProvider.h index c416d7ec..e8812928 100644 --- a/src/ColorImageProvider.h +++ b/src/ColorImageProvider.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CombinedImagePackModel.cpp b/src/CombinedImagePackModel.cpp index 8847fe65..0841ff7d 100644 --- a/src/CombinedImagePackModel.cpp +++ b/src/CombinedImagePackModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CombinedImagePackModel.h b/src/CombinedImagePackModel.h index 49979fca..2ab82857 100644 --- a/src/CombinedImagePackModel.h +++ b/src/CombinedImagePackModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CommandCompleter.cpp b/src/CommandCompleter.cpp index 307defa4..4cc61291 100644 --- a/src/CommandCompleter.cpp +++ b/src/CommandCompleter.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CommandCompleter.h b/src/CommandCompleter.h index 08272a19..24242209 100644 --- a/src/CommandCompleter.h +++ b/src/CommandCompleter.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CompletionModelRoles.h b/src/CompletionModelRoles.h index 96eb1ade..7fd96599 100644 --- a/src/CompletionModelRoles.h +++ b/src/CompletionModelRoles.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CompletionProxyModel.cpp b/src/CompletionProxyModel.cpp index f46a6367..c7018841 100644 --- a/src/CompletionProxyModel.cpp +++ b/src/CompletionProxyModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/CompletionProxyModel.h b/src/CompletionProxyModel.h index 6bf2eb35..4d9c9f0e 100644 --- a/src/CompletionProxyModel.h +++ b/src/CompletionProxyModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Config.h b/src/Config.h index 5a742337..ba9564f0 100644 --- a/src/Config.h +++ b/src/Config.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/EventAccessors.cpp b/src/EventAccessors.cpp index da0eeff2..86ffc8b3 100644 --- a/src/EventAccessors.cpp +++ b/src/EventAccessors.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/EventAccessors.h b/src/EventAccessors.h index 8e130c29..ce262960 100644 --- a/src/EventAccessors.h +++ b/src/EventAccessors.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ImagePackListModel.cpp b/src/ImagePackListModel.cpp index fac8f10f..1360ed3e 100644 --- a/src/ImagePackListModel.cpp +++ b/src/ImagePackListModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ImagePackListModel.h b/src/ImagePackListModel.h index 9190eb8c..5e1985a7 100644 --- a/src/ImagePackListModel.h +++ b/src/ImagePackListModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/InviteesModel.cpp b/src/InviteesModel.cpp index 8e30847c..52dd4e43 100644 --- a/src/InviteesModel.cpp +++ b/src/InviteesModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/InviteesModel.h b/src/InviteesModel.h index 004f37ca..91b89a21 100644 --- a/src/InviteesModel.h +++ b/src/InviteesModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/JdenticonProvider.cpp b/src/JdenticonProvider.cpp index e9a7c883..fada4c3a 100644 --- a/src/JdenticonProvider.cpp +++ b/src/JdenticonProvider.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/JdenticonProvider.h b/src/JdenticonProvider.h index d8fdbb42..b89126fe 100644 --- a/src/JdenticonProvider.h +++ b/src/JdenticonProvider.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Logging.cpp b/src/Logging.cpp index cd72e395..c41d3f82 100644 --- a/src/Logging.cpp +++ b/src/Logging.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Logging.h b/src/Logging.h index 23ff8236..3d52f2d9 100644 --- a/src/Logging.h +++ b/src/Logging.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/LoginPage.cpp b/src/LoginPage.cpp index 567e8c82..d243691c 100644 --- a/src/LoginPage.cpp +++ b/src/LoginPage.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/LoginPage.h b/src/LoginPage.h index 7e9b601c..bca7f9ca 100644 --- a/src/LoginPage.h +++ b/src/LoginPage.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 1d743844..dcb4be49 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MainWindow.h b/src/MainWindow.h index f567c93e..1664f849 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MatrixClient.cpp b/src/MatrixClient.cpp index b5ea7609..945a5a73 100644 --- a/src/MatrixClient.cpp +++ b/src/MatrixClient.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MatrixClient.h b/src/MatrixClient.h index 2de19e2d..4d313e45 100644 --- a/src/MatrixClient.h +++ b/src/MatrixClient.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MemberList.cpp b/src/MemberList.cpp index 916192c0..e4a3580e 100644 --- a/src/MemberList.cpp +++ b/src/MemberList.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MemberList.h b/src/MemberList.h index f7d2cac6..6a5091db 100644 --- a/src/MemberList.h +++ b/src/MemberList.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MxcImageProvider.cpp b/src/MxcImageProvider.cpp index de800e93..33f691da 100644 --- a/src/MxcImageProvider.cpp +++ b/src/MxcImageProvider.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/MxcImageProvider.h b/src/MxcImageProvider.h index d8325219..097a3657 100644 --- a/src/MxcImageProvider.h +++ b/src/MxcImageProvider.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/PowerlevelsEditModels.cpp b/src/PowerlevelsEditModels.cpp index 2c2d4a7f..9a8e12dc 100644 --- a/src/PowerlevelsEditModels.cpp +++ b/src/PowerlevelsEditModels.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/PowerlevelsEditModels.h b/src/PowerlevelsEditModels.h index d0593f09..bafedabc 100644 --- a/src/PowerlevelsEditModels.h +++ b/src/PowerlevelsEditModels.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ReadReceiptsModel.cpp b/src/ReadReceiptsModel.cpp index f9de970b..7a81690c 100644 --- a/src/ReadReceiptsModel.cpp +++ b/src/ReadReceiptsModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ReadReceiptsModel.h b/src/ReadReceiptsModel.h index 48b1a598..e072b635 100644 --- a/src/ReadReceiptsModel.h +++ b/src/ReadReceiptsModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp index 82302858..0db0427c 100644 --- a/src/RegisterPage.cpp +++ b/src/RegisterPage.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/RegisterPage.h b/src/RegisterPage.h index 9a4e052b..9d81f477 100644 --- a/src/RegisterPage.h +++ b/src/RegisterPage.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/RoomDirectoryModel.cpp b/src/RoomDirectoryModel.cpp index 428b0040..c6d45995 100644 --- a/src/RoomDirectoryModel.cpp +++ b/src/RoomDirectoryModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/RoomDirectoryModel.h b/src/RoomDirectoryModel.h index b0768997..54938561 100644 --- a/src/RoomDirectoryModel.h +++ b/src/RoomDirectoryModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/RoomsModel.cpp b/src/RoomsModel.cpp index 3d13ef8b..476a2d8b 100644 --- a/src/RoomsModel.cpp +++ b/src/RoomsModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/RoomsModel.h b/src/RoomsModel.h index 0b7371db..b2f4e44e 100644 --- a/src/RoomsModel.h +++ b/src/RoomsModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/SSOHandler.cpp b/src/SSOHandler.cpp index 36580ae2..4fed776d 100644 --- a/src/SSOHandler.cpp +++ b/src/SSOHandler.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/SSOHandler.h b/src/SSOHandler.h index 3fd4effd..ab7887ad 100644 --- a/src/SSOHandler.h +++ b/src/SSOHandler.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/SingleImagePackModel.cpp b/src/SingleImagePackModel.cpp index 9d8c3409..40f44fb2 100644 --- a/src/SingleImagePackModel.cpp +++ b/src/SingleImagePackModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/SingleImagePackModel.h b/src/SingleImagePackModel.h index 3040f53e..2f558ece 100644 --- a/src/SingleImagePackModel.h +++ b/src/SingleImagePackModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/TrayIcon.cpp b/src/TrayIcon.cpp index 336da129..1e33ac8d 100644 --- a/src/TrayIcon.cpp +++ b/src/TrayIcon.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/TrayIcon.h b/src/TrayIcon.h index 519f9d14..18bbf9b5 100644 --- a/src/TrayIcon.h +++ b/src/TrayIcon.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp index 145b3b8f..2bb8a118 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h index 4d805bb7..37a53ab2 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/UsersModel.cpp b/src/UsersModel.cpp index 5d7dd5b7..0399bde6 100644 --- a/src/UsersModel.cpp +++ b/src/UsersModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/UsersModel.h b/src/UsersModel.h index e6d21845..aa71990c 100644 --- a/src/UsersModel.h +++ b/src/UsersModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Utils.cpp b/src/Utils.cpp index b0d84339..8ad84e85 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/Utils.h b/src/Utils.h index 31a1a0de..e6d66f47 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dbus/NhekoDBusApi.cpp b/src/dbus/NhekoDBusApi.cpp index a58812ef..1f029b9c 100644 --- a/src/dbus/NhekoDBusApi.cpp +++ b/src/dbus/NhekoDBusApi.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2010 David Sansome // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dbus/NhekoDBusApi.h b/src/dbus/NhekoDBusApi.h index baf942b1..0cd64685 100644 --- a/src/dbus/NhekoDBusApi.h +++ b/src/dbus/NhekoDBusApi.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dbus/NhekoDBusBackend.cpp b/src/dbus/NhekoDBusBackend.cpp index a7fa2d74..b5c36e3d 100644 --- a/src/dbus/NhekoDBusBackend.cpp +++ b/src/dbus/NhekoDBusBackend.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dbus/NhekoDBusBackend.h b/src/dbus/NhekoDBusBackend.h index 83562da2..e923e388 100644 --- a/src/dbus/NhekoDBusBackend.h +++ b/src/dbus/NhekoDBusBackend.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dialogs/FallbackAuth.cpp b/src/dialogs/FallbackAuth.cpp index 5969be0d..9ed04576 100644 --- a/src/dialogs/FallbackAuth.cpp +++ b/src/dialogs/FallbackAuth.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dialogs/FallbackAuth.h b/src/dialogs/FallbackAuth.h index 579d85b0..96418193 100644 --- a/src/dialogs/FallbackAuth.h +++ b/src/dialogs/FallbackAuth.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dialogs/ReCaptcha.cpp b/src/dialogs/ReCaptcha.cpp index 95a1f85f..138d1ee5 100644 --- a/src/dialogs/ReCaptcha.cpp +++ b/src/dialogs/ReCaptcha.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dialogs/ReCaptcha.h b/src/dialogs/ReCaptcha.h index 815b4bf3..7610ef52 100644 --- a/src/dialogs/ReCaptcha.h +++ b/src/dialogs/ReCaptcha.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dock/Dock.cpp b/src/dock/Dock.cpp index 25b65c0c..1629c12c 100644 --- a/src/dock/Dock.cpp +++ b/src/dock/Dock.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/dock/Dock.h b/src/dock/Dock.h index 33bdeeae..3dcd4593 100644 --- a/src/dock/Dock.h +++ b/src/dock/Dock.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/emoji/EmojiModel.cpp b/src/emoji/EmojiModel.cpp index 5a00c43f..c9e6ffe8 100644 --- a/src/emoji/EmojiModel.cpp +++ b/src/emoji/EmojiModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/emoji/EmojiModel.h b/src/emoji/EmojiModel.h index b33df1c3..5b6cf52f 100644 --- a/src/emoji/EmojiModel.h +++ b/src/emoji/EmojiModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/emoji/MacHelper.h b/src/emoji/MacHelper.h index cc3fd645..8de16c12 100644 --- a/src/emoji/MacHelper.h +++ b/src/emoji/MacHelper.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/emoji/Provider.cpp b/src/emoji/Provider.cpp index 41c254d8..1871a47a 100644 --- a/src/emoji/Provider.cpp +++ b/src/emoji/Provider.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/emoji/Provider.h b/src/emoji/Provider.h index 32544793..07b6375f 100644 --- a/src/emoji/Provider.h +++ b/src/emoji/Provider.h @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/DeviceVerificationFlow.cpp b/src/encryption/DeviceVerificationFlow.cpp index df5e0c3e..0e9043dd 100644 --- a/src/encryption/DeviceVerificationFlow.cpp +++ b/src/encryption/DeviceVerificationFlow.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/DeviceVerificationFlow.h b/src/encryption/DeviceVerificationFlow.h index 7a8500c4..d8fea956 100644 --- a/src/encryption/DeviceVerificationFlow.h +++ b/src/encryption/DeviceVerificationFlow.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/Olm.cpp b/src/encryption/Olm.cpp index a1d311e1..ea30da4c 100644 --- a/src/encryption/Olm.cpp +++ b/src/encryption/Olm.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/Olm.h b/src/encryption/Olm.h index e48fde67..55f7241d 100644 --- a/src/encryption/Olm.h +++ b/src/encryption/Olm.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/SelfVerificationStatus.cpp b/src/encryption/SelfVerificationStatus.cpp index fac7f6a2..1f13a541 100644 --- a/src/encryption/SelfVerificationStatus.cpp +++ b/src/encryption/SelfVerificationStatus.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/SelfVerificationStatus.h b/src/encryption/SelfVerificationStatus.h index e5c1971b..32c40ed4 100644 --- a/src/encryption/SelfVerificationStatus.h +++ b/src/encryption/SelfVerificationStatus.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/VerificationManager.cpp b/src/encryption/VerificationManager.cpp index bb986665..cd13fed6 100644 --- a/src/encryption/VerificationManager.cpp +++ b/src/encryption/VerificationManager.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/encryption/VerificationManager.h b/src/encryption/VerificationManager.h index a6f3f861..c6ac1841 100644 --- a/src/encryption/VerificationManager.h +++ b/src/encryption/VerificationManager.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/main.cpp b/src/main.cpp index d1b4b769..9973b03b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2017 Konstantinos Sideris // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/MacNotificationDelegate.h b/src/notifications/MacNotificationDelegate.h index e5bbe23b..68365a86 100644 --- a/src/notifications/MacNotificationDelegate.h +++ b/src/notifications/MacNotificationDelegate.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/Manager.cpp b/src/notifications/Manager.cpp index ba550530..9fd032cd 100644 --- a/src/notifications/Manager.cpp +++ b/src/notifications/Manager.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h index 9c992767..bf7af29b 100644 --- a/src/notifications/Manager.h +++ b/src/notifications/Manager.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/ManagerLinux.cpp b/src/notifications/ManagerLinux.cpp index 225a6533..294df4db 100644 --- a/src/notifications/ManagerLinux.cpp +++ b/src/notifications/ManagerLinux.cpp @@ -1,6 +1,7 @@ // SPDX-FileCopyrightText: 2012 Roland Hieber // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/ManagerMac.cpp b/src/notifications/ManagerMac.cpp index 630080d4..cec87c66 100644 --- a/src/notifications/ManagerMac.cpp +++ b/src/notifications/ManagerMac.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp index 2d2dba37..c950b6e4 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/notifications/NotificationManagerProxy.h b/src/notifications/NotificationManagerProxy.h index c7a2e234..27f91853 100644 --- a/src/notifications/NotificationManagerProxy.h +++ b/src/notifications/NotificationManagerProxy.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/CommunitiesModel.cpp b/src/timeline/CommunitiesModel.cpp index 96d090f7..9f34c3ff 100644 --- a/src/timeline/CommunitiesModel.cpp +++ b/src/timeline/CommunitiesModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/CommunitiesModel.h b/src/timeline/CommunitiesModel.h index a40b4802..8b9ee911 100644 --- a/src/timeline/CommunitiesModel.h +++ b/src/timeline/CommunitiesModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/DelegateChooser.cpp b/src/timeline/DelegateChooser.cpp index c8ab1511..fde9e08d 100644 --- a/src/timeline/DelegateChooser.cpp +++ b/src/timeline/DelegateChooser.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/DelegateChooser.h b/src/timeline/DelegateChooser.h index d34d13e4..b605837b 100644 --- a/src/timeline/DelegateChooser.h +++ b/src/timeline/DelegateChooser.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index 65efc0b4..66eed82f 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/EventStore.h b/src/timeline/EventStore.h index 108fa735..bfca7dbe 100644 --- a/src/timeline/EventStore.h +++ b/src/timeline/EventStore.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp index 94955152..1cec5426 100644 --- a/src/timeline/InputBar.cpp +++ b/src/timeline/InputBar.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/InputBar.h b/src/timeline/InputBar.h index 125591d4..eb261b02 100644 --- a/src/timeline/InputBar.h +++ b/src/timeline/InputBar.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/Permissions.cpp b/src/timeline/Permissions.cpp index 78bb3cf6..a8d8e0ee 100644 --- a/src/timeline/Permissions.cpp +++ b/src/timeline/Permissions.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/Permissions.h b/src/timeline/Permissions.h index 1b3f55e4..bfc2b04a 100644 --- a/src/timeline/Permissions.h +++ b/src/timeline/Permissions.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/PresenceEmitter.cpp b/src/timeline/PresenceEmitter.cpp index 370bbb01..63cadcd1 100644 --- a/src/timeline/PresenceEmitter.cpp +++ b/src/timeline/PresenceEmitter.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/PresenceEmitter.h b/src/timeline/PresenceEmitter.h index c1f07c76..80352a57 100644 --- a/src/timeline/PresenceEmitter.h +++ b/src/timeline/PresenceEmitter.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/Reaction.cpp b/src/timeline/Reaction.cpp index 0047d1e5..0c64d7c6 100644 --- a/src/timeline/Reaction.cpp +++ b/src/timeline/Reaction.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/Reaction.h b/src/timeline/Reaction.h index 9ed3f801..3a83a48b 100644 --- a/src/timeline/Reaction.h +++ b/src/timeline/Reaction.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp index 827cbed1..64eca182 100644 --- a/src/timeline/RoomlistModel.cpp +++ b/src/timeline/RoomlistModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/RoomlistModel.h b/src/timeline/RoomlistModel.h index 0d52102d..81907dff 100644 --- a/src/timeline/RoomlistModel.h +++ b/src/timeline/RoomlistModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/TimelineFilter.cpp b/src/timeline/TimelineFilter.cpp index 9a9df6be..d59d517e 100644 --- a/src/timeline/TimelineFilter.cpp +++ b/src/timeline/TimelineFilter.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/TimelineFilter.h b/src/timeline/TimelineFilter.h index c35f8da3..9a4d44fe 100644 --- a/src/timeline/TimelineFilter.h +++ b/src/timeline/TimelineFilter.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index f3d92e31..7b50da59 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h index 59ad1b37..cb8aa380 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index 12a247c8..ba586ef9 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h index c305fe66..9d8c6844 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/HiddenEvents.cpp b/src/ui/HiddenEvents.cpp index 4686dfef..06a15e32 100644 --- a/src/ui/HiddenEvents.cpp +++ b/src/ui/HiddenEvents.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/HiddenEvents.h b/src/ui/HiddenEvents.h index 3c0e0c67..cac7dad6 100644 --- a/src/ui/HiddenEvents.h +++ b/src/ui/HiddenEvents.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/MxcAnimatedImage.cpp b/src/ui/MxcAnimatedImage.cpp index 7f7210e3..f7ac049f 100644 --- a/src/ui/MxcAnimatedImage.cpp +++ b/src/ui/MxcAnimatedImage.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/MxcAnimatedImage.h b/src/ui/MxcAnimatedImage.h index 8891e57e..407888e4 100644 --- a/src/ui/MxcAnimatedImage.h +++ b/src/ui/MxcAnimatedImage.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/MxcMediaProxy.cpp b/src/ui/MxcMediaProxy.cpp index dadd4478..46d7430f 100644 --- a/src/ui/MxcMediaProxy.cpp +++ b/src/ui/MxcMediaProxy.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/MxcMediaProxy.h b/src/ui/MxcMediaProxy.h index 1b6bf34e..b87e97f0 100644 --- a/src/ui/MxcMediaProxy.h +++ b/src/ui/MxcMediaProxy.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoCursorShape.cpp b/src/ui/NhekoCursorShape.cpp index 1c5918b4..a7ace9a1 100644 --- a/src/ui/NhekoCursorShape.cpp +++ b/src/ui/NhekoCursorShape.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoCursorShape.h b/src/ui/NhekoCursorShape.h index 1f91d7de..f3a1864f 100644 --- a/src/ui/NhekoCursorShape.h +++ b/src/ui/NhekoCursorShape.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoDropArea.cpp b/src/ui/NhekoDropArea.cpp index 736f5172..32047e6a 100644 --- a/src/ui/NhekoDropArea.cpp +++ b/src/ui/NhekoDropArea.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoDropArea.h b/src/ui/NhekoDropArea.h index 70da4451..3d02d52a 100644 --- a/src/ui/NhekoDropArea.h +++ b/src/ui/NhekoDropArea.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoEventObserver.cpp b/src/ui/NhekoEventObserver.cpp index 5e67cec4..a6d4ca11 100644 --- a/src/ui/NhekoEventObserver.cpp +++ b/src/ui/NhekoEventObserver.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoEventObserver.h b/src/ui/NhekoEventObserver.h index 6d14f30f..3d43e6d2 100644 --- a/src/ui/NhekoEventObserver.h +++ b/src/ui/NhekoEventObserver.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoGlobalObject.cpp b/src/ui/NhekoGlobalObject.cpp index 0573d5ee..99921d79 100644 --- a/src/ui/NhekoGlobalObject.cpp +++ b/src/ui/NhekoGlobalObject.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/NhekoGlobalObject.h b/src/ui/NhekoGlobalObject.h index 6ef71bcc..690761a5 100644 --- a/src/ui/NhekoGlobalObject.h +++ b/src/ui/NhekoGlobalObject.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/RoomSettings.cpp b/src/ui/RoomSettings.cpp index 67be0bbb..380ed295 100644 --- a/src/ui/RoomSettings.cpp +++ b/src/ui/RoomSettings.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/RoomSettings.h b/src/ui/RoomSettings.h index 99d27eee..3113d3e3 100644 --- a/src/ui/RoomSettings.h +++ b/src/ui/RoomSettings.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/RoomSummary.cpp b/src/ui/RoomSummary.cpp index 6623da10..3ac04d34 100644 --- a/src/ui/RoomSummary.cpp +++ b/src/ui/RoomSummary.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/RoomSummary.h b/src/ui/RoomSummary.h index 30d47eb1..f985c634 100644 --- a/src/ui/RoomSummary.h +++ b/src/ui/RoomSummary.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/Theme.cpp b/src/ui/Theme.cpp index 02450230..add2e0f9 100644 --- a/src/ui/Theme.cpp +++ b/src/ui/Theme.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/Theme.h b/src/ui/Theme.h index 140e60b3..1d5742cf 100644 --- a/src/ui/Theme.h +++ b/src/ui/Theme.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/ThemeManager.cpp b/src/ui/ThemeManager.cpp index e275fa90..fb044968 100644 --- a/src/ui/ThemeManager.cpp +++ b/src/ui/ThemeManager.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/ThemeManager.h b/src/ui/ThemeManager.h index 1924611d..a5f93468 100644 --- a/src/ui/ThemeManager.h +++ b/src/ui/ThemeManager.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/UIA.cpp b/src/ui/UIA.cpp index d67d1ba9..53715340 100644 --- a/src/ui/UIA.cpp +++ b/src/ui/UIA.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/UIA.h b/src/ui/UIA.h index 73a58ffe..8499f12b 100644 --- a/src/ui/UIA.h +++ b/src/ui/UIA.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp index a3bc87de..cbeb1f4f 100644 --- a/src/ui/UserProfile.cpp +++ b/src/ui/UserProfile.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h index facae6ec..206b607a 100644 --- a/src/ui/UserProfile.h +++ b/src/ui/UserProfile.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/voip/CallDevices.cpp b/src/voip/CallDevices.cpp index 49eca6d5..e47b5960 100644 --- a/src/voip/CallDevices.cpp +++ b/src/voip/CallDevices.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/voip/CallDevices.h b/src/voip/CallDevices.h index 8cfcdd1c..951f1ab2 100644 --- a/src/voip/CallDevices.h +++ b/src/voip/CallDevices.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/voip/CallManager.cpp b/src/voip/CallManager.cpp index 1bb1700f..3d795fc1 100644 --- a/src/voip/CallManager.cpp +++ b/src/voip/CallManager.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/voip/CallManager.h b/src/voip/CallManager.h index 3011444f..4716de7f 100644 --- a/src/voip/CallManager.h +++ b/src/voip/CallManager.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/voip/WebRTCSession.cpp b/src/voip/WebRTCSession.cpp index 706a69d9..73e71030 100644 --- a/src/voip/WebRTCSession.cpp +++ b/src/voip/WebRTCSession.cpp @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/voip/WebRTCSession.h b/src/voip/WebRTCSession.h index 081611e5..da13e356 100644 --- a/src/voip/WebRTCSession.h +++ b/src/voip/WebRTCSession.h @@ -1,5 +1,6 @@ // SPDX-FileCopyrightText: 2021 Nheko Contributors // SPDX-FileCopyrightText: 2022 Nheko Contributors +// SPDX-FileCopyrightText: 2023 Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later -- cgit 1.5.1