When we used the AppBar widget we did not specify the "centerTitle"
property, so that the title was aligned within the default of the
platform. This means on iOS and macOS the title was centered, but on
Android, Windows and Linux the title was aligned on the left side.
This wasn't intended and we want to have the same style on all
Platforms, so that the title is now centered on all Platforms like it
was already done on iOS and macOS.
As reported in #25 the list of sources in a column can not be scrolled
vertically when there are a lot of sources which can not all be
displayed within the existing space.
This problem only occures when a user has no touch device or trackpad,
e.g. on Linux, Windows or the Web.
To fix this we changed the scroll behaviour in the app to allow
scrolling via drag gestures. For the reported case this means the list
of sources can be dragged to the right or left side to view all the
other sources which are hidden.
We have to add in-app purchases for the iOS, macOS and Android store, so
that users can also get the premium features of the app without using
Stripe for payments.
The in-app purchases are only enabled when a user uses the app with the
default Supabase environment or with the Supabase environment provided
during build time. If a user uses his own Supabase instance, he will not
be able to upgrade to the premium tier via in-app purchases.
We are using RevenueCat for in-app purchases, which automatically sends
all the events for a user to the "revenuecat-webhooks-v1" edge function.
Depending on the received event we can then upgrade / downgrade the
users profile. To be able to use RevenueCat as an additional provider to
Stripe we also had to add a new "subscriptionProvider" provider column
to the "profiles" table, which stores the information via which provider
a user upgraded his account.
Instead of downloading the Flatpak files from GitHub in the
"app.feeddeck.feeddeck.yml" file, we are now adding the files to the
archive we create during the release process.
When a user scrolls through a list of items and loads more items via the
"Load More" button and then clicks on the mark all items as read button,
it could happen that the request fails, because Supabase can not handle
the update filter with a large list of item ids.
To avoid this error we are splitting the list of item ids provided in
the "updateReadStates" into chunks of 25 items for the in clause in the
update filter.
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.
This commit adds a "Get Started" guide for the mobile and desktop
version of FeedDeck. The guide describes the basic concepts and settings
of the app to make it easier to get started with the FeedDeck.
This is also used for the review process in the different app stores to
make it easier to get the app approved.
During the review of the submission of the iOS and macOS versions of
FeedDeck we encountered some problems, so that the app was rejected. For
that we had to make the following changes:
- Change the foreground and background color of the "Sign in with Apple"
button. This means we are now using black as foreground and white as
background color.
- Add the "Sign in with Apple" capability to the macOS version, to
handle the sign in within the app as it is done for the iOS version.
- Add description in the "CreateDeck" widget, because it was confusing
for the review and they were thinking that they had to provide their
name.
- 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.
The settings page now contains an info section, which is used to show
the current app version via the "package_info_plus" package, the link to
our website, the link to our GitHub repository and the link to our X
account.
Add continuous delivery workflows for the desktop apps. While we want to
provide the desktop versions of FeedDeck though the different app stores
we still want to build them via GitHub Actions, so users can also test
the desktop apps before an official release.
This is also useful to build the binaries we can then download and
upload to the official stores, since we currently only have a macOS
system to build the apps.
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.
Instead of rendering the images for a Nitter item within the description
in the details view, we are now rendering the images via the
"ItemMediaGallery" widget. To not render the images twice, we also added
the "disableImages" paramter to the "ItemDescription" widget, to not
render the images in the widget.