diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 39e4364658..aef924c392 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - variant: [debug, release, nightly, samples] + variant: [debug, release, nightly] fail-fast: false # Allow all jobs on develop. Just one per PR. concurrency: @@ -82,6 +82,3 @@ jobs: - name: Compile nightly sources if: ${{ matrix.variant == 'nightly' }} run: ./gradlew compileGplayNightlySources -PallWarningsAsErrors=true $CI_GRADLE_ARG_PROPERTIES - - name: Compile samples minimal - if: ${{ matrix.variant == 'samples' }} - run: ./gradlew :samples:minimal:assemble $CI_GRADLE_ARG_PROPERTIES diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6acfa7981f..bc4acfd5aa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,8 +49,6 @@ Please ensure that you're using the project formatting rules (which are in the p This project should compile without any special action. Just clone it and open it with Android Studio, or compile from command line using `gradlew`. -Note: please make sure that the configuration is `app` and not `samples.minimal`. - ## Strings The strings of the project are managed externally using [https://localazy.com](https://localazy.com) and shared with Element X iOS. diff --git a/docs/continuous_integration.md b/docs/continuous_integration.md index 4ff0ebb983..85a869cbe9 100644 --- a/docs/continuous_integration.md +++ b/docs/continuous_integration.md @@ -40,7 +40,7 @@ We want: The CI checks that: -1. The code is compiling, without any warnings, for all the app build types and variants and for the minimal app +1. The code is compiling, without any warnings, for all the app build types and variants 2. The tests are passing 3. The code quality is good (detekt, ktlint, lint) 4. The code is running and smoke tests are passing (maestro) diff --git a/plugins/src/main/kotlin/extension/KoverExtension.kt b/plugins/src/main/kotlin/extension/KoverExtension.kt index 6182fde1f5..ccc077b0a3 100644 --- a/plugins/src/main/kotlin/extension/KoverExtension.kt +++ b/plugins/src/main/kotlin/extension/KoverExtension.kt @@ -32,10 +32,8 @@ val localAarProjects = listOf( val excludedKoverSubProjects = listOf( ":app", - ":samples", ":anvilannotations", ":anvilcodegen", - ":samples:minimal", ":tests:testutils", // Exclude `:libraries:matrix:impl` module, it contains only wrappers to access the Rust Matrix // SDK api, so it is not really relevant to unit test it: there is no logic to test. diff --git a/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts b/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts index 967e4fd707..579bda8873 100644 --- a/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts +++ b/plugins/src/main/kotlin/io.element.android-compose-application.gradle.kts @@ -6,7 +6,7 @@ */ /** - * This will generate the plugin "io.element.android-compose-application" to use by app and samples modules + * This will generate the plugin "io.element.android-compose-application" to use by app */ import extension.androidConfig import extension.commonDependencies diff --git a/samples/minimal/.gitignore b/samples/minimal/.gitignore deleted file mode 100644 index 42afabfd2a..0000000000 --- a/samples/minimal/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/samples/minimal/build.gradle.kts b/samples/minimal/build.gradle.kts deleted file mode 100644 index 48713af442..0000000000 --- a/samples/minimal/build.gradle.kts +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2023, 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ -plugins { - id("io.element.android-compose-application") - alias(libs.plugins.kotlin.android) -} - -android { - namespace = "io.element.android.samples.minimal" - - defaultConfig { - applicationId = "io.element.android.samples.minimal" - targetSdk = Versions.TARGET_SDK - versionCode = Versions.VERSION_CODE - versionName = Versions.VERSION_NAME - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } - - buildFeatures { - buildConfig = true - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } -} - -dependencies { - implementation(libs.androidx.activity.compose) - implementation(libs.androidx.preference) - implementation(projects.libraries.matrix.api) - implementation(projects.libraries.matrix.impl) - implementation(projects.libraries.permissions.noop) - implementation(projects.libraries.sessionStorage.implMemory) - implementation(projects.libraries.designsystem) - implementation(projects.libraries.androidutils) - implementation(projects.libraries.architecture) - implementation(projects.libraries.core) - implementation(projects.libraries.network) - implementation(projects.libraries.dateformatter.impl) - implementation(projects.libraries.eventformatter.impl) - implementation(projects.libraries.fullscreenintent.impl) - implementation(projects.libraries.preferences.impl) - implementation(projects.libraries.preferences.test) - implementation(projects.libraries.indicator.impl) - implementation(projects.features.invite.impl) - implementation(projects.features.roomlist.impl) - implementation(projects.features.leaveroom.impl) - implementation(projects.features.login.impl) - implementation(projects.features.logout.impl) - implementation(projects.features.networkmonitor.impl) - implementation(projects.services.toolbox.impl) - implementation(projects.libraries.featureflag.impl) - implementation(projects.services.analytics.noop) - implementation(libs.coroutines.core) - implementation(projects.libraries.push.test) -} diff --git a/samples/minimal/src/main/AndroidManifest.xml b/samples/minimal/src/main/AndroidManifest.xml deleted file mode 100644 index 3f189bf096..0000000000 --- a/samples/minimal/src/main/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/AlwaysEnabledFeatureFlagService.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/AlwaysEnabledFeatureFlagService.kt deleted file mode 100644 index 67151d5aa4..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/AlwaysEnabledFeatureFlagService.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import io.element.android.libraries.featureflag.api.Feature -import io.element.android.libraries.featureflag.api.FeatureFlagService -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flowOf - -class AlwaysEnabledFeatureFlagService : FeatureFlagService { - override fun isFeatureEnabledFlow(feature: Feature): Flow { - return flowOf(true) - } - - override suspend fun setFeatureEnabled(feature: Feature, enabled: Boolean): Boolean { - return true - } -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt deleted file mode 100644 index 1e4324d99f..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/LoginScreen.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2023, 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import io.element.android.features.login.impl.DefaultLoginUserStory -import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource -import io.element.android.features.login.impl.screens.loginpassword.LoginPasswordPresenter -import io.element.android.features.login.impl.screens.loginpassword.LoginPasswordView -import io.element.android.features.login.impl.util.defaultAccountProvider -import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService - -class LoginScreen(private val authenticationService: MatrixAuthenticationService) { - @Composable - fun Content(modifier: Modifier = Modifier) { - val presenter = remember { - LoginPasswordPresenter( - authenticationService = authenticationService, - AccountProviderDataSource(), - DefaultLoginUserStory(), - ) - } - - LaunchedEffect(Unit) { - authenticationService.setHomeserver(defaultAccountProvider.url) - } - - val state = presenter.present() - LoginPasswordView( - state = state, - modifier = modifier, - onBackClick = {}, - ) - } -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt deleted file mode 100644 index 1a3c68b478..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/MainActivity.kt +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2023, 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext -import androidx.core.view.WindowCompat -import io.element.android.compound.theme.ElementTheme -import io.element.android.libraries.matrix.api.auth.MatrixAuthenticationService -import io.element.android.libraries.matrix.impl.RustClientBuilderProvider -import io.element.android.libraries.matrix.impl.RustMatrixClientFactory -import io.element.android.libraries.matrix.impl.auth.OidcConfigurationProvider -import io.element.android.libraries.matrix.impl.auth.RustMatrixAuthenticationService -import io.element.android.libraries.matrix.impl.paths.SessionPathsFactory -import io.element.android.libraries.matrix.impl.room.RustTimelineEventTypeFilterFactory -import io.element.android.libraries.network.useragent.SimpleUserAgentProvider -import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore -import io.element.android.libraries.sessionstorage.api.LoggedInState -import io.element.android.libraries.sessionstorage.impl.memory.InMemorySessionStore -import io.element.android.services.analytics.noop.NoopAnalyticsService -import io.element.android.services.toolbox.impl.systemclock.DefaultSystemClock -import kotlinx.coroutines.runBlocking -import java.io.File - -class MainActivity : ComponentActivity() { - private val matrixAuthenticationService: MatrixAuthenticationService by lazy { - val baseDirectory = File(applicationContext.filesDir, "sessions") - val userAgentProvider = SimpleUserAgentProvider("MinimalSample") - val sessionStore = InMemorySessionStore() - val userCertificatesProvider = NoOpUserCertificatesProvider() - val proxyProvider = NoOpProxyProvider() - RustMatrixAuthenticationService( - sessionPathsFactory = SessionPathsFactory(baseDirectory, applicationContext.cacheDir), - coroutineDispatchers = Singleton.coroutineDispatchers, - sessionStore = sessionStore, - rustMatrixClientFactory = RustMatrixClientFactory( - baseDirectory = baseDirectory, - cacheDirectory = applicationContext.cacheDir, - appCoroutineScope = Singleton.appScope, - coroutineDispatchers = Singleton.coroutineDispatchers, - sessionStore = sessionStore, - userAgentProvider = userAgentProvider, - userCertificatesProvider = userCertificatesProvider, - proxyProvider = proxyProvider, - clock = DefaultSystemClock(), - analyticsService = NoopAnalyticsService(), - featureFlagService = AlwaysEnabledFeatureFlagService(), - timelineEventTypeFilterFactory = RustTimelineEventTypeFilterFactory(), - clientBuilderProvider = RustClientBuilderProvider(), - ), - passphraseGenerator = NullPassphraseGenerator(), - oidcConfigurationProvider = OidcConfigurationProvider(baseDirectory), - appPreferencesStore = InMemoryAppPreferencesStore(), - ) - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - WindowCompat.setDecorFitsSystemWindows(window, false) - setContent { - ElementTheme { - val loggedInState by matrixAuthenticationService.loggedInStateFlow().collectAsState(initial = LoggedInState.NotLoggedIn) - Content(isLoggedIn = loggedInState is LoggedInState.LoggedIn, modifier = Modifier.fillMaxSize()) - } - } - } - - @Composable - fun Content( - isLoggedIn: Boolean, - modifier: Modifier = Modifier - ) { - if (!isLoggedIn) { - LoginScreen(authenticationService = matrixAuthenticationService).Content(modifier) - } else { - val matrixClient = runBlocking { - val sessionId = matrixAuthenticationService.getLatestSessionId()!! - matrixAuthenticationService.restoreSession(sessionId).getOrNull() - } - RoomListScreen(LocalContext.current, matrixClient!!).Content(modifier) - } - } -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NoOpProxyProvider.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NoOpProxyProvider.kt deleted file mode 100644 index cda2f870ce..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NoOpProxyProvider.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import io.element.android.libraries.matrix.impl.proxy.ProxyProvider - -class NoOpProxyProvider : ProxyProvider { - override fun provides(): String? = null -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NoOpUserCertificatesProvider.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NoOpUserCertificatesProvider.kt deleted file mode 100644 index fbaac27e79..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NoOpUserCertificatesProvider.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import io.element.android.libraries.matrix.impl.certificates.UserCertificatesProvider - -class NoOpUserCertificatesProvider : UserCertificatesProvider { - override fun provides(): List = emptyList() -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NullPassphraseGenerator.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NullPassphraseGenerator.kt deleted file mode 100644 index 2ee4cbd4e5..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/NullPassphraseGenerator.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import io.element.android.libraries.matrix.impl.keys.PassphraseGenerator - -class NullPassphraseGenerator : PassphraseGenerator { - override fun generatePassphrase(): String? = null -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/OnlyFallbackPermalinkParser.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/OnlyFallbackPermalinkParser.kt deleted file mode 100644 index 254bd893c8..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/OnlyFallbackPermalinkParser.kt +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import android.net.Uri -import io.element.android.libraries.matrix.api.permalink.PermalinkData -import io.element.android.libraries.matrix.api.permalink.PermalinkParser - -class OnlyFallbackPermalinkParser : PermalinkParser { - override fun parse(uriString: String): PermalinkData { - return PermalinkData.FallbackLink(Uri.parse(uriString)) - } -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt deleted file mode 100644 index 0db3c9da51..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright 2023, 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import android.content.Context -import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.ui.Modifier -import io.element.android.features.invite.impl.response.AcceptDeclineInvitePresenter -import io.element.android.features.invite.impl.response.AcceptDeclineInviteView -import io.element.android.features.leaveroom.impl.LeaveRoomPresenter -import io.element.android.features.logout.impl.direct.DirectLogoutPresenter -import io.element.android.features.networkmonitor.impl.DefaultNetworkMonitor -import io.element.android.features.roomlist.impl.RoomListPresenter -import io.element.android.features.roomlist.impl.RoomListView -import io.element.android.features.roomlist.impl.datasource.RoomListDataSource -import io.element.android.features.roomlist.impl.datasource.RoomListRoomSummaryFactory -import io.element.android.features.roomlist.impl.filters.RoomListFiltersPresenter -import io.element.android.features.roomlist.impl.filters.selection.DefaultFilterSelectionStrategy -import io.element.android.features.roomlist.impl.search.RoomListSearchDataSource -import io.element.android.features.roomlist.impl.search.RoomListSearchPresenter -import io.element.android.libraries.androidutils.system.DefaultDateTimeObserver -import io.element.android.libraries.core.coroutine.CoroutineDispatchers -import io.element.android.libraries.dateformatter.impl.DateFormatters -import io.element.android.libraries.dateformatter.impl.DefaultLastMessageTimestampFormatter -import io.element.android.libraries.dateformatter.impl.LocalDateTimeProvider -import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher -import io.element.android.libraries.eventformatter.impl.DefaultRoomLastMessageFormatter -import io.element.android.libraries.eventformatter.impl.ProfileChangeContentFormatter -import io.element.android.libraries.eventformatter.impl.RoomMembershipContentFormatter -import io.element.android.libraries.eventformatter.impl.StateContentFormatter -import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState -import io.element.android.libraries.indicator.impl.DefaultIndicatorService -import io.element.android.libraries.matrix.api.MatrixClient -import io.element.android.libraries.matrix.api.core.RoomId -import io.element.android.libraries.matrix.api.room.RoomMembershipObserver -import io.element.android.libraries.matrix.api.timeline.Timeline -import io.element.android.libraries.matrix.impl.room.join.DefaultJoinRoom -import io.element.android.libraries.preferences.impl.store.DefaultSessionPreferencesStore -import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner -import io.element.android.services.analytics.noop.NoopAnalyticsService -import io.element.android.services.toolbox.impl.strings.AndroidStringProvider -import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.withContext -import kotlinx.datetime.Clock -import kotlinx.datetime.TimeZone -import timber.log.Timber -import java.util.Locale - -class RoomListScreen( - context: Context, - private val matrixClient: MatrixClient, - private val coroutineDispatchers: CoroutineDispatchers = Singleton.coroutineDispatchers, -) { - private val clock = Clock.System - private val locale = Locale.getDefault() - private val dateTimeProvider = LocalDateTimeProvider(clock) { TimeZone.currentSystemDefault() } - private val dateFormatters = DateFormatters(locale, clock) { TimeZone.currentSystemDefault() } - private val sessionVerificationService = matrixClient.sessionVerificationService() - private val encryptionService = matrixClient.encryptionService() - private val stringProvider = AndroidStringProvider(context.resources) - private val featureFlagService = AlwaysEnabledFeatureFlagService() - private val roomListRoomSummaryFactory = RoomListRoomSummaryFactory( - lastMessageTimestampFormatter = DefaultLastMessageTimestampFormatter( - localDateTimeProvider = dateTimeProvider, - dateFormatters = dateFormatters - ), - roomLastMessageFormatter = DefaultRoomLastMessageFormatter( - sp = stringProvider, - roomMembershipContentFormatter = RoomMembershipContentFormatter( - matrixClient = matrixClient, - sp = stringProvider - ), - profileChangeContentFormatter = ProfileChangeContentFormatter(stringProvider), - stateContentFormatter = StateContentFormatter(stringProvider), - permalinkParser = OnlyFallbackPermalinkParser(), - ), - ) - private val presenter = RoomListPresenter( - client = matrixClient, - networkMonitor = DefaultNetworkMonitor(context, Singleton.appScope), - snackbarDispatcher = SnackbarDispatcher(), - leaveRoomPresenter = LeaveRoomPresenter(matrixClient, RoomMembershipObserver(), coroutineDispatchers), - roomListDataSource = RoomListDataSource( - roomListService = matrixClient.roomListService, - roomListRoomSummaryFactory = roomListRoomSummaryFactory, - coroutineDispatchers = coroutineDispatchers, - notificationSettingsService = matrixClient.notificationSettingsService(), - appScope = Singleton.appScope, - dateTimeObserver = DefaultDateTimeObserver(context), - ), - indicatorService = DefaultIndicatorService( - sessionVerificationService = sessionVerificationService, - encryptionService = encryptionService, - ), - featureFlagService = featureFlagService, - searchPresenter = RoomListSearchPresenter( - RoomListSearchDataSource( - roomListService = matrixClient.roomListService, - roomSummaryFactory = roomListRoomSummaryFactory, - coroutineDispatchers = coroutineDispatchers, - ), - featureFlagService = featureFlagService, - ), - sessionPreferencesStore = DefaultSessionPreferencesStore( - context = context, - sessionId = matrixClient.sessionId, - sessionCoroutineScope = Singleton.appScope - ), - filtersPresenter = RoomListFiltersPresenter( - roomListService = matrixClient.roomListService, - filterSelectionStrategy = DefaultFilterSelectionStrategy(), - ), - acceptDeclineInvitePresenter = AcceptDeclineInvitePresenter( - client = matrixClient, - joinRoom = DefaultJoinRoom(matrixClient, NoopAnalyticsService()), - notificationCleaner = FakeNotificationCleaner(), - ), - analyticsService = NoopAnalyticsService(), - fullScreenIntentPermissionsPresenter = { aFullScreenIntentPermissionsState() }, - notificationCleaner = FakeNotificationCleaner(), - logoutPresenter = DirectLogoutPresenter(matrixClient, encryptionService), - ) - - @Composable - fun Content(modifier: Modifier = Modifier) { - fun onRoomClick(roomId: RoomId) { - Singleton.appScope.launch { - withContext(coroutineDispatchers.io) { - matrixClient.getRoom(roomId)!!.use { room -> - room.liveTimeline.paginate(Timeline.PaginationDirection.BACKWARDS) - } - } - } - } - - val state = presenter.present() - RoomListView( - state = state, - onRoomClick = ::onRoomClick, - onSettingsClick = {}, - onSetUpRecoveryClick = {}, - onConfirmRecoveryKeyClick = {}, - onCreateRoomClick = {}, - onRoomSettingsClick = {}, - onMenuActionClick = {}, - onRoomDirectorySearchClick = {}, - modifier = modifier, - acceptDeclineInviteView = { - AcceptDeclineInviteView(state = state.acceptDeclineInviteState, onAcceptInvite = {}, onDeclineInvite = {}) - }, - onMigrateToNativeSlidingSyncClick = {}, - ) - - DisposableEffect(Unit) { - Timber.w("Start sync!") - runBlocking { - matrixClient.syncService().startSync() - } - onDispose { - Timber.w("Stop sync!") - runBlocking { - matrixClient.syncService().stopSync() - } - } - } - } -} diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt deleted file mode 100644 index 7b33dda53b..0000000000 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2023, 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only - * Please see LICENSE in the repository root for full details. - */ - -package io.element.android.samples.minimal - -import io.element.android.libraries.core.coroutine.CoroutineDispatchers -import io.element.android.libraries.core.meta.BuildMeta -import io.element.android.libraries.core.meta.BuildType -import io.element.android.libraries.matrix.api.tracing.TracingConfiguration -import io.element.android.libraries.matrix.api.tracing.TracingFilterConfigurations -import io.element.android.libraries.matrix.api.tracing.WriteToFilesConfiguration -import io.element.android.libraries.matrix.impl.tracing.RustTracingService -import kotlinx.coroutines.CoroutineName -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.plus - -object Singleton { - val buildMeta = BuildMeta( - isDebuggable = true, - buildType = BuildType.DEBUG, - applicationName = "EAX-Minimal", - productionApplicationName = "EAX-Minimal", - desktopApplicationName = "EAX-Minimal-Desktop", - applicationId = "io.element.android.samples.minimal", - isEnterpriseBuild = false, - lowPrivacyLoggingEnabled = false, - versionName = "0.1.0", - versionCode = 1, - gitRevision = "", - gitBranchName = "", - flavorDescription = "NA", - flavorShortDescription = "NA", - ) - - init { - val tracingConfiguration = TracingConfiguration( - filterConfiguration = TracingFilterConfigurations.debug, - writesToLogcat = true, - writesToFilesConfiguration = WriteToFilesConfiguration.Disabled - ) - RustTracingService(buildMeta).setupTracing(tracingConfiguration) - } - - val appScope = MainScope() + CoroutineName("Minimal Scope") - val coroutineDispatchers = CoroutineDispatchers( - io = Dispatchers.IO, - computation = Dispatchers.Default, - main = Dispatchers.Main, - ) -} diff --git a/samples/minimal/src/main/res/mipmap-hdpi/ic_launcher.webp b/samples/minimal/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78ecd..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/samples/minimal/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-mdpi/ic_launcher.webp b/samples/minimal/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d64e5..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/samples/minimal/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611da08..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-xhdpi/ic_launcher.webp b/samples/minimal/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a3070fe..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/samples/minimal/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a6956b3..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/samples/minimal/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77f9f..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/samples/minimal/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f50836..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/samples/minimal/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d6427e6..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/samples/minimal/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae37cb..0000000000 Binary files a/samples/minimal/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/samples/minimal/src/main/res/values-night/themes.xml b/samples/minimal/src/main/res/values-night/themes.xml deleted file mode 100644 index bcbbf3cdbd..0000000000 --- a/samples/minimal/src/main/res/values-night/themes.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - -