Commit Graph

5021 Commits

Author SHA1 Message Date
Nik Clayton 6fedfe54ba
fix: Restore the user's reading position under all circumstances (#133)
The previous code did not always work when the user returned to the app
after a lengthy absence (e.g., overnight).

Instead of restoring by scrolling in `TimelineFragment`, restore by
working with the platform.

Determine the initial page to fetch by looking half a page ahead of the
saved saved status ID, and fetch that status and the page immediately
prior. This seems to match the view's expectations about what will be
immediately available.

Set `jumpThreshold` and `enablePlaceholders` in the `PagingConfig` so
the paging system will jump to the saved status.

Remove the restoration code in `TimelineFragment`.

Fixes #53
2023-09-29 11:10:55 +02:00
Nik Clayton d434144922
ci: Upload orangeRelease to Google Play (internal track) (#134)
Start building infrastructure to automatically build and deploy the
`orangeRelease` variant to Google Play.

The variant needs an automatically incrementing `versionCode`. That is
derived from the count of all commits.

Change the separator between the version and the build metadata in the
`versionName` from `-` to `+` to be consistent with semantic versioning.

This is still an experiment, so the workflow is triggered manually and
only uploads to the internal track
2023-09-28 13:50:02 +02:00
Nik Clayton b947c1b289
fix: Improve error handling when blocking accounts (#131)
The previous code ran the API call in a `try/catch block`, and handled
errors in the `catch`. But `NetworkResult` already catches the exception
and transforms it to a failure, so the error case was not handled.

Replace with `NetworkResult.fold`.
2023-09-27 18:32:58 +02:00
Nik Clayton 50d9aedad9
chore(deps): Update to AGP 8.1.1 (#130) 2023-09-27 18:06:14 +02:00
Nik Clayton 0b8d702960
refactor: Remove duplicate `MainCoroutineRule` (#129) 2023-09-27 17:53:24 +02:00
renovate[bot] ad167bf293
chore(deps): update dependency androidx.preference:preference-ktx to v1.2.1 (#103)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[androidx.preference:preference-ktx](https://developer.android.com/jetpack/androidx/releases/preference#1.2.1)
([source](https://cs.android.com/androidx/platform/frameworks/support))
| `1.2.0` -> `1.2.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.preference:preference-ktx/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.preference:preference-ktx/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.preference:preference-ktx/1.2.0/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.preference:preference-ktx/1.2.0/1.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 15:38:28 +02:00
renovate[bot] e8a75aa41b
chore(deps): update r0adkll/upload-google-play action to v1.1.2 (#98)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[r0adkll/upload-google-play](https://togithub.com/r0adkll/upload-google-play)
| action | patch | `v1.1.1` -> `v1.1.2` |

---

### Release Notes

<details>
<summary>r0adkll/upload-google-play
(r0adkll/upload-google-play)</summary>

###
[`v1.1.2`](https://togithub.com/r0adkll/upload-google-play/compare/v1.1.1...v1.1.2)

[Compare
Source](https://togithub.com/r0adkll/upload-google-play/compare/v1.1.1...v1.1.2)

</details>

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 15:18:12 +02:00
renovate[bot] 334d5b9704
chore(deps): update dependency gradle to v8.3 (#110)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [gradle](https://gradle.org)
([source](https://togithub.com/gradle/gradle)) | minor | `8.1.1` ->
`8.3` |

---

### Release Notes

<details>
<summary>gradle/gradle (gradle)</summary>

### [`v8.3`](https://togithub.com/gradle/gradle/releases/tag/v8.3.0):
8.3

[Compare
Source](https://togithub.com/gradle/gradle/compare/v8.2.1...v8.3.0)

The Gradle team is excited to announce Gradle 8.3.

[Read the Release Notes](https://docs.gradle.org/8.3/release-notes.html)

We would like to thank the following community members for their
contributions to this release of Gradle:
[Adam](https://togithub.com/aSemy),
[Ahmed Ehab](https://togithub.com/ahmedehabb),
[Aurimas](https://togithub.com/liutikas),
[Baptiste Decroix](https://togithub.com/bdecroix-spiria),
[Björn Kautler](https://togithub.com/Vampire),
[Borewit](https://togithub.com/Borewit),
[Korov](https://togithub.com/Korov),
[Mohammed Thavaf](https://togithub.com/mthavaf),
[Patrick Brückner](https://togithub.com/madmuffin1),
[Philip Wedemann](https://togithub.com/hfhbd),
[Róbert Papp](https://togithub.com/TWiStErRob),
[Shi Chen](https://togithub.com/CsCherrYY),
[Tony Robalik](https://togithub.com/autonomousapps)

#### Upgrade instructions

Switch your build to use Gradle 8.3 by updating your wrapper:

    ./gradlew wrapper --gradle-version=8.3

#### Reporting problems

If you find a problem with this release, please file a bug on [GitHub
Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue
guidelines.
If you're not sure you're encountering a bug, please use the
[forum](https://discuss.gradle.org/c/help-discuss).

We hope you will build happiness with Gradle, and we look forward to
your feedback via [Twitter](https://twitter.com/gradle) or on
[GitHub](https://togithub.com/gradle).

###
[`v8.2.1`](https://togithub.com/gradle/gradle/compare/v8.2.0...v8.2.1)

[Compare
Source](https://togithub.com/gradle/gradle/compare/v8.2.0...v8.2.1)

### [`v8.2`](https://togithub.com/gradle/gradle/releases/tag/v8.2.0):
8.2

[Compare
Source](https://togithub.com/gradle/gradle/compare/v8.1.1...v8.2.0)

The Gradle team is excited to announce Gradle 8.2.

Amongst other improvements, this release addresses two security
vulnerabilities:

- [Dependency cache path
traversal](https://togithub.com/gradle/gradle/security/advisories/GHSA-2h6c-rv6q-494v)
- [Path traversal vulnerabilities in handling of Tar
archives](https://togithub.com/gradle/gradle/security/advisories/GHSA-84mw-qh6q-v842)

[Read the Release Notes](https://docs.gradle.org/8.2/release-notes.html)

We would like to thank the following community contributors for their
contributions to this release of Gradle:

[Bruno Didot](https://togithub.com/didot),
[Eric Vantillard](https://togithub.com/evantill),
[esfomeado](https://togithub.com/esfomeado),
[Jendrik Johannes](https://togithub.com/jjohannes),
[Jonathan Leitschuh](https://togithub.com/JLLeitschuh),
[Lee Euije](https://togithub.com/euije),
[Stefan Oehme](https://togithub.com/oehme),
[Todor Dinev](https://togithub.com/tdinev),
[Yanshun Li](https://togithub.com/Chaoba)

#### Upgrade instructions

Switch your build to use Gradle 8.2 by updating your wrapper:

`./gradlew wrapper --gradle-version=8.2`

#### Reporting problems

If you find a problem with this release, please file a bug on [GitHub
Issues](https://togithub.com/gradle/gradle/issues) adhering to our issue
guidelines.
If you're not sure you're encountering a bug, please use the
[forum](https://discuss.gradle.org/c/help-discuss).

We hope you will build happiness with Gradle, and we look forward to
your feedback via [Twitter](https://twitter.com/gradle) or on
[GitHub](https://togithub.com/gradle).

</details>

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 15:03:20 +02:00
renovate[bot] 4a42e40099
chore(deps): update plugin ktlint to v11.6.0 (#111)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| org.jlleitschuh.gradle.ktlint | `11.5.1` -> `11.6.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jlleitschuh.gradle.ktlint/11.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jlleitschuh.gradle.ktlint/11.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jlleitschuh.gradle.ktlint/11.5.1/11.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jlleitschuh.gradle.ktlint/11.5.1/11.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 14:52:56 +02:00
renovate[bot] 26a82d1df8
chore(deps): update autodispose to v2.2.1 (#112)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.uber.autodispose2:autodispose](https://togithub.com/uber/AutoDispose)
| `2.1.1` -> `2.2.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.uber.autodispose2:autodispose/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.uber.autodispose2:autodispose/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.uber.autodispose2:autodispose/2.1.1/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.uber.autodispose2:autodispose/2.1.1/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[com.uber.autodispose2:autodispose-androidx-lifecycle](https://togithub.com/uber/AutoDispose)
| `2.1.1` -> `2.2.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.uber.autodispose2:autodispose-androidx-lifecycle/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.uber.autodispose2:autodispose-androidx-lifecycle/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.uber.autodispose2:autodispose-androidx-lifecycle/2.1.1/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.uber.autodispose2:autodispose-androidx-lifecycle/2.1.1/2.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>uber/AutoDispose (com.uber.autodispose2:autodispose)</summary>

###
[`v2.2.1`](https://togithub.com/uber/AutoDispose/blob/HEAD/CHANGELOG.md#Version-221)

[Compare
Source](https://togithub.com/uber/AutoDispose/compare/2.2.0...2.2.1)

*2023-07-25*

- **Fix**: Don't hold a reference to the view if detach happens before
`DetachEventCompletable` is disposed.

###
[`v2.2.0`](https://togithub.com/uber/AutoDispose/blob/HEAD/CHANGELOG.md#Version-220)

[Compare
Source](https://togithub.com/uber/AutoDispose/compare/2.1.1...2.2.0)

*2023-07-23*

- **Fix**: Dispose the handle returned by `Job.invokeOnCompletion` when
Rx subscription is disposed.
- **Fix**: The `withScope()` lint now correctly handles different named
arguments order.
- **Fix**: Support kotlin if/when/lambda expressions in lint lenient
mode.
-   Update AndroidX Lifecycle to `2.6.1`.
-   Update Kotlin to `1.9.0`.
-   Update RxJava to `3.1.6`.
-   Update RxAndroid to `3.0.2`.
-   Update lint to `8.0.2`/`31.0.2`.
-   Update error-prone to `2.20.0`.
- Update dokka + fresh coat of paint on API docs on the project site:
https://uber.github.io/AutoDispose/api/2.x/

Special thanks to [@&#8203;alexfu](https://togithub.com/alexfu),
[@&#8203;sanggggg](https://togithub.com/sanggggg), and
[@&#8203;psteiger](https://togithub.com/@&#8203;psteiger) for
contributing to this release!

</details>

---

### 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 these
updates again.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 14:51:27 +02:00
renovate[bot] 09317fd89d
chore(deps): update dependency io.reactivex.rxjava3:rxjava to v3.1.7 (#107)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [io.reactivex.rxjava3:rxjava](https://togithub.com/ReactiveX/RxJava) |
`3.1.6` -> `3.1.7` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.reactivex.rxjava3:rxjava/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.reactivex.rxjava3:rxjava/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.reactivex.rxjava3:rxjava/3.1.6/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.reactivex.rxjava3:rxjava/3.1.6/3.1.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ReactiveX/RxJava (io.reactivex.rxjava3:rxjava)</summary>

###
[`v3.1.7`](https://togithub.com/ReactiveX/RxJava/releases/tag/v3.1.7)


[Maven](http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava3%7Crxjava%7C3.1.7%7C)
[JavaDocs](http://reactivex.io/RxJava/3.x/javadoc/3.1.7)

##### API changes

- Add `onDropped` callback for `onBackpressureLatest`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7542'>[#&#8203;7542](https://togithub.com/ReactiveX/RxJava/issues/7542)</a>)
- Add `onDropped` callback to `onBackpressureBuffer`. (<a
href='https://github.com/ReactiveX/RxJava/issues/7567'>[#&#8203;7567](https://togithub.com/ReactiveX/RxJava/issues/7567)</a>)

##### Documentation

- Change summary to caption, because summary is obsolete in HTML5. (<a
href='https://github.com/ReactiveX/RxJava/issues/7534'>[#&#8203;7534](https://togithub.com/ReactiveX/RxJava/issues/7534)</a>)
- Try using https to access the reactive streams javadoc. (<a
href='https://github.com/ReactiveX/RxJava/issues/7535'>[#&#8203;7535](https://togithub.com/ReactiveX/RxJava/issues/7535)</a>)
-   Improve Javadoc of `Disposable`.

##### Other

- Add minimum GitHub token permissions for workflows. (<a
href='https://github.com/ReactiveX/RxJava/issues/7541'>[#&#8203;7541](https://togithub.com/ReactiveX/RxJava/issues/7541)</a>)
- Create SECURITY.md (<a
href='https://github.com/ReactiveX/RxJava/issues/7546'>[#&#8203;7546](https://togithub.com/ReactiveX/RxJava/issues/7546)</a>)
- Add copyright and license to jar. (<a
href='https://github.com/ReactiveX/RxJava/issues/7520'>[#&#8203;7520](https://togithub.com/ReactiveX/RxJava/issues/7520)</a>)
- Convert `CompletableOnErrorComplete$onError` inner class to static.
(<a
href='https://github.com/ReactiveX/RxJava/issues/7575'>[#&#8203;7575](https://togithub.com/ReactiveX/RxJava/issues/7575)</a>)
- Allow null accumulator type in the `collect(Collector)` operators. (<a
href='https://github.com/ReactiveX/RxJava/issues/7590'>[#&#8203;7590](https://togithub.com/ReactiveX/RxJava/issues/7590)</a>)

</details>

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 14:45:19 +02:00
renovate[bot] c0ae24ead1
chore(deps): update androidx.media3 to v1.1.1 (#101)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [androidx.media3:media3-ui](https://togithub.com/androidx/media) |
`1.1.0` -> `1.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-ui/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-ui/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-ui/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-ui/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-datasource-okhttp](https://togithub.com/androidx/media)
| `1.1.0` -> `1.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-datasource-okhttp/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-datasource-okhttp/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-datasource-okhttp/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-datasource-okhttp/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer-rtsp](https://togithub.com/androidx/media)
| `1.1.0` -> `1.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer-rtsp/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer-rtsp/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer-rtsp/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer-rtsp/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer-hls](https://togithub.com/androidx/media)
| `1.1.0` -> `1.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer-hls/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer-hls/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer-hls/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer-hls/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer-dash](https://togithub.com/androidx/media)
| `1.1.0` -> `1.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer-dash/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer-dash/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer-dash/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer-dash/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[androidx.media3:media3-exoplayer](https://togithub.com/androidx/media)
| `1.1.0` -> `1.1.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/androidx.media3:media3-exoplayer/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/androidx.media3:media3-exoplayer/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/androidx.media3:media3-exoplayer/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/androidx.media3:media3-exoplayer/1.1.0/1.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>androidx/media (androidx.media3:media3-ui)</summary>

###
[`v1.1.1`](https://togithub.com/androidx/media/blob/HEAD/RELEASENOTES.md#111-2023-08-14)

[Compare
Source](https://togithub.com/androidx/media/compare/1.1.0...1.1.1)

This release corresponds to the
[ExoPlayer 2.19.1
release](https://togithub.com/google/ExoPlayer/releases/tag/r2.19.1).

This release includes the following changes since the
[1.1.0 release](#&#8203;110-2023-07-05):

-   Common Library:
    -   Remove accidentally added `multidex` dependency from all modules
        ([#&#8203;499](https://togithub.com/androidx/media/issues/499)).
-   ExoPlayer:
- Fix issue in `PlaybackStatsListener` where spurious `PlaybackStats`
are
        created after the playlist is cleared.
- Add additional fields to Common Media Client Data (CMCD) logging:
streaming format (sf), stream type (st), version (v), top birate (tb),
object duration (d), measured throughput (mtp) and object type (ot)
([#&#8203;8699](https://togithub.com/google/ExoPlayer/issues/8699)).
-   Audio:
- Fix a bug where `Player.getState()` never transitioned to
`STATE_ENDED`
        when playing very short files
        ([#&#8203;538](https://togithub.com/androidx/media/issues/538)).
-   Audio Offload:
    -   Prepend Ogg ID Header and Comment Header Pages to bitstream for
        offloaded Opus playback in accordance with RFC 7845.
-   Video:
- H.265/HEVC: Fix parsing SPS short and long term reference picture
info.
-   Text:
- CEA-608: Change cue truncation logic to only consider visible text.
Previously indent and tab offset were included when limiting the cue
length to 32 characters (which was technically correct by the spec)
([#&#8203;11019](https://togithub.com/google/ExoPlayer/issues/11019)).
-   IMA extension:
    -   Bump IMA SDK version to 3.30.3.
-   Session:
- Add custom layout to the state of the controller and provide a getter
to
        access it. When the custom layout changes,
`MediaController.Listener.onCustomLayoutChanged` is called. Apps that
want to send different custom layouts to different Media3 controller can
        do this in `MediaSession.Callback.onConnect` by using an
`AcceptedResultBuilder` to make sure the custom layout is available to
        the controller when connection completes.
- Fix cases where `MediaLibraryServiceLegacyStub` sent an error to a
        `Result` that didn't support this which produced an
        `UnsupportedOperationException`
        ([#&#8203;78](https://togithub.com/androidx/media/issues/78)).
    -   Fix the way `PlayerWrapper` creates a `VolumeProviderCompat` by
        determining `volumeControlType` through both legacy commands
(`COMMAND_ADJUST_DEVICE_VOLUME` and `COMMAND_SET_DEVICE_VOLUME`) and new
        commands (`COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS` and
        `COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS`)
        ([#&#8203;554](https://togithub.com/androidx/media/issues/554)).

</details>

---

### 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 these
updates again.

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 14:42:41 +02:00
renovate[bot] 5e101ffc6e
chore(deps): update actions/checkout action to v4 (#124)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://togithub.com/actions/checkout) | action |
major | `v3` -> `v4` |

---

### Release Notes

<details>
<summary>actions/checkout (actions/checkout)</summary>

###
[`v4`](https://togithub.com/actions/checkout/blob/HEAD/CHANGELOG.md#v400)

[Compare Source](https://togithub.com/actions/checkout/compare/v3...v4)

- [Support fetching without the --progress
option](https://togithub.com/actions/checkout/pull/1067)
-   [Update to node20](https://togithub.com/actions/checkout/pull/1436)

</details>

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-27 12:13:11 +02:00
renovate[bot] a2640230bd
chore(deps): update dependency com.github.mikeortiz:touchimageview to v3.6 (#117)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[com.github.MikeOrtiz:TouchImageView](https://togithub.com/MikeOrtiz/TouchImageView)
| `3.5` -> `3.6` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.github.MikeOrtiz:TouchImageView/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.github.MikeOrtiz:TouchImageView/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.github.MikeOrtiz:TouchImageView/3.5/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.github.MikeOrtiz:TouchImageView/3.5/3.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>MikeOrtiz/TouchImageView
(com.github.MikeOrtiz:TouchImageView)</summary>

###
[`v3.6`](https://togithub.com/MikeOrtiz/TouchImageView/releases/tag/3.6)

[Compare
Source](https://togithub.com/MikeOrtiz/TouchImageView/compare/3.5...3.6)

<!-- Release notes generated using configuration in .github/release.yml
at 3.6 -->

#### What's Changed

##### Exciting New Features 🎉

- api34 by [@&#8203;hannesa2](https://togithub.com/hannesa2) in
[https://github.com/MikeOrtiz/TouchImageView/pull/555](https://togithub.com/MikeOrtiz/TouchImageView/pull/555)

##### Other Changes

- Bump androidx.recyclerview:recyclerview from 1.3.0 to 1.3.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/MikeOrtiz/TouchImageView/pull/546](https://togithub.com/MikeOrtiz/TouchImageView/pull/546)
- Bump Kotlin 1.9 by [@&#8203;hannesa2](https://togithub.com/hannesa2)
in
[https://github.com/MikeOrtiz/TouchImageView/pull/548](https://togithub.com/MikeOrtiz/TouchImageView/pull/548)
- Bump com.github.bumptech.glide:glide from 4.15.1 to 4.16.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/MikeOrtiz/TouchImageView/pull/549](https://togithub.com/MikeOrtiz/TouchImageView/pull/549)
- Bump kotlin_version from 1.9.0 to 1.9.10 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/MikeOrtiz/TouchImageView/pull/551](https://togithub.com/MikeOrtiz/TouchImageView/pull/551)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/MikeOrtiz/TouchImageView/pull/553](https://togithub.com/MikeOrtiz/TouchImageView/pull/553)
- Fix compileSdk deprecation by
[@&#8203;hannesa2](https://togithub.com/hannesa2) in
[https://github.com/MikeOrtiz/TouchImageView/pull/556](https://togithub.com/MikeOrtiz/TouchImageView/pull/556)
- Remove Froyo method by
[@&#8203;hannesa2](https://togithub.com/hannesa2) in
[https://github.com/MikeOrtiz/TouchImageView/pull/557](https://togithub.com/MikeOrtiz/TouchImageView/pull/557)
- Bump com.android.tools.build:gradle from 8.1.0 to 8.1.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/MikeOrtiz/TouchImageView/pull/550](https://togithub.com/MikeOrtiz/TouchImageView/pull/550)
- Bump androidx.core:core-ktx from 1.10.1 to 1.12.0 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/MikeOrtiz/TouchImageView/pull/552](https://togithub.com/MikeOrtiz/TouchImageView/pull/552)

**Full Changelog**:
https://github.com/MikeOrtiz/TouchImageView/compare/3.5...3.6

</details>

---

### 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 has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nik Clayton <nik@ngo.org.uk>
2023-09-27 12:10:49 +02:00
Nik Clayton c5a5540467
refactor: Remove rxjava3 from Mastodon API spec (#128)
Remove the rxjava3 `Single` type from the MastodonAPI definition,
replacing with `Response` or `NetworkResult` as appropriate.

Update callsites and tests as appropriate.

This removes the need for `com.squareup.retrofit2:adapter-rxjava3`
2023-09-27 11:35:55 +02:00
Nik Clayton 11fecb1914
feat: Show vertical scrollbars on scrollable lists (#96)
Display normal Android (i.e., fading) scrollbars when the user scrolls
in lists.
2023-09-26 15:57:35 +02:00
Nik Clayton f71a5e1237
ci: Run ktlint workflow on forks, with write permissions (#95)
Previously the permissions were only applied to branches from this
repository, not forks. Use `pull_request_target` so the `GITHUB_TOKEN`
will have the correct permissions when this workflow is run from a PR
created from a clone.

Remove the `issues` permission, it didn't seem necessary.
2023-09-25 18:18:39 +02:00
Nik Clayton 04025e99ff
fix: Show media when opening a thread, based on user preferences (#93)
A previous change dropped the check to see if media was marked as
sensitive, and so all media was hidden when viewing a thread. Reinstate
the check so only sensitive media is hidden (if the user preferences are
set that way).
2023-09-24 21:23:29 +02:00
Nik Clayton 9b21f3f9bf
refactor: Ensure `statusDisplayOptions` are created consistently (#92)
Previous code created `statusDisplayOptions` in full each time, risking
the creation of inconsistent states / defaults.

Refactor to use `StatusDisplayOptions.from()` so the user's settings
(and defaults) are always respected.
2023-09-24 21:23:07 +02:00
Nik Clayton af7b668476
fix: Enable/disable vote button when the user can/can't vote (#91)
Previously the voting button was always enabled, even if the user hadn't
made a choice.

Disable the button by default, and listen for clicks on the options.
Enable the button whenever one or more options are selected.

Fixes #90
2023-09-23 21:01:33 +02:00
Nik Clayton 2169c91281 fix: Ensure `setLifeOnScrollTargetView` is called when fragment resumes
If you do not do this and the fragment is in a pager then it can be
overridden when another fragment is swiped in to view.
2023-09-23 16:21:05 +02:00
Nik Clayton d2d6f147ea fix: Remove second `AppBarLayout` from activity_trending
Previous code `include`'d `toolbar_basic` inside an `AppBarLayout`.
But `toolbar_basic` already contains an `AppBarLayout`, which
resulted in some rendering issues.

Remove the `include` and incorporate the `MaterialToolbar` directly.
Set the toolbar to scroll out of the way when the screen scrolls, so
the behaviour is consistent with the tabs in `MainActivity` and
`AccountActivity`.
2023-09-23 16:21:05 +02:00
Nik Clayton f2cce6947e fix: Use the correct colour for the status bar
Previously, in `MainActivity` and `AccountActivity` the status bar would
be `colorPrimaryDark`.

Adjust the layouts and code so that `colorSurface` is used to match
the toolbar colour.

Fixes #79
2023-09-23 16:21:05 +02:00
Nik Clayton 0b74b073a4
fix: Ensure poll option text is visible against the background (#86)
Draw poll bars using the container colour variants to ensure that the
text drawn on top is also visible against the background.

Fixes #85
2023-09-23 11:58:00 +02:00
Nik Clayton 5fd15852fb
refactor: Use constant keys whenever preference values are fetched (#84) 2023-09-23 11:26:46 +02:00
Nik Clayton 3a274b0594
refactor: Replace .to... with .from() in most cases (#82)
The previous code generally converted between a higher and a lower type
by putting the type conversion functions on the lower type.

This introduced cycles in the code dependency graph, and made it more
difficult to follow the code flow.

Refactor the code so that types generally have a `from(...)` static
factory method that can create an instance from a lower type, and if
appropriate a `to...()` method that can also create an instance of that
lower type.

Add `docs/code-style.md` which explains the rationale for this change
in more detail so that future contributors can write code in the same
style.
2023-09-22 15:17:38 +02:00
Nik Clayton f45a3df83f refactor: Use resource strings on the hashtag toolbar menu 2023-09-20 19:05:35 +02:00
Nik Clayton 2b2d5d4bd8 refactor: Remove unnecessary tint from composeToggleVisibilityButton 2023-09-20 19:05:35 +02:00
Nik Clayton f9e5063ce6 fix: Label the header and avatar on the account screen 2023-09-20 19:05:35 +02:00
Nik Clayton 2bcb595777 fix: Label the image on the focus dialog 2023-09-20 19:05:35 +02:00
Nik Clayton 254edf5e6f refactor: Mark the image overlay is not important for accessibility 2023-09-20 19:05:35 +02:00
Nik Clayton 0fadb6f3fd fix: Set the contentDescription for avatars 2023-09-20 19:05:35 +02:00
Nik Clayton acaf2a7d89 refactor: Remove warnings about unclosed resources
In `MediaUploader` the lint warning can be ignored, as the stream is
closed elsewhere.

In the other files `.use` is used to simplify the code and remove
the need for Closeable.closeQuietly (as `.use` catches exceptions that
are thrown when closing).
2023-09-20 19:05:35 +02:00
Nik Clayton d00dc97a5f refactor: Suppress an unncessary CheckResult lint error
The result is used, lint isn't smart enough to figure that out.
2023-09-20 19:05:35 +02:00
Nik Clayton d555e2a69c refactor: Fix KDoc warnings 2023-09-20 19:05:35 +02:00
Nik Clayton 1aea1cde8b refactor: Resolve theoretical `BaseActivity` NPEs 2023-09-20 19:05:35 +02:00
Nik Clayton 4db1af5b50 refactor: Resolve theoretical `StatusBaseViewHolder` NPEs
Use `assert` to note when a nullable value is known to be non-null.

Extract a method call to a variable where necessary to do this.
2023-09-20 19:05:35 +02:00
Nik Clayton a6bad12271 refactor: Resolve theoretical Notification NPEs
Use `assert` to note when a nullable value is known to be non-null.

Extract a method call to a variable where necessary to do this.

Update `CharSequence.unicodeWrap()` to handle a null `CharSequence`.
2023-09-20 19:05:35 +02:00
Nik Clayton 7b7976c31b refactor: Rewrite `onRequestPermissionsResult` to remove a theoretical NPE 2023-09-20 19:05:35 +02:00
Nik Clayton e762008a2a refactor: Use Java enhanced switch 2023-09-20 19:05:35 +02:00
Nik Clayton 1a817d9b29 fix: Fix potential NPE in `ConversationViewHolder`
`ConversationViewHolder` calls `getDisplayName()`, which may return
null.

Replace with `getName()`, which is consistent with usage in other
classes. Mark `getDisplayName()` as deprecated to prevent future
usage.
2023-09-20 19:05:35 +02:00
Nik Clayton da808793f5 refactor: Remove unncessary `val` from constructor parameter 2023-09-20 19:05:35 +02:00
Nik Clayton 26ff8e5bad refactor: Remove unnecessary return type from `handleProfileClick` 2023-09-20 19:05:35 +02:00
Nik Clayton 8c95472d42 refactor: Remove unused `consumed` property 2023-09-20 19:05:35 +02:00
Nik Clayton ba8048a3d6 refactor: Remove unnecessary SVG metadata 2023-09-20 19:05:35 +02:00
Nik Clayton 249718edf3 refactor: Remove unused `statusAsync` function 2023-09-20 19:05:35 +02:00
Nik Clayton 7b7c304f61 refactor: Remove unused `hasTab` function 2023-09-20 19:05:35 +02:00
Nik Clayton c335fa6217 refactor: Suppress lint errors for unused log TAG variables 2023-09-20 19:05:35 +02:00
Nik Clayton 986ccd0532 refactor: Remove unnecessary `?:` operator
Left hand side of the operation was always non-null.
2023-09-20 19:05:35 +02:00
Nik Clayton 20e5877a29 refactor: Convert sealed sub-objects to `data object` 2023-09-20 19:05:35 +02:00