For the item ingestion logic we are now also looking at the published
date for all entries in a RSS feed. If the published date is older then
the last update date of a source the item will be skipped. This way we
should reduce the number of duplicated items, where an entry was updated
in the RSS feed, so that it had a new id and was written again to the
database and not only updated.
In the "isYoutubeUrl" function we are checking if the provided url is
related to YouTube. For that we checked if the url starts with
"https://www.youtube.com/" or "https://m.youtube.com/", but we also have
to check if the url starts with "https://youtube.com/" which is used
when a users shares a link to a channel via the YouTube app.
In this commit we add the missing "https://youtube.com/" option to the
"isYoutubeUrl" function.
It is now possible to use a custom Nitter instances. This means a user
must not rely on our Nitter instance and can instead use his own
instance. To use a custom Nitter instance a user must provide the full
RSS feed url for the instance.
If a RSS feed entry did not contain a "published" field, we skipped the
entry and didn't added it to the database. Now it is also possible to
use feeds without a "published" field. If a feed entry does not contain
the field it must contain a "updated" field, which we then use for the
"publishedAt" field in the database. If a feed entry doesn't contain one
of the two fields the entry is still skipped.
This commit improves the parsing of the RSS feeds for a podcast, because
some podcasts were not working as expected:
- The "https://gotime.fm/rss" podcast uses the "itunes:image" field for
the podcast icon instead of "image", so that we now looking at both
fields to add the podcast icon.
- The "https://itsallwidgets.com/podcast/feed" podcast didn't contain a
link in the entries, so that all entries were skipped. For that a
podcast must not contain a link anymore to be parsed, but most contain
a media file which can be played within the app.
- Adjust "Release" section in contributing guide.
- Disable "X" datasource, since it is not working after the latest API
adjustments.
- Update "version" key and "msix_config.msix_version" key in
"pubspec.yaml" file.
- Change user in "AddSourceReddit" widget help text.
- Enable macOS App Sandbox.
- Adjust logo for Windows version.
Improve the media handling within the app. We do not save the media
files for items to the Supabase storage anymore. The source icons are
now only saved in the Supabase storage, the usage of an url as source
icon is not possible anymore.
The media files for items are directly retrieved from the corresponding
url or for the web version from the "image-proxy-v1" Supabase function.
If the image is retireved from the Supabase function we cache the image
in the browser via the cache control headers. If the image is directly
retrieved from it's url it's cached by the "CachedNetworkImage" widget.
It is now possible to use a Nitter instance, where the RSS endpoints are
protected via basic authentication. For that a new
"FEEDDECK_SOURCE_NITTER_BASIC_AUTH" environment variable was added,
which can be used to set the value for the authentication header.