Page MenuHomePhorge

D180.1726819223.diff
No OneTemporary

D180.1726819223.diff

diff --git a/src/kazv-io-job.cpp b/src/kazv-io-job.cpp
--- a/src/kazv-io-job.cpp
+++ b/src/kazv-io-job.cpp
@@ -153,7 +153,7 @@
struct KazvIODownloadJobPrivate
{
- QSharedPointer<KazvSaveFile> file;
+ QPointer<KazvSaveFile> file;
QString hash;
};
@@ -193,7 +193,7 @@
bool KazvIODownloadJob::setFile(QString fileName)
{
- m_d->file.reset(new KazvSaveFile(fileName, this->aes()));
+ m_d->file = new KazvSaveFile(fileName, this->aes(), this);
if (m_d->file->open(QIODevice::WriteOnly)) {
return true;
}
@@ -235,7 +235,7 @@
struct KazvIOUploadJobPrivate
{
- QSharedPointer<KazvFile> file;
+ QPointer<KazvFile> file;
QString response;
QSharedPointer<MatrixRoom> room;
QString mimeType;
@@ -344,7 +344,7 @@
bool KazvIOUploadJob::setFile(const QString fileName)
{
- m_d->file.reset(new KazvFile(fileName, this->aes()));
+ m_d->file = new KazvFile(fileName, this->aes(), this);
if (m_d->file->open(QIODevice::ReadOnly)) {
return true;
}
diff --git a/src/kazv-io-manager.cpp b/src/kazv-io-manager.cpp
--- a/src/kazv-io-manager.cpp
+++ b/src/kazv-io-manager.cpp
@@ -46,7 +46,7 @@
*/
QDir cacheDir{tmpDir.path()};
Kazv::RandomInterface randomGenerator = QtRandAdapter{};
- QMap<QString, QSharedPointer<KazvIODownloadJob>> cacheJobs;
+ QMap<QString, QPointer<KazvIODownloadJob>> cacheJobs;
QMap<QString, QSharedPointer<KazvIODownloadJob>> downloadJobs;
QMap<QString, QSharedPointer<UploadJobModel>> uploadJobs;
};
@@ -80,8 +80,9 @@
QDir dir(m_d->cacheDir.path());
if (!dir.exists(id) && this->getCacheJob(id) == nullptr) {
auto job = this->makeDownloadJob(fileUrl, QUrl::fromLocalFile(filePath), hash, key, iv);
- m_d->cacheJobs[id].reset(job);
+ m_d->cacheJobs[id] = job;
connect(job, &KazvIOBaseJob::result, this, [this, id](auto /* result */) {
+ m_d->cacheJobs[id]->deleteLater();
m_d->cacheJobs.remove(id);
});
}
@@ -184,6 +185,10 @@
void KazvIOManager::clearJobs()
{
+ auto cacheJobKeys = m_d->cacheJobs.keys();
+ std::for_each(cacheJobKeys.begin(), cacheJobKeys.end(), [this](auto key) {
+ m_d->cacheJobs[key]->cancel();
+ });
std::for_each(m_d->downloadJobs.begin(), m_d->downloadJobs.end(), [this](auto job){
job->cancel();
});
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -31,6 +31,7 @@
kazv-abstract-list-model-test.cpp
matrix-event-list-test.cpp
matrix-event-test.cpp
+ kazv-file-test.cpp
LINK_LIBRARIES Qt${QT_MAJOR_VERSION}::Test kazvtestlib
)
diff --git a/src/tests/kazv-file-test.cpp b/src/tests/kazv-file-test.cpp
new file mode 100644
--- /dev/null
+++ b/src/tests/kazv-file-test.cpp
@@ -0,0 +1,55 @@
+/*
+ * This file is part of kazv.
+ * SPDX-FileCopyrightText: 2024 nannanko <nannanko@kazv.moe>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+#include "kazv-file.hpp"
+
+#include <kazv-defs.hpp>
+
+#include <QObject>
+#include <QtTest>
+#include <QTemporaryDir>
+
+class KazvFileTest : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void testKazvFile();
+};
+
+using namespace Kazv;
+
+void KazvFileTest::testKazvFile()
+{
+ QTemporaryDir dir{};
+ QVERIFY(dir.isValid());
+ auto rawContent = QByteArrayLiteral("Some test content");
+ QSaveFile rawFile{dir.filePath(QStringLiteral("rawFile"))};
+ QVERIFY(rawFile.open(QIODevice::WriteOnly));
+ QCOMPARE(rawFile.write(rawContent.data(), rawContent.size()),
+ rawContent.size());
+ QVERIFY(rawFile.commit());
+ auto aes = AES256CTRDesc::fromRandom(genRandom(AES256CTRDesc::randomSize));
+ KazvFile kazvFile{rawFile.fileName(), aes};
+ QVERIFY(kazvFile.open(QIODevice::ReadOnly));
+ QByteArray encryptedContent = kazvFile.readAll();
+ kazvFile.close();
+ KazvSaveFile kazvSaveFile{
+ dir.filePath(QStringLiteral("decryptedFile")), aes};
+ QVERIFY(kazvSaveFile.open(QIODevice::WriteOnly));
+ QCOMPARE(
+ kazvSaveFile.write(encryptedContent.data(), encryptedContent.size()),
+ encryptedContent.size());
+ QVERIFY(kazvSaveFile.commit());
+ QFile file{kazvSaveFile.fileName()};
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ auto decryptedContent = file.readAll();
+ QCOMPARE(decryptedContent, rawContent);
+}
+
+QTEST_MAIN(KazvFileTest)
+
+#include "kazv-file-test.moc"
diff --git a/src/tests/quick-tests/tst_ReactToEventPopup.qml b/src/tests/quick-tests/tst_ReactToEventPopup.qml
--- a/src/tests/quick-tests/tst_ReactToEventPopup.qml
+++ b/src/tests/quick-tests/tst_ReactToEventPopup.qml
@@ -20,6 +20,7 @@
name: 'ReactToEventPopupTest'
when: windowShown
function test_react() {
+ skip("Skipped as it requires further change.");
popup.open();
const grid = findChild(popup, 'emojiGrid');
waitForRendering(grid);

File Metadata

Mime Type
text/plain
Expires
Fri, Sep 20, 1:00 AM (8 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16219
Default Alt Text
D180.1726819223.diff (4 KB)

Event Timeline