422 Commits

Author SHA1 Message Date
Nik Clayton
0e64da7baa
fix: Collect correct columns for NotificationReportEntity (#1274)
`NotificationDao.pagingSource` missed the `reportId` column and
mis-soelled `report_ruleIds`, risking an NPE.

Fix that.

While I'm here, add suggested indices to `NotificationEntity`.
2025-02-08 19:59:07 +01:00
Nik Clayton
c67fb26c0b
revert: Use pachliAccountId in MainActivity (#1267)
It won't be -1, which intent.pachliAccountId might be. Some of the
functions called expect it not to be -1, and crash if it is.
2025-02-07 22:17:59 +01:00
Nik Clayton
54e1978626
feat: Always show the post beng replied to when replying (#1263)
Previous code showed the post being replied to, but in a tiny font and
hidden behind a disclosure triangle that was difficult to spot.

Fix that. Show the post, including the author and their avatar. The text
of the post is selectable for copy/paste in to the reply if necessary
(links and hashtags are deliberately not clickable so they can't be
clicked by accident).

To do this:

Update `ComposeOptions`. Instead of three different properties that
were set if the post was a reply, use a new `InReplyTo` sealed class
that covers two situations; either the caller has the full content of
the status being replied to, in which case it's included, or they only
have the ID of the status being replied to.

Update `ComposeViewModel` with a state flow of `inReplyTo` results to
represent either (a) Not a reply, (b) is a reply, data is loading, (c)
is a reply, data is loaded, or (d) is a reply, error occurred loading
data.

In `ComposeActivity` use this flow to drive updates to a new part of
the UI showing the status being replied to (or hiding that part of the
UI if this is not a reply).
2025-02-06 21:11:07 +01:00
Russssty
04c12a2505 fix(l10n): Update Slovak translations
Currently translated at 100.0% (11 of 11 strings)

Translation: Pachli/Core/Data : Main
Translate-URL: https://hosted.weblate.org/projects/pachli/coredata-main/sk/
2025-02-05 22:14:35 +01:00
Nik Clayton
289d600fd4
revert: Use the correct reblog/unreblog API endpoints (#1264) 2025-02-05 19:59:42 +01:00
Nik Clayton
91d577c128
refactor: Replace the different network response types with ApiResult (#1261)
Previous code used five (!) different types for the network response.

Some used Retrofit's `Response`. This provides access to the headers.

Some used `NetworkResult`. This did not provide access to the headers,
but did provide some higher-order functions (e.g., `fold`) for operating
on the results.

One used a raw `Map`.

One used a raw `Call`.

The rest had been converted to `ApiResult`, a `Result<V, ApiError>`.
This provides the higher-order functions, provides the headers, and
is exception-free, so is the correct type to use.

This PR completes the work of cutting over to `ApiResult`. The return
values are changed and the calling code is adjusted to use the new
functions as appropriate.
2025-02-05 13:37:59 +01:00
Nik Clayton
ccb9628b77
refactor: Simplify page fetching code (#1257)
Previous code complicated the logic to retrieve and fetch a jumbo page
of results around a given status/notification ID. Simplify it to make it
easier to follow.
2025-02-03 20:14:16 +01:00
Nik Clayton
1611e488f6
refactor: Update status storage, fragments (#1249)
# Status storage

Re-work how statuses are stored and managed to separate the cached home
timeline from the cached notification timeline.

Previously, the home timeline pulled all statuses in `StatusEntity`.
Since that table also includes statuses that are referenced from
`NotificationEntity` this could show the wrong data. It also makes it
difficult to cache other timelines in the future.

To fix this:

- Introduce `TimelineStatus` which associates a given timeline with the
statuses on that timeline.

- Use the the `StatusEntity` table as a general cache of statuses.
wherever they're used. 

- Create the home timeline by joining `TimelineStatus` (where the
timeline's kind is `Home`) with the statuses in `StatusEntity`.

This has a number of knock-on effects.

- Deleting from the home timeline now deletes the association from
`TimelineStatus`. The cached status is unaffected, so if it is
referenced from another cached timeline (currently, notifications)
there is no change.

- Modifying a status on one timeline (translating, expanding,
collapsing, etc) modifies it on all timelines that reference that
status.

- `cleanup()` and related functions no longer need to take `limit` or
`keep` parameter, as it's known whether a status is referenced from a
timeline.

Rewriting one of the queries exposed an issue where `TimelineDaoTest`
run locally could return different (incorrect) results to the same test
run on a device (https://issuetracker.google.com/issues/393685887).

So re-implement `TimelineDaoTest` as an `androidTest`, and update the CI
workflow to include a step to run these tests on an API 31 emulator.

# Repositories

- Allow `null` as an initial key.

# Fragments

- Remove unnecessary `refreshAdapterAndScrollToVisibleId`.
2025-02-02 21:29:27 +01:00
Nik Clayton
ecb0f7cc84
refactor: Use a single transaction for all remote mediator operations (#1256)
Previous code used a transaction for updates to the database, but didn't
do the earlier reads in the same transaction. Theoretically this could
race.

Guard against this by using a single transaction for a complete remote
mediator operation (refresh, prepend, append).
2025-02-01 19:59:07 +01:00
Nik Clayton
c6b5f949dc
refactor: Create StatusDao for operations that act on individual statuses (#1252)
TimelineDao contained operations on timelines and statuses which made it
large and confusing.

Factor out the status-specific operations in to the new StatusDao class
to make things more understandable.
2025-02-01 12:11:30 +01:00
Nik Clayton
d42eba90bb
refactor: Rename TimelineStatusEntity to StatusEntity (#1251)
TimelineStatusEntity is going to be repurposed for the table that maps
between a timeline (not just the home timeline) and the statuses on that
timeline.
2025-02-01 11:54:42 +01:00
Weblate (bot)
d851319305
fix(l10n): Translations update from Hosted Weblate (#1246)
Translations update from [Hosted Weblate](https://hosted.weblate.org)
for [Pachli/Fastlane
Metadata](https://hosted.weblate.org/projects/pachli/fastlane-metadata/).


It also includes following components:

* [Pachli/App :
Fdroid](https://hosted.weblate.org/projects/pachli/app-fdroid/)

* [Pachli/App :
Main](https://hosted.weblate.org/projects/pachli/app-main/)

* [Pachli/Core/Activity :
Orange](https://hosted.weblate.org/projects/pachli/coreactivity-orange/)

* [Pachli/Feature/About :
Main](https://hosted.weblate.org/projects/pachli/featureabout-main/)

* [Pachli/Feature/Suggestions :
Main](https://hosted.weblate.org/projects/pachli/featuresuggestions-main/)

* [Pachli/Core/Ui :
Main](https://hosted.weblate.org/projects/pachli/coreui-main/)

* [Pachli/App :
Google](https://hosted.weblate.org/projects/pachli/app-google/)

* [Pachli/Core/Data :
Main](https://hosted.weblate.org/projects/pachli/coredata-main/)

*
[Pachli/Feature/Login](https://hosted.weblate.org/projects/pachli/featurelogin/)

* [Pachli/Core/Designsystem :
Main](https://hosted.weblate.org/projects/pachli/coredesignsystem-main/)

* [Pachli/Feature/Lists :
Main](https://hosted.weblate.org/projects/pachli/featurelists-main/)

* [Pachli/Core/Preferences :
Main](https://hosted.weblate.org/projects/pachli/corepreferences-main/)

* [Pachli/Core/Network :
Main](https://hosted.weblate.org/projects/pachli/corenetwork-main/)

* [Pachli/Core/Activity :
Main](https://hosted.weblate.org/projects/pachli/coreactivity-main/)



Current translation status:

![Weblate translation
status](https://hosted.weblate.org/widget/pachli/fastlane-metadata/horizontal-auto.svg)

---------

Co-authored-by: Kalle Kniivilä <kalle.kniivila@gmail.com>
2025-01-30 12:05:02 +01:00
Aindriú Mac Giolla Eoin
a14c947592 fix(l10n): Update Irish translations
Currently translated at 100.0% (11 of 11 strings)

Translation: Pachli/Core/Data : Main
Translate-URL: https://hosted.weblate.org/projects/pachli/coredata-main/ga/
2025-01-28 19:40:32 +01:00
Nik Clayton
14ac41bf9e chore: Update lint baseline to reflect fixed issues 2025-01-28 13:52:10 +01:00
தமிழ்நேரம்
06130bc397 fix(l10n): Update Tamil translations
Currently translated at 100.0% (11 of 11 strings)

Translation: Pachli/Core/Data : Main
Translate-URL: https://hosted.weblate.org/projects/pachli/coredata-main/ta/
2025-01-28 13:52:10 +01:00
Juan M Sevilla
bae5c5031b fix(l10n): Update Spanish translations
Currently translated at 100.0% (11 of 11 strings)

Translation: Pachli/Core/Data : Main
Translate-URL: https://hosted.weblate.org/projects/pachli/coredata-main/es/
2025-01-28 13:52:10 +01:00
தமிழ்நேரம்
91cfbf677f fix(l10n): Update Tamil translations
Currently translated at 100.0% (10 of 10 strings)

Translation: Pachli/Core/Data : Main
Translate-URL: https://hosted.weblate.org/projects/pachli/coredata-main/ta/
2025-01-28 13:52:10 +01:00
Nik Clayton
0a42ab0b37
fix: Scroll and restore position correctly in Home and Notifications (#1240)
These are cached timelines, backed by Room. Room **requires** the
`PagingConfig` to have `enablePlaceholders = true`. Otherwise the list
is corrupted when scrolling down the list and paging in new items.

To restore the user's reading position correctly in the UI, wait for the
adapter to emit the very first page. Combine this with the user's
refresh key, and the number of placeholders in the page, to scroll the
user to the correct place in the list.

To make all this work, ensure that Room loads a large enough page of
data around the refresh key (in the `initialKey` calculation).
2025-01-28 10:57:18 +01:00
Nik Clayton
ebdd5862cb
fix: Update server capabilities as Akkoma has v1 filter support (#1238) 2025-01-28 10:44:40 +01:00
Nik Clayton
c81bb0238e
refactor: Reformat SQL queries for ease of reading (#1237)
The database queries in the @Query annotations were in a range of
different styles which made them difficult to read, and difficult to
write new ones in a consistent style.

Fix this.

Write a new tool, `sqlfmt`. This processes the DAO files looking for
`@Query(...)` annotations. It extracts the SQL from those annotations
and calls `sqlfluff` (https://github.com/sqlfluff/sqlfluff, which must
be installed separately) to lint and fix formatting issues in the SQL.

The file is re-written with the newly formatted SQL queries.
2025-01-26 19:11:19 +01:00
Nik Clayton
353f123b5d
fix: Show an error message if a Dao error occurs during login (#1235)
Previous code would crash on an SQLiteException. Catch it and convert to
a specific error.
2025-01-25 16:06:04 +01:00
Nik Clayton
ab9589168b
fix: Rewrite prune cache worker queries to respect FK constraints (#1233)
Previous queries to delete stale data from the database could fail due
to the new foreign key constraints.

Rewrite them so statuses and accounts referenced by cached notifications
are not deleted.
2025-01-25 12:22:39 +01:00
Nik Clayton
5f67f9938c
fix: Ensure coroutine cancellations propograte, rethrow CancellationException (#1231)
Previous code had legacy `try ... catch` blocks that could catch all
exceptions, including `CancellationException`, thrown if the job of a
suspending function is cancelled.

Indiscriminately catching those can interfere with cancellation, so use
`currentCoroutineContext().ensureActive()` to rethrow the exception if
the job has been cancelled.
2025-01-24 18:04:46 +01:00
Nik Clayton
9d83970c26
fix: Remove "dummy.placeholder" from network error messages (#1228)
When constructing an ApiError the *original* request is used, because
Retrofit cannot access the request after its been through OkHttp
interceptors. So Retrofit cannot know the actual domaint the request was
sent to, and the "dummy.placeholder" domain is displayed.

To prevent user confusion, and since this can't be corrected, display
just the path and query part of the URL in the error message. This is
still sufficient to diagnose the precise API call and parameters that
resulted in the error.

Fixes #1217
2025-01-23 15:47:05 +01:00
Nik Clayton
11480d808b
fix: Prevent FK constraint failures in DB 12->13 migration (#1227)
The default migration code copies existing NotificationEntity rows to
the new table. This might fail because of the new FK constraint on
TimelineAccountEntity. Fix this by not copying the data over; it's a
local cache, so nothing of importance is lost.
2025-01-23 13:37:25 +01:00
Nik Clayton
7bf322c4f3
refactor: Use same patterns as Notifications* implementation (#1222)
The modifications to the Notifications* classes highlighted different
(and better) ways of writing the code that manages status timelines.
Follow those practices here.

Changes include:

- Move `pachliAccountId` in to `IStatusViewData` so the adapter does not
need to be initialised with the information. This allows the parameter
to be removed from functions that operate on `IStatusViewData`, and the
adapter does not need to be marked `lateinit`.

- Convert Fragment/ViewModel communication to use the `uiResult`
pattern instead of separate `uiSuccess` and `uiError`.

- Show a `LinearProgressIndicator` when refreshing the list.

- Restore the reading position more smoothly by responding when the
first page of results is loaded.

- Save the reading position to `RemoteKeyEntity` instead of a dedicated
property in `AccountEntity`.

- Fixed queries for returning the row number of a notification or
status in the database.

Fixes #238, #872, #928, #1190
2025-01-23 13:23:17 +01:00
Nik Clayton
05c68f6df9
fix: Don't crash when "Load newest posts" is called (#1221)
Previous code could crash because of a foreign key constraint between
`TimelineStatusEntity` and `TimelineAccountEntity`.

Specifically, `removeAllAccounts` would remove accounts that were still
referenced by cached notifications or statuses (the statuses were
retained because they were referenced by notifications).

Fix this by only removing accounts that are not referenced by anything.

While I'm here, `NotificationEntity` should have an FK constraint to
`TimelineAccountEntity`, so add that.
2025-01-21 13:44:33 +01:00
Nik Clayton
e8e84a1538
feat: Persist notification filtering decisions locally (#1196)
Persist the user's notification filtering decisions (i.e., the decision
to show a filtered notification) by caching all notification data,
including the filtering decision, in the database.

## Structure changes

This means re-writing the notification management system to use Room and
the Paging library to manage the notification data.

Implement a repository and remote mediator for notifications that does
this, with knock on effects for the viewmodel and the fragment. Take the
opportunity to rewrite these to reflect (current understanding of) best
practice for state management.

Active account information is included in the viewdata for each
notification when sent to the adapter. This allows the adapter to be
created before the fragment knows the active account from the view
model.

`RemoteKeyDao` is extended to support sorting the "refresh" key for
a timeline. This is used to persist the notifications refresh key
instead of the `lastNotificationId` property in the account (which has
been removed).

## UX changes

A linear progress bar is used to show progress when notifications are
refreshed, as part of the ongoing effort to migrate the UI.
2025-01-19 22:24:30 +01:00
Nik Clayton
40370e607e
fix: Show lists sorted by title (#1218)
Some parts of the UI already showed lists sorted by title, but not all.

The areas fixed are:

- The list of lists in the main drawer (left side navitation)
- The list of lists when adding/removing an account from a list

Fixes #1168
2025-01-18 18:02:29 +01:00
Nik Clayton
df5e65bb47
refactor: Delete account data using foreign key constraints (#1205)
Previous code managed account deletions by having specific functions to
call when an account was deleted that would delete all related data.

Replace this with proper foreign key references back to the account ID,
and cascade account deletes to the related data.

Add tests to ensure the deletes happen as expected. Update existing
tests to create an account where necessary so the new foreign key
constraints are kept.
2025-01-16 18:14:06 +01:00
Nik Clayton
80c0f8813a
chore: Move EventHub from :app to :core:eventhub (#1204)
Precursor to other work that will use the eventhub from modules other
than :app.
2025-01-15 16:19:35 +01:00
Nik Clayton
59ab24a0a6
refactor: Move StatusViewData to core.data.model (#1195)
Makes it available to code in other modules, which will be necessary
when implementing cached notifications.
2025-01-06 15:20:08 +01:00
jens persson
ffe4a73d38 fix(l10n): Update Swedish translations
Currently translated at 100.0% (10 of 10 strings)

Translation: Pachli/Core/Data : Main
Translate-URL: https://hosted.weblate.org/projects/pachli/coredata-main/sv/
2024-12-23 12:33:00 +01:00
Nik Clayton
1996d33aee
feat: Show link title when viewing posts about a trending link (#1184)
Previous code inadvertently crashed when the user clicked on a trending
link count to see statuses about the link.

Don't do that. Instead, show the statuses that mention the link, and
show the link's title in the actionbar to make it more explicit for the
user.

Special-case this timeline type in TimelineActivity so it can't be added
to a tab (it would be difficult to distinguish it amongst tabs as they
would have the same icon).
2024-12-16 20:19:44 +01:00
Nik Clayton
6883072e6f
feat: Show request method and URL in ApiResult errors (#1181)
Append the request method ("GET", etc) and the request URL to error
messages in ApiResult errors. This should provide additional inforamtion
when debugging issues reported by users.
2024-12-14 15:01:44 +01:00
Nik Clayton
16f6330a9e
fix: Include URL when constructing nodeinfo error string (#1160)
Previous code crashed because of a missing format argument.
2024-12-08 14:30:29 +01:00
Nik Clayton
57be148fbf
feat: Show posts that mention a trending link (#1153)
Mastodon 4.3 introduced a new API to fetch a timeline of posts that
mention a trending link.

Use that to display a "See <n> posts about ths link" message in a
trending link's preview card (if supported by the server).

Define a new timeline type with associated API call to fetch the
timeline.

Add an accessibilty action to support this.

While I'm here also support author's in preview cards that don't have a
related Fediverse account; show their name in this case.

Fixes #1123
2024-12-03 23:00:31 +01:00
Nik Clayton
d03cf09708
fix: Show correct account name in "Open as ..." menu (#1139) 2024-11-26 21:01:36 +01:00
Nik Clayton
982963b3b2
refactor: Use type converters instead calling moshi.adapter by hand (#1134)
A few places in the code were calling `moshi.adapter` to marshall
to/from strings in the database where type converters either already
exist, or are straightforward to create.

Create the missing type converters, and use them throughout. This
simplifies several places where a Moshi instance no longer needs to be
passed through several layers of method calls.

Since this doesn't change the underlying database representation of the
data there's no need to bump the database version number.
2024-11-25 21:25:28 +01:00
renovate[bot]
ccab076dc5
fix(deps): update dependency org.robolectric:robolectric to v4.14.1 (#1122)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [org.robolectric:robolectric](http://robolectric.org)
([source](https://redirect.github.com/robolectric/robolectric)) | `4.14`
-> `4.14.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.robolectric:robolectric/4.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.robolectric:robolectric/4.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.robolectric:robolectric/4.14/4.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.robolectric:robolectric/4.14/4.14.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nik Clayton <nik@ngo.org.uk>
2024-11-25 12:47:07 +01:00
Nik Clayton
e009c00a76
feat: Initial support for filtering notifications by sending account (#1127)
Allow the user to define filtering rules for notifications by sending
account:

- Not followed
- Younger than 30d
- Limited by moderators

and a policy for each of either show, warn, or hide.

To do this:

## Manage followers

- Create a new `FollowingAccountEntity`, to record accounts the logged
in account is following.
- Fetch the account's followers when an account is made active, and
persist to this table.
- Provide the followers as a property on `PachliAccount`
- Update this table if the user follows/unfollows accounts during normal
operation.

## Track account creation time

- Record account creation time in `TimelineAccount`.

## Track notification creation time

- Record notification creation time in `Notification`.

## API

- Always fetch all notifications, including those the server is
filtering.

## UX and storage for account filters

- Show a new Account preference to edit account notification filters.
- Display a dialog to manage account notification filters.
- Persist the user's choice to new properties in `AccountEntity`.
- New `AccountManager` methods to update the properties

## Filtering notifications

- New `NotificationFilter.filterNotificationByAccount()` method to make
the filtering decision based on the user's preferences.
- Use this in `NotificationFetcher` to filter notifications before
creating Android notifications.
- Use this in `NotificationsViewModel` to filter notifications before
display in `NotificationsFragment`.

## UX for filtered notifications

- Display filtered (with warning) notifications inline with other
notifications, with UI to disclose the notification or edit the filters.
2024-11-25 11:35:05 +01:00
Nik Clayton
acdbf1e52f
refactor: Extract notification type icon code (#1126)
This code will be used elsewhere in an upcoming change, so extract it
now to minimise the diffs.

While I'm here, provide an icon for mentions, and an attribute for the
"favourite" colour.
2024-11-22 15:05:06 +01:00
Nik Clayton
4c7107c910
feat: Support Pleroma returning dates with no timezone (#1120)
Pleroma (and possibly other servers) can return dates that have no
timezone. Previous code would fail to deserialise JSON in this state and
show an error.

Patch around this by assuming anything with a missing timezone is in UTC
(timezone suffix "Z").

Fixes #562
2024-11-21 16:20:27 +01:00
Nik Clayton
9f908cfb7b
refactor: Convert AccountSelectionListener to fun interface (#1118)
`AccountSelectionListener` only has one method; converting to a Kotlin
`fun interface` simplifies the calling code.
2024-11-20 19:50:04 +01:00
Nik Clayton
632282d0e2
fix: Prevent crash when showing account chooser (#1117)
Chooser dialog could start before any accounts have loaded. Fix by
collecting the account flow and waiting for the first emission (convert
the flow to shared instead of state so there's no initial empty list).

Guard against the potential for a similar issue when fetching
notifications.

Order the list of accounts with active account first so that code that
skips it by ignoring the first item works correctly.
2024-11-20 19:28:29 +01:00
Nik Clayton
5c048311b2
refactor: Ensure copying text experience is consistent (#1115)
Previous code was inconsistent about whether or not a notification toast
was shown after copying text (contrary to platform guidelines), and
there was some code duplication.

Fix this with a new `ClipboardUseCase` with a `copyTextTo` method that
handles copying text to the clipboard and showing a message afterwards
(depending on platform level).
2024-11-20 14:51:24 +01:00
Nik Clayton
9ffd89b666
feat: Show extra a11y actions for trending links and suggested accounts (#1114)
Extend the "suggested accounts" accessibility actions to include any
mentions in the account's bio. Links, mentions, and hashtags are now
shown with a button to easily copy them.

Extend the "trending links" accessibility actions with a new "copy link"
action.

Consolidate common functionality in to the new
`PachliRecyclerviewAccessibilityDelegate` base class.
2024-11-20 12:47:43 +01:00
Nik Clayton
f2ed6a0dab
fix: Ensure items in accessibility dialogs are clickable (#1112)
The copy button meant that some dialogs did not return the item click.

Fix this by having the adapter listen for clicks and forward them on.
Pre-emptively move the adapter to core.ui, as it's going to be useful
for the other accessiblity delegates.

Fixes #1108
2024-11-19 15:04:22 +01:00
Nik Clayton
654a81a136
refactor: Convert account relationship API calls to use ApiResult (#1109) 2024-11-18 17:34:52 +01:00
renovate[bot]
88561afcca
fix(deps): update dependency org.robolectric:robolectric to v4.14 (#1105)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [org.robolectric:robolectric](http://robolectric.org)
([source](https://redirect.github.com/robolectric/robolectric)) | `4.13`
-> `4.14` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.robolectric:robolectric/4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.robolectric:robolectric/4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.robolectric:robolectric/4.13/4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.robolectric:robolectric/4.13/4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMS41IiwidXBkYXRlZEluVmVyIjoiMzkuMTEuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nik Clayton <nik@ngo.org.uk>
2024-11-17 13:43:28 +01:00