From 7063f1bf03ebe5f4a967bf6de3bee3ed7185291c Mon Sep 17 00:00:00 2001 From: Martchus Date: Mon, 7 Aug 2023 17:34:06 +0200 Subject: [PATCH] Fix creation of song description from JavaScript object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It cannot just use `toString()` as this would turn e.g. `undefined` into the string ยด"undefined"` instead of an empty string. --- cli/mediafileinfoobject.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/cli/mediafileinfoobject.cpp b/cli/mediafileinfoobject.cpp index 22e2ae6..5322f7a 100644 --- a/cli/mediafileinfoobject.cpp +++ b/cli/mediafileinfoobject.cpp @@ -147,15 +147,22 @@ QJSValue UtilityObject::queryTekstowo(const QJSValue &songDescription) return m_engine->newQObject(QtGui::queryTekstowo(makeSongDescription(songDescription))); } +static QString propertyString(const QJSValue &obj, const QString &propertyName) +{ + const auto val = obj.property(propertyName); + return val.isUndefined() || val.isNull() ? QString() : val.toString(); +} + QtGui::SongDescription UtilityObject::makeSongDescription(const QJSValue &obj) { - auto desc = QtGui::SongDescription(obj.property(QStringLiteral("songId")).toString()); - desc.title = obj.property(QStringLiteral("title")).toString(); - desc.album = obj.property(QStringLiteral("album")).toString(); - desc.albumId = obj.property(QStringLiteral("albumId")).toString(); - desc.artist = obj.property(QStringLiteral("artist")).toString(); - desc.artistId = obj.property(QStringLiteral("artistId")).toString(); - desc.year = obj.property(QStringLiteral("year")).toString(); + auto desc = QtGui::SongDescription(); + desc.songId = propertyString(obj, QStringLiteral("songId")); + desc.title = propertyString(obj, QStringLiteral("title")); + desc.album = propertyString(obj, QStringLiteral("album")); + desc.albumId = propertyString(obj, QStringLiteral("albumId")); + desc.artist = propertyString(obj, QStringLiteral("artist")); + desc.artistId = propertyString(obj, QStringLiteral("artistId")); + desc.year = propertyString(obj, QStringLiteral("year")); return desc; }