diff --git a/src/localtextrecordingcollection.cpp b/src/localtextrecordingcollection.cpp index 7c55b0255a569268b9ae83339cbc103667dc586c..2a9d02d52ce4c8609a8e1441026c022a4644ef37 100644 --- a/src/localtextrecordingcollection.cpp +++ b/src/localtextrecordingcollection.cpp @@ -55,7 +55,7 @@ public: virtual bool edit ( Media::Recording* item ) override; virtual bool addNew ( Media::Recording* item ) override; virtual bool addExisting( const Media::Recording* item ) override; - QByteArray fetch(const QByteArray& sha1); + QString fetch(const QByteArray& sha1); private: virtual QVector<Media::Recording*> items() const override; @@ -96,6 +96,7 @@ bool LocalTextRecordingEditor::save(const Media::Recording* recording) if ( file.open(QIODevice::WriteOnly | QIODevice::Text) ) { QTextStream streamFileOut(&file); + streamFileOut.setCodec("UTF-8"); streamFileOut << i.value(); streamFileOut.flush(); file.close(); @@ -132,7 +133,7 @@ bool LocalTextRecordingEditor::addExisting(const Media::Recording* item) return false; } -QByteArray LocalTextRecordingEditor::fetch(const QByteArray& sha1) +QString LocalTextRecordingEditor::fetch(const QByteArray& sha1) { QFile file(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/text/" + sha1 + ".json"); @@ -141,7 +142,7 @@ QByteArray LocalTextRecordingEditor::fetch(const QByteArray& sha1) return QByteArray(); } - return file.readAll(); + return QString::fromUtf8(file.readAll()); } QVector<Media::Recording*> LocalTextRecordingEditor::items() const @@ -230,12 +231,18 @@ bool LocalTextRecordingCollection::fetch(const Element& e) Media::TextRecording* LocalTextRecordingCollection::fetchFor(const ContactMethod* cm) { const QByteArray& sha1 = cm->sha1(); - const QByteArray content = static_cast<LocalTextRecordingEditor*>(editor<Media::Recording>())->fetch(sha1); + const QString content = static_cast<LocalTextRecordingEditor*>(editor<Media::Recording>())->fetch(sha1); if (content.isEmpty()) return nullptr; - QJsonDocument loadDoc = QJsonDocument::fromJson(content); + QJsonParseError err; + QJsonDocument loadDoc = QJsonDocument::fromJson(content.toUtf8(), &err); + + if (err.error != QJsonParseError::ParseError::NoError) { + qWarning() << "Error Decoding Text Message History Json" << err.errorString(); + return nullptr; + } Media::TextRecording* r = Media::TextRecording::fromJson({loadDoc.object()}, cm);