If an empty URL was entered (i.e. only whitespace) then that would be
accepted and added to the database as temporary entry to be loaded and
checked later. However, sqlite will convert this to a NULL entry. This
would lead to Kasts not being able to retrieve that feed from the DB,
and hence not being able to create a proper object. This would then
lead to a nullptr dereference down the line.
Note that this is a corner case: other invalid URLs are spotted
correctly and do not cause the application to crash.
BUG: 467394
Before the introduction of streaming, the "status" would be removed when
an episode was downloaded or marked as played, which made sense. With
the introduction of streaming it makes sense to also remove the "new"
status when (streaming) playback starts. At that point in time the
episode should indeed no longer considered to be "new".
Using WAL mode avoids having to lock the database for certain
transactions. Therefore, deadlocks between read/writes from different
threads should not happen anymore. These were rare, but happened
sometimes on slower hardware or slow storage devices.
BUG: 465110
Flatpaks have a problem with FolderDialog from labs: it never returns a
path. Therefore Kasts was - up to now - using FileDialog from QtQuick1.
However, this was causing problems on Android and Windows. Now we only
use QtQuick1 FileDialog for flatpak and FolderDialog everywhere else.
CCBUG: 458331
libVLC has a hardcoded maximum number of redirects. Several podcasts
need more than this number. Therefore we resolve the final url through
QNetworkReply and send the final url to the audio player.
Otherwise it'll become a so-called automagic dependency with no control
over including support for it or not, other than having it installed on
the system or not.
For LIBVLC CMAKE_DISABLE_FIND_PACKAGE can be used, but for
pkg_check_modules no such things exits and we need an explicit option.