Merge branch 'develop' into valere/call/fix_join_button_on_several_items
This commit is contained in:
commit
180ad5a281
12 changed files with 120 additions and 15 deletions
2
.github/workflows/generate_github_pages.yml
vendored
2
.github/workflows/generate_github_pages.yml
vendored
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: ⏬ Checkout with LFS
|
- name: ⏬ Checkout with LFS
|
||||||
uses: nschloe/action-cached-lfs-checkout@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4
|
uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
||||||
- name: Use JDK 21
|
- name: Use JDK 21
|
||||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
2
.github/workflows/nightlyReports.yml
vendored
2
.github/workflows/nightlyReports.yml
vendored
|
|
@ -34,7 +34,7 @@ jobs:
|
||||||
swap-storage: false
|
swap-storage: false
|
||||||
|
|
||||||
- name: ⏬ Checkout with LFS
|
- name: ⏬ Checkout with LFS
|
||||||
uses: nschloe/action-cached-lfs-checkout@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4
|
uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
||||||
|
|
||||||
- name: Use JDK 21
|
- name: Use JDK 21
|
||||||
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
|
||||||
|
|
|
||||||
4
.github/workflows/recordScreenshots.yml
vendored
4
.github/workflows/recordScreenshots.yml
vendored
|
|
@ -43,13 +43,13 @@ jobs:
|
||||||
labels: Record-Screenshots
|
labels: Record-Screenshots
|
||||||
- name: ⏬ Checkout with LFS (PR)
|
- name: ⏬ Checkout with LFS (PR)
|
||||||
if: github.event.label.name == 'Record-Screenshots'
|
if: github.event.label.name == 'Record-Screenshots'
|
||||||
uses: nschloe/action-cached-lfs-checkout@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4
|
uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref }}
|
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref }}
|
||||||
- name: ⏬ Checkout with LFS (Branch)
|
- name: ⏬ Checkout with LFS (Branch)
|
||||||
if: github.event_name == 'workflow_dispatch'
|
if: github.event_name == 'workflow_dispatch'
|
||||||
uses: nschloe/action-cached-lfs-checkout@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4
|
uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- name: ☕️ Use JDK 21
|
- name: ☕️ Use JDK 21
|
||||||
|
|
|
||||||
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
|
|
@ -49,7 +49,7 @@ jobs:
|
||||||
sudo swapon /mnt/swapfile
|
sudo swapon /mnt/swapfile
|
||||||
sudo swapon --show
|
sudo swapon --show
|
||||||
- name: ⏬ Checkout with LFS
|
- name: ⏬ Checkout with LFS
|
||||||
uses: nschloe/action-cached-lfs-checkout@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4
|
uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
||||||
with:
|
with:
|
||||||
# Ensure we are building the branch and not the branch after being merged on develop
|
# Ensure we are building the branch and not the branch after being merged on develop
|
||||||
# https://github.com/actions/checkout/issues/881
|
# https://github.com/actions/checkout/issues/881
|
||||||
|
|
|
||||||
2
.github/workflows/validate-lfs.yml
vendored
2
.github/workflows/validate-lfs.yml
vendored
|
|
@ -9,7 +9,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
name: Validate
|
name: Validate
|
||||||
steps:
|
steps:
|
||||||
- uses: nschloe/action-cached-lfs-checkout@1c185ad576953eab13e35ffe1bffef437d97e9d2 # v1.2.4
|
- uses: nschloe/action-cached-lfs-checkout@385a8ecc719e50b8c71af6ab01a624b486b7c3bc # v1.2.5
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
./tools/git/validate_lfs.sh
|
./tools/git/validate_lfs.sh
|
||||||
|
|
|
||||||
59
CHANGES.md
59
CHANGES.md
|
|
@ -1,3 +1,62 @@
|
||||||
|
Changes in Element X v26.04.3
|
||||||
|
=============================
|
||||||
|
|
||||||
|
<!-- Release notes generated using configuration in .github/release.yml at v26.04.3 -->
|
||||||
|
|
||||||
|
## What's Changed
|
||||||
|
### ✨ Features
|
||||||
|
* Sign in with element classic final by @bmarty in https://github.com/element-hq/element-x-android/pull/6296
|
||||||
|
* Take into account homeserver capabilities by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6507
|
||||||
|
### 🙌 Improvements
|
||||||
|
* feat: Default to camera muted when joining ongoing voice call by @BillCarsonFr in https://github.com/element-hq/element-x-android/pull/6574
|
||||||
|
### 🐛 Bugfixes
|
||||||
|
* Fix crash in FetchPushForegroundService: No super method onTimeout by @bmarty in https://github.com/element-hq/element-x-android/pull/6547
|
||||||
|
* Ensure mark as fully read is called only once when leaving the timeline by @bmarty in https://github.com/element-hq/element-x-android/pull/6550
|
||||||
|
* Fix `isInAirGappedEnvironment` check for older APIs by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6573
|
||||||
|
* Fix loading initial items of non-live timelines by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6598
|
||||||
|
### 🗣 Translations
|
||||||
|
* Sync Strings by @ElementBot in https://github.com/element-hq/element-x-android/pull/6537
|
||||||
|
* Sync Strings - new translations in Japanese and Vietnamese by @ElementBot in https://github.com/element-hq/element-x-android/pull/6568
|
||||||
|
### 🧱 Build
|
||||||
|
* Fix module dependencies by @bmarty in https://github.com/element-hq/element-x-android/pull/6559
|
||||||
|
### 🚧 In development 🚧
|
||||||
|
* Add confirmation dialog when inviting users with unknown identities by @kaylendog in https://github.com/element-hq/element-x-android/pull/6523
|
||||||
|
* Feature: add room threads list by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6575
|
||||||
|
### Dependency upgrades
|
||||||
|
* fix(deps): update media3 to v1.10.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6529
|
||||||
|
* fix(deps): update dependency io.github.sergio-sastre.composablepreviewscanner:android to v0.8.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6525
|
||||||
|
* fix(deps): update metro to v0.12.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6543
|
||||||
|
* fix(deps): update kotlinpoet to v2.3.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6528
|
||||||
|
* Sync compound tokens https://github.com/element-hq/compound-design-tokens/releases/tag/v10.0.0 by @bmarty in https://github.com/element-hq/element-x-android/pull/6517
|
||||||
|
* fix(deps): update dependency io.sentry:sentry-android to v8.37.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6508
|
||||||
|
* fix(deps): update dependency org.maplibre.gl:android-sdk to v13.0.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6546
|
||||||
|
* Update codecov/codecov-action action to v6 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6521
|
||||||
|
* Update telephoto to v0.19.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6558
|
||||||
|
* Update dependency net.zetetic:sqlcipher-android to v4.14.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6552
|
||||||
|
* Update dependency org.matrix.rustcomponents:sdk-android to v26.04.8 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6553
|
||||||
|
* Update gradle/actions action to v6.1.0 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6562
|
||||||
|
* Update metro to v0.13.1 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6565
|
||||||
|
* Update dependency org.matrix.rustcomponents:sdk-android to v26.04.13 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6570
|
||||||
|
* Update wysiwyg to v2.41.3 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6572
|
||||||
|
* Update dependency com.google.testparameterinjector:test-parameter-injector to v1.22 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6576
|
||||||
|
* Use `Coil3` for `ZoomableAsyncImage` by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6582
|
||||||
|
* Update dependency org.matrix.rustcomponents:sdk-android to v26.04.15 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6595
|
||||||
|
* Update nschloe/action-cached-lfs-checkout action to v1.2.5 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6600
|
||||||
|
### Others
|
||||||
|
* Fix portrait image metadata when uploading without media optimization by @kalix127 in https://github.com/element-hq/element-x-android/pull/6362
|
||||||
|
* Fix Threads not tappable in pinned messages list by @bxdxnn in https://github.com/element-hq/element-x-android/pull/6535
|
||||||
|
* Reduce log level of activity lifecycle from warning to debug. by @bmarty in https://github.com/element-hq/element-x-android/pull/6548
|
||||||
|
* Remove spaces features flags by @bmarty in https://github.com/element-hq/element-x-android/pull/6560
|
||||||
|
* Remove space announcement by @bmarty in https://github.com/element-hq/element-x-android/pull/6561
|
||||||
|
* Update metro to v0.13.2 by @renovate[bot] in https://github.com/element-hq/element-x-android/pull/6571
|
||||||
|
* Take into account the value of FeatureFlags.SignInWithClassic by @bmarty in https://github.com/element-hq/element-x-android/pull/6586
|
||||||
|
* Add extra logs for timeline pagination by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6589
|
||||||
|
* Scrollable media caption - tweaks by @jmartinesp in https://github.com/element-hq/element-x-android/pull/6583
|
||||||
|
* Split developer settings into 2 screens to be able to access global settings when no logged in. by @bmarty in https://github.com/element-hq/element-x-android/pull/6587
|
||||||
|
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/element-hq/element-x-android/compare/v26.04.2...v26.04.3
|
||||||
|
|
||||||
Changes in Element X v26.04.2
|
Changes in Element X v26.04.2
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
|
|
|
||||||
2
fastlane/metadata/android/en-US/changelogs/202604030.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/202604030.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
Main changes in this version: bug fixes and improvements.
|
||||||
|
Full changelog: https://github.com/element-hq/element-x-android/releases
|
||||||
|
|
@ -84,6 +84,7 @@ import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
import kotlinx.coroutines.flow.conflate
|
import kotlinx.coroutines.flow.conflate
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.transform
|
import kotlinx.coroutines.flow.transform
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
@ -260,11 +261,16 @@ private fun TimelinePrefetchingHelper(
|
||||||
firstVisibleItemIndex + layoutInfo.visibleItemsInfo.size >= layoutInfo.totalItemsCount - 40
|
firstVisibleItemIndex + layoutInfo.visibleItemsInfo.size >= layoutInfo.totalItemsCount - 40
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we have no timeline items, we need to back paginate to load some messages. This usually happens on all timelines except for live ones.
|
||||||
|
// This automatic pagination was previously done by the SDK, and we received a `Reset` update, but now we need to do it ourselves.
|
||||||
|
val isEmptyTimelineFlow = layoutInfoFlow.map { it.totalItemsCount == 0 }
|
||||||
|
|
||||||
combine(
|
combine(
|
||||||
isCloseToStartOfLoadedTimelineFlow.distinctUntilChanged(),
|
isCloseToStartOfLoadedTimelineFlow.distinctUntilChanged(),
|
||||||
isScrollingFlow.distinctUntilChanged(),
|
isScrollingFlow.distinctUntilChanged(),
|
||||||
) { needsPrefetch, isScrolling ->
|
isEmptyTimelineFlow,
|
||||||
needsPrefetch && isScrolling
|
) { needsPrefetch, isScrolling, isEmptyAndNeedsBackPagination ->
|
||||||
|
isEmptyAndNeedsBackPagination || needsPrefetch && isScrolling
|
||||||
}
|
}
|
||||||
.distinctUntilChanged()
|
.distinctUntilChanged()
|
||||||
.collectLatest { needsPrefetch ->
|
.collectLatest { needsPrefetch ->
|
||||||
|
|
|
||||||
|
|
@ -522,6 +522,9 @@ class MessagesViewTest {
|
||||||
rule.setMessagesView(
|
rule.setMessagesView(
|
||||||
state = stateWithActionListState,
|
state = stateWithActionListState,
|
||||||
)
|
)
|
||||||
|
// Clear initial 'LoadMore' event emitted when setting the state
|
||||||
|
eventsRecorder.clear()
|
||||||
|
|
||||||
val verifiedUserSendFailure = rule.activity.getString(CommonStrings.screen_timeline_item_menu_send_failure_changed_identity, "Alice")
|
val verifiedUserSendFailure = rule.activity.getString(CommonStrings.screen_timeline_item_menu_send_failure_changed_identity, "Alice")
|
||||||
rule.onNodeWithText(verifiedUserSendFailure).performClick()
|
rule.onNodeWithText(verifiedUserSendFailure).performClick()
|
||||||
// Give time for the close animation to complete
|
// Give time for the close animation to complete
|
||||||
|
|
@ -585,6 +588,9 @@ class MessagesViewTest {
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
rule.setMessagesView(state = state)
|
rule.setMessagesView(state = state)
|
||||||
|
// Clear initial 'LoadMore' event emitted when setting the state
|
||||||
|
eventsRecorder.clear()
|
||||||
|
|
||||||
rule.onNodeWithText("This is a pinned message").performClick()
|
rule.onNodeWithText("This is a pinned message").performClick()
|
||||||
eventsRecorder.assertSingle(TimelineEvent.FocusOnEvent(AN_EVENT_ID, debounce = FOCUS_ON_PINNED_EVENT_DEBOUNCE_DURATION_IN_MILLIS.milliseconds))
|
eventsRecorder.assertSingle(TimelineEvent.FocusOnEvent(AN_EVENT_ID, debounce = FOCUS_ON_PINNED_EVENT_DEBOUNCE_DURATION_IN_MILLIS.milliseconds))
|
||||||
}
|
}
|
||||||
|
|
@ -601,6 +607,9 @@ class MessagesViewTest {
|
||||||
timelineState = aTimelineState(eventSink = eventsRecorder)
|
timelineState = aTimelineState(eventSink = eventsRecorder)
|
||||||
)
|
)
|
||||||
rule.setMessagesView(state = state)
|
rule.setMessagesView(state = state)
|
||||||
|
// Clear initial 'LoadMore' event emitted when setting the state
|
||||||
|
eventsRecorder.clear()
|
||||||
|
|
||||||
val text = rule.activity.getString(R.string.screen_room_timeline_tombstoned_room_action)
|
val text = rule.activity.getString(R.string.screen_room_timeline_tombstoned_room_action)
|
||||||
// The bottomsheet subcompose seems to make the node to appear twice
|
// The bottomsheet subcompose seems to make the node to appear twice
|
||||||
rule.onAllNodesWithText(text).onFirst().performClick()
|
rule.onAllNodesWithText(text).onFirst().performClick()
|
||||||
|
|
|
||||||
|
|
@ -67,24 +67,31 @@ class TimelineViewTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `reaching the end of the timeline does not send a LoadMore event`() {
|
fun `reaching the end of the timeline does not send a LoadMore event`() {
|
||||||
val eventsRecorder = EventsRecorder<TimelineEvent>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
||||||
rule.setTimelineView(
|
rule.setTimelineView(
|
||||||
state = aTimelineState(
|
state = aTimelineState(
|
||||||
|
timelineItems = persistentListOf(aTimelineItemEvent(content = aTimelineItemImageContent())),
|
||||||
eventSink = eventsRecorder,
|
eventSink = eventsRecorder,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
eventsRecorder.assertSingle(TimelineEvent.OnScrollFinished(firstIndex = 0))
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `scroll to bottom on live timeline does not emit the Event`() {
|
fun `scroll to bottom on live timeline does not emit the Event`() {
|
||||||
val eventsRecorder = EventsRecorder<TimelineEvent>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
||||||
rule.setTimelineView(
|
rule.setTimelineView(
|
||||||
state = aTimelineState(
|
state = aTimelineState(
|
||||||
|
timelineItems = persistentListOf(aTimelineItemEvent(content = aTimelineItemImageContent())),
|
||||||
isLive = true,
|
isLive = true,
|
||||||
eventSink = eventsRecorder,
|
eventSink = eventsRecorder,
|
||||||
),
|
),
|
||||||
forceJumpToBottomVisibility = true,
|
forceJumpToBottomVisibility = true,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
eventsRecorder.assertSingle(TimelineEvent.OnScrollFinished(firstIndex = 0))
|
||||||
|
eventsRecorder.clear()
|
||||||
|
|
||||||
val contentDescription = rule.activity.getString(CommonStrings.a11y_jump_to_bottom)
|
val contentDescription = rule.activity.getString(CommonStrings.a11y_jump_to_bottom)
|
||||||
rule.onNodeWithContentDescription(contentDescription).performClick()
|
rule.onNodeWithContentDescription(contentDescription).performClick()
|
||||||
}
|
}
|
||||||
|
|
@ -94,15 +101,33 @@ class TimelineViewTest {
|
||||||
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
||||||
rule.setTimelineView(
|
rule.setTimelineView(
|
||||||
state = aTimelineState(
|
state = aTimelineState(
|
||||||
|
timelineItems = persistentListOf(aTimelineItemEvent(content = aTimelineItemImageContent())),
|
||||||
isLive = false,
|
isLive = false,
|
||||||
eventSink = eventsRecorder,
|
eventSink = eventsRecorder,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
eventsRecorder.assertSingle(TimelineEvent.OnScrollFinished(firstIndex = 0))
|
||||||
|
eventsRecorder.clear()
|
||||||
|
|
||||||
val contentDescription = rule.activity.getString(CommonStrings.a11y_jump_to_bottom)
|
val contentDescription = rule.activity.getString(CommonStrings.a11y_jump_to_bottom)
|
||||||
rule.onNodeWithContentDescription(contentDescription).performClick()
|
rule.onNodeWithContentDescription(contentDescription).performClick()
|
||||||
eventsRecorder.assertSingle(TimelineEvent.JumpToLive)
|
eventsRecorder.assertSingle(TimelineEvent.JumpToLive)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `an empty timeline triggers a prefetch`() {
|
||||||
|
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
||||||
|
rule.setTimelineView(
|
||||||
|
state = aTimelineState(
|
||||||
|
timelineItems = persistentListOf(),
|
||||||
|
eventSink = eventsRecorder,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
eventsRecorder.assertSingle(TimelineEvent.LoadMore(Timeline.PaginationDirection.BACKWARDS))
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `show shield dialog`() {
|
fun `show shield dialog`() {
|
||||||
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
||||||
|
|
@ -133,11 +158,15 @@ class TimelineViewTest {
|
||||||
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
val eventsRecorder = EventsRecorder<TimelineEvent>()
|
||||||
rule.setTimelineView(
|
rule.setTimelineView(
|
||||||
state = aTimelineState(
|
state = aTimelineState(
|
||||||
|
timelineItems = persistentListOf(aTimelineItemEvent(content = aTimelineItemImageContent())),
|
||||||
isLive = false,
|
isLive = false,
|
||||||
eventSink = eventsRecorder,
|
eventSink = eventsRecorder,
|
||||||
messageShield = aCriticalShield(),
|
messageShield = aCriticalShield(),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
eventsRecorder.assertSingle(TimelineEvent.OnScrollFinished(firstIndex = 0))
|
||||||
|
eventsRecorder.clear()
|
||||||
|
|
||||||
rule.clickOn(CommonStrings.action_ok)
|
rule.clickOn(CommonStrings.action_ok)
|
||||||
eventsRecorder.assertSingle(TimelineEvent.HideShieldDialog)
|
eventsRecorder.assertSingle(TimelineEvent.HideShieldDialog)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ roborazzi = "1.59.0"
|
||||||
|
|
||||||
# Jetbrain
|
# Jetbrain
|
||||||
datetime = "0.7.1"
|
datetime = "0.7.1"
|
||||||
serialization_json = "1.10.0"
|
serialization_json = "1.11.0"
|
||||||
|
|
||||||
#other
|
#other
|
||||||
coil = "3.4.0"
|
coil = "3.4.0"
|
||||||
|
|
@ -80,7 +80,7 @@ kotlinpoet-ksp = { module = "com.squareup:kotlinpoet-ksp", version.ref = "kotlin
|
||||||
kover_gradle_plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" }
|
kover_gradle_plugin = { module = "org.jetbrains.kotlinx:kover-gradle-plugin", version.ref = "kover" }
|
||||||
ksp_gradle_plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
|
ksp_gradle_plugin = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
|
||||||
# https://firebase.google.com/docs/android/setup#available-libraries
|
# https://firebase.google.com/docs/android/setup#available-libraries
|
||||||
google_firebase_bom = "com.google.firebase:firebase-bom:34.11.0"
|
google_firebase_bom = "com.google.firebase:firebase-bom:34.12.0"
|
||||||
firebase_appdistribution_gradle = { module = "com.google.firebase:firebase-appdistribution-gradle", version.ref = "firebaseAppDistribution" }
|
firebase_appdistribution_gradle = { module = "com.google.firebase:firebase-appdistribution-gradle", version.ref = "firebaseAppDistribution" }
|
||||||
autonomousapps_dependencyanalysis_plugin = { module = "com.autonomousapps:dependency-analysis-gradle-plugin", version.ref = "dependencyAnalysis" }
|
autonomousapps_dependencyanalysis_plugin = { module = "com.autonomousapps:dependency-analysis-gradle-plugin", version.ref = "dependencyAnalysis" }
|
||||||
ksp_plugin = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" }
|
ksp_plugin = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" }
|
||||||
|
|
@ -89,7 +89,7 @@ google_tink = "com.google.crypto.tink:tink-android:1.21.0"
|
||||||
# AndroidX
|
# AndroidX
|
||||||
androidx_core = { module = "androidx.core:core", version.ref = "core" }
|
androidx_core = { module = "androidx.core:core", version.ref = "core" }
|
||||||
androidx_corektx = { module = "androidx.core:core-ktx", version.ref = "core" }
|
androidx_corektx = { module = "androidx.core:core-ktx", version.ref = "core" }
|
||||||
androidx_annotationjvm = "androidx.annotation:annotation-jvm:1.9.1"
|
androidx_annotationjvm = "androidx.annotation:annotation-jvm:1.10.0"
|
||||||
androidx_datastore_preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" }
|
androidx_datastore_preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" }
|
||||||
androidx_datastore_datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
|
androidx_datastore_datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
|
||||||
androidx_exifinterface = "androidx.exifinterface:exifinterface:1.4.2"
|
androidx_exifinterface = "androidx.exifinterface:exifinterface:1.4.2"
|
||||||
|
|
@ -233,7 +233,7 @@ sigpwned_emoji4j = "com.sigpwned:emoji4j-core:16.0.0"
|
||||||
metro_runtime = { module = "dev.zacsweers.metro:runtime", version.ref = "metro" }
|
metro_runtime = { module = "dev.zacsweers.metro:runtime", version.ref = "metro" }
|
||||||
|
|
||||||
# Element Call
|
# Element Call
|
||||||
element_call_embedded = "io.element.android:element-call-embedded:0.19.0"
|
element_call_embedded = "io.element.android:element-call-embedded:0.19.1"
|
||||||
|
|
||||||
# Auto services
|
# Auto services
|
||||||
google_autoservice = { module = "com.google.auto.service:auto-service", version.ref = "autoservice" }
|
google_autoservice = { module = "com.google.auto.service:auto-service", version.ref = "autoservice" }
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ private const val versionMonth = 4
|
||||||
* Release number in the month. Value must be in [0,99].
|
* Release number in the month. Value must be in [0,99].
|
||||||
* Do not update this value. it is updated by the release script.
|
* Do not update this value. it is updated by the release script.
|
||||||
*/
|
*/
|
||||||
private const val versionReleaseNumber = 2
|
private const val versionReleaseNumber = 3
|
||||||
|
|
||||||
object Versions {
|
object Versions {
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue