├── .editorconfig ├── .gitattributes ├── .githooks └── pre-commit ├── .github ├── actions │ └── deploy-to-s3 │ │ └── action.yml ├── dependabot.yml ├── labels.yml ├── pull_request_template.md ├── stale.yml ├── technolinator.yml └── workflows │ ├── build-beta-app.yml │ ├── build-develop-app.yml │ ├── build-edge-env.yml │ ├── build-fdroid-app.yml │ ├── build-prod-app.yml │ ├── build-rc-app.yml │ ├── check-kalium-commitish.yml │ ├── cherry-pick-pr-to-newer-release-cycle.yml │ ├── code-analysis.yml │ ├── crowdin-source-updater.yml │ ├── crowdin-translations-updater.yml │ ├── deploy-adr-docs.yml │ ├── generate-changelog.yml │ ├── generate-screenshots.yml │ ├── gradle-run-ui-tests.yml │ ├── gradle-run-unit-tests.yml │ ├── jira-lint-and-link.yml │ ├── pr-author-assigner.yml │ ├── publish-test-results.yml │ ├── semantic-commit-lint.yml │ └── stale-issues-and-pr.yml ├── .gitignore ├── .gitmodules ├── .idea ├── copyright │ ├── profiles_settings.xml │ └── wire_swiss_gmbh.xml └── icon.png ├── .java-version ├── AR-builder.groovy ├── CONTRIBUTING.md ├── CUSTOMIZATION.md ├── Jenkinsfile ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── lint-baseline.xml ├── proguard-rules.pro └── src │ ├── androidTest │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ ├── CustomTestRunner.kt │ │ ├── HiltTestApp.kt │ │ ├── LinkSpannableStringTest.kt │ │ ├── TestCoreLogicModule.kt │ │ ├── TestNetworkStateObserver.kt │ │ ├── WireActivityTest.kt │ │ ├── datastore │ │ └── EncryptionManagerTest.kt │ │ ├── extensions │ │ ├── AndroidComposeTestRuleExtension.kt │ │ └── ComposeContentTestRule.kt │ │ ├── provider │ │ └── LocalAppContext.kt │ │ ├── ui │ │ ├── WireTestTheme.kt │ │ ├── common │ │ │ └── UserProfileAvatarTest.kt │ │ ├── debug │ │ │ └── DebugScreenComposeTest.kt │ │ └── userprofile │ │ │ └── other │ │ │ ├── OtherUserProfileGroupTest.kt │ │ │ ├── OtherUserProfileScreenTest.kt │ │ │ └── OtherUserStubs.kt │ │ └── util │ │ ├── DateTimeUtilTest.kt │ │ └── UserLinkQRMapperTest.kt │ ├── debug │ ├── AndroidManifest.xml │ └── res │ │ └── drawable │ │ └── ic_launcher_foreground.xml │ ├── dev │ └── res │ │ └── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ ├── fdroid │ └── AndroidManifest.xml │ ├── foss │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ ├── ui │ │ └── home │ │ │ └── messagecomposer │ │ │ └── location │ │ │ └── LocationPickerHelperFlavor.kt │ │ └── util │ │ └── extension │ │ └── GoogleServices.kt │ ├── internal │ └── res │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ └── .gitkeep │ ├── baseline-prof.txt │ ├── kotlin │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ ├── AppLogger.kt │ │ │ ├── BaseApp.kt │ │ │ ├── GlobalObserversManager.kt │ │ │ ├── WireApplication.kt │ │ │ ├── analytics │ │ │ └── ObserveCurrentSessionAnalyticsUseCase.kt │ │ │ ├── biometric │ │ │ └── BiometricPromptUtils.kt │ │ │ ├── config │ │ │ ├── CustomUiConfigurationProvider.kt │ │ │ └── DefaultServerConfig.kt │ │ │ ├── datastore │ │ │ ├── EncryptionManager.kt │ │ │ ├── GlobalDataStore.kt │ │ │ ├── UserDataStore.kt │ │ │ └── UserDataStoreProvider.kt │ │ │ ├── di │ │ │ ├── AppModule.kt │ │ │ ├── ClientScopeProvider.kt │ │ │ ├── CoreLogicModule.kt │ │ │ ├── CoroutineScope.kt │ │ │ ├── ImageLoadingModule.kt │ │ │ ├── KaliumConfigsModule.kt │ │ │ ├── LogWriterModule.kt │ │ │ ├── ObserveIfE2EIRequiredDuringLoginUseCaseProvider.kt │ │ │ ├── ObserveScreenshotCensoringConfigUseCaseProvider.kt │ │ │ ├── ObserveSyncStateUseCaseProvider.kt │ │ │ ├── ViewModelScoped.kt │ │ │ └── accountScoped │ │ │ │ ├── AuthenticationModule.kt │ │ │ │ ├── BackupModule.kt │ │ │ │ ├── CallsModule.kt │ │ │ │ ├── CellsModule.kt │ │ │ │ ├── ChannelsModule.kt │ │ │ │ ├── ClientModule.kt │ │ │ │ ├── ConnectionModule.kt │ │ │ │ ├── ConversationModule.kt │ │ │ │ ├── DebugModule.kt │ │ │ │ ├── MessageModule.kt │ │ │ │ ├── SearchModule.kt │ │ │ │ ├── ServicesModule.kt │ │ │ │ ├── TeamModule.kt │ │ │ │ └── UserModule.kt │ │ │ ├── feature │ │ │ ├── AccountSwitchUseCase.kt │ │ │ ├── AppLockSource.kt │ │ │ ├── DisableAppLockUseCase.kt │ │ │ ├── GenerateRandomPasswordUseCase.kt │ │ │ ├── ObserveAppLockConfigUseCase.kt │ │ │ ├── ShouldStartPersistentWebSocketServiceUseCase.kt │ │ │ ├── StartPersistentWebsocketIfNecessaryUseCase.kt │ │ │ └── e2ei │ │ │ │ └── OAuthUseCase.kt │ │ │ ├── initializer │ │ │ └── InitializerEntryPoint.kt │ │ │ ├── mapper │ │ │ ├── ContactMapper.kt │ │ │ ├── ConversationMapper.kt │ │ │ ├── MessageContentMapper.kt │ │ │ ├── MessageDateGroupingMapper.kt │ │ │ ├── MessageMapper.kt │ │ │ ├── MessagePreviewContentMapper.kt │ │ │ ├── MessageResourceProvider.kt │ │ │ ├── OtherAccountMapper.kt │ │ │ ├── RegularMessageContentMapper.kt │ │ │ ├── SystemMessageContentMapper.kt │ │ │ ├── UIAssetMapper.kt │ │ │ ├── UICallParticipantMapper.kt │ │ │ ├── UIParticipantMapper.kt │ │ │ └── UserTypeMapper.kt │ │ │ ├── media │ │ │ ├── CallRinger.kt │ │ │ ├── PingRinger.kt │ │ │ └── audiomessage │ │ │ │ ├── AudioFocusHelper.kt │ │ │ │ ├── AudioMessageViewModel.kt │ │ │ │ ├── AudioState.kt │ │ │ │ ├── AudioWavesMaskHelper.kt │ │ │ │ ├── ConversationAudioMessagePlayer.kt │ │ │ │ └── RecordAudioMessagePlayer.kt │ │ │ ├── model │ │ │ ├── ImageAsset.kt │ │ │ ├── ItemActionType.kt │ │ │ ├── SnackBarMessage.kt │ │ │ ├── TriState.kt │ │ │ └── UserAvatarData.kt │ │ │ ├── navigation │ │ │ ├── FolderNavArgs.kt │ │ │ ├── HomeDestination.kt │ │ │ ├── LoginTypeSelector.kt │ │ │ ├── MainNavHost.kt │ │ │ ├── NavigationUtils.kt │ │ │ ├── Navigator.kt │ │ │ ├── OtherDestinations.kt │ │ │ ├── TabletStyleHelper.kt │ │ │ └── WireMainNavGraph.kt │ │ │ ├── notification │ │ │ ├── CallNotificationManager.kt │ │ │ ├── MessageNotificationManager.kt │ │ │ ├── Models.kt │ │ │ ├── NotificationActions.kt │ │ │ ├── NotificationChannelsManager.kt │ │ │ ├── NotificationConstants.kt │ │ │ ├── PendingIntents.kt │ │ │ ├── WireNotificationManager.kt │ │ │ └── broadcastreceivers │ │ │ │ ├── EndOngoingCallReceiver.kt │ │ │ │ ├── IncomingCallActionReceiver.kt │ │ │ │ ├── NotificationReplyReceiver.kt │ │ │ │ ├── PlayPauseAudioMessageReceiver.kt │ │ │ │ └── StopAudioMessageReceiver.kt │ │ │ ├── services │ │ │ ├── CallService.kt │ │ │ ├── PersistentWebSocketService.kt │ │ │ ├── PlayingAudioMessageService.kt │ │ │ └── ServicesManager.kt │ │ │ ├── ui │ │ │ ├── AppLockActivity.kt │ │ │ ├── CallFeedbackViewModel.kt │ │ │ ├── WireActivity.kt │ │ │ ├── WireActivityActionsHandler.kt │ │ │ ├── WireActivityDialogs.kt │ │ │ ├── WireActivityState.kt │ │ │ ├── WireActivityViewModel.kt │ │ │ ├── WireTestActivity.kt │ │ │ ├── analytics │ │ │ │ ├── AnalyticsConfiguration.kt │ │ │ │ ├── AnalyticsUsageState.kt │ │ │ │ ├── AnalyticsUsageViewModel.kt │ │ │ │ └── IsAnalyticsAvailableUseCase.kt │ │ │ ├── authentication │ │ │ │ ├── create │ │ │ │ │ ├── code │ │ │ │ │ │ ├── CreateAccountCodeScreen.kt │ │ │ │ │ │ ├── CreateAccountCodeViewModel.kt │ │ │ │ │ │ └── CreateAccountCodeViewState.kt │ │ │ │ │ ├── common │ │ │ │ │ │ ├── CreateAccountFlowType.kt │ │ │ │ │ │ ├── CreateAccountNavArgs.kt │ │ │ │ │ │ ├── CreateAccountNavGraph.kt │ │ │ │ │ │ ├── ServerTitle.kt │ │ │ │ │ │ └── handle │ │ │ │ │ │ │ ├── HandleUpdateErrorState.kt │ │ │ │ │ │ │ └── UsernameTextField.kt │ │ │ │ │ ├── details │ │ │ │ │ │ ├── CreateAccountDetailsScreen.kt │ │ │ │ │ │ ├── CreateAccountDetailsViewModel.kt │ │ │ │ │ │ └── CreateAccountDetailsViewState.kt │ │ │ │ │ ├── email │ │ │ │ │ │ ├── CreateAccountEmailScreen.kt │ │ │ │ │ │ ├── CreateAccountEmailViewModel.kt │ │ │ │ │ │ └── CreateAccountEmailViewState.kt │ │ │ │ │ ├── overview │ │ │ │ │ │ ├── CreateAccountOverviewNavArgs.kt │ │ │ │ │ │ ├── CreateAccountOverviewParams.kt │ │ │ │ │ │ ├── CreateAccountOverviewViewModel.kt │ │ │ │ │ │ └── CreatePersonalAccountOverviewScreen.kt │ │ │ │ │ ├── summary │ │ │ │ │ │ ├── CreateAccountSummaryNavArgs.kt │ │ │ │ │ │ ├── CreateAccountSummaryScreen.kt │ │ │ │ │ │ ├── CreateAccountSummaryViewModel.kt │ │ │ │ │ │ └── CreateAccountSummaryViewState.kt │ │ │ │ │ └── username │ │ │ │ │ │ ├── CreateAccountUsernameScreen.kt │ │ │ │ │ │ ├── CreateAccountUsernameViewModel.kt │ │ │ │ │ │ └── CreateAccountUsernameViewState.kt │ │ │ │ ├── devices │ │ │ │ │ ├── DeviceItem.kt │ │ │ │ │ ├── common │ │ │ │ │ │ ├── ClearSessionState.kt │ │ │ │ │ │ └── ClearSessionViewModel.kt │ │ │ │ │ ├── model │ │ │ │ │ │ └── Device.kt │ │ │ │ │ ├── register │ │ │ │ │ │ ├── RegisterDeviceScreen.kt │ │ │ │ │ │ ├── RegisterDeviceState.kt │ │ │ │ │ │ ├── RegisterDeviceVerificationCodeScreen.kt │ │ │ │ │ │ └── RegisterDeviceViewModel.kt │ │ │ │ │ └── remove │ │ │ │ │ │ ├── RemoveDeviceDialog.kt │ │ │ │ │ │ ├── RemoveDeviceScreen.kt │ │ │ │ │ │ ├── RemoveDeviceState.kt │ │ │ │ │ │ ├── RemoveDeviceTopBar.kt │ │ │ │ │ │ └── RemoveDeviceViewModel.kt │ │ │ │ ├── login │ │ │ │ │ ├── LoginErrorDialog.kt │ │ │ │ │ ├── LoginNavArgs.kt │ │ │ │ │ ├── LoginNavGraph.kt │ │ │ │ │ ├── LoginNavigationItem.kt │ │ │ │ │ ├── LoginScreen.kt │ │ │ │ │ ├── LoginState.kt │ │ │ │ │ ├── LoginViewModel.kt │ │ │ │ │ ├── LoginViewModelExtension.kt │ │ │ │ │ ├── PreviewLoginErrorDialog.kt │ │ │ │ │ ├── WireAuthBackgroundComponent.kt │ │ │ │ │ ├── email │ │ │ │ │ │ ├── LoginEmailScreen.kt │ │ │ │ │ │ ├── LoginEmailState.kt │ │ │ │ │ │ ├── LoginEmailVerificationCodeScreen.kt │ │ │ │ │ │ ├── LoginEmailViewModel.kt │ │ │ │ │ │ └── ProxyScreen.kt │ │ │ │ │ └── sso │ │ │ │ │ │ ├── LoginSSOScreen.kt │ │ │ │ │ │ ├── LoginSSOState.kt │ │ │ │ │ │ ├── LoginSSOViewModel.kt │ │ │ │ │ │ ├── LoginSSOViewModelExtension.kt │ │ │ │ │ │ └── SSOUrlConfigHolder.kt │ │ │ │ ├── verificationcode │ │ │ │ │ ├── ResendCodeText.kt │ │ │ │ │ ├── VerificationCode.kt │ │ │ │ │ ├── VerificationCodeScreenContent.kt │ │ │ │ │ └── VerificationCodeState.kt │ │ │ │ └── welcome │ │ │ │ │ ├── WelcomeNavArgs.kt │ │ │ │ │ ├── WelcomeScreen.kt │ │ │ │ │ ├── WelcomeScreenState.kt │ │ │ │ │ └── WelcomeViewModel.kt │ │ │ ├── calling │ │ │ │ ├── CallActivity.kt │ │ │ │ ├── CallActivityViewModel.kt │ │ │ │ ├── CallState.kt │ │ │ │ ├── ConversationName.kt │ │ │ │ ├── ProximitySensorManager.kt │ │ │ │ ├── SharedCallingViewModel.kt │ │ │ │ ├── StartingCallActivity.kt │ │ │ │ ├── StartingCallScreenType.kt │ │ │ │ ├── common │ │ │ │ │ ├── CallVideoPreview.kt │ │ │ │ │ └── CallerDetails.kt │ │ │ │ ├── controlbuttons │ │ │ │ │ ├── AcceptButton.kt │ │ │ │ │ ├── CallOptionsControls.kt │ │ │ │ │ ├── CameraButton.kt │ │ │ │ │ ├── HangUpButton.kt │ │ │ │ │ ├── HangUpOngoingButton.kt │ │ │ │ │ ├── InCallReactionsButton.kt │ │ │ │ │ ├── JoinButton.kt │ │ │ │ │ ├── MicrophoneButton.kt │ │ │ │ │ ├── SpeakerButton.kt │ │ │ │ │ ├── StartCallButton.kt │ │ │ │ │ └── WireCallControlButton.kt │ │ │ │ ├── incoming │ │ │ │ │ ├── IncomingCallScreen.kt │ │ │ │ │ ├── IncomingCallState.kt │ │ │ │ │ └── IncomingCallViewModel.kt │ │ │ │ ├── model │ │ │ │ │ ├── InCallReaction.kt │ │ │ │ │ └── UICallParticipant.kt │ │ │ │ ├── ongoing │ │ │ │ │ ├── OngoingCallActivity.kt │ │ │ │ │ ├── OngoingCallScreen.kt │ │ │ │ │ ├── OngoingCallState.kt │ │ │ │ │ ├── OngoingCallViewModel.kt │ │ │ │ │ ├── fullscreen │ │ │ │ │ │ ├── DoubleTapToast.kt │ │ │ │ │ │ ├── FullScreenTile.kt │ │ │ │ │ │ └── SelectedParticipant.kt │ │ │ │ │ ├── incallreactions │ │ │ │ │ │ ├── InCallReactions.kt │ │ │ │ │ │ ├── InCallReactionsModifier.kt │ │ │ │ │ │ ├── InCallReactionsPanel.kt │ │ │ │ │ │ └── InCallReactionsState.kt │ │ │ │ │ └── participantsview │ │ │ │ │ │ ├── CallingGridParams.kt │ │ │ │ │ │ ├── FlipCameraButton.kt │ │ │ │ │ │ ├── FloatingSelfUserTile.kt │ │ │ │ │ │ ├── ParticipantTile.kt │ │ │ │ │ │ ├── VerticalCallingPager.kt │ │ │ │ │ │ ├── VerticalPagerIndicator.kt │ │ │ │ │ │ └── gridview │ │ │ │ │ │ └── CallingGridView.kt │ │ │ │ └── outgoing │ │ │ │ │ ├── OutgoingCallScreen.kt │ │ │ │ │ ├── OutgoingCallState.kt │ │ │ │ │ └── OutgoingCallViewModel.kt │ │ │ ├── common │ │ │ │ ├── AddContactButton.kt │ │ │ │ ├── AppExtensions.kt │ │ │ │ ├── AppThemeExt.kt │ │ │ │ ├── ArrowIcon.kt │ │ │ │ ├── AttachmentButton.kt │ │ │ │ ├── BlockedLabel.kt │ │ │ │ ├── ClickableText.kt │ │ │ │ ├── CollapsingTopBarScaffold.kt │ │ │ │ ├── ComponentAnimations.kt │ │ │ │ ├── CopyButton.kt │ │ │ │ ├── ElevationScrollExt.kt │ │ │ │ ├── LegalHoldIndicator.kt │ │ │ │ ├── Logo.kt │ │ │ │ ├── MembershipQualifierLabel.kt │ │ │ │ ├── PreviewTextWithLinkSuffix.kt │ │ │ │ ├── PreviewWireDialog.kt │ │ │ │ ├── RowItemTemplate.kt │ │ │ │ ├── SearchBar.kt │ │ │ │ ├── SettingUpWireScreenContent.kt │ │ │ │ ├── ShakeAnimation.kt │ │ │ │ ├── StatusBox.kt │ │ │ │ ├── SurfaceBackgroundWrapper.kt │ │ │ │ ├── TextWithLearnMore.kt │ │ │ │ ├── UnderConstructionScreen.kt │ │ │ │ ├── UserBadge.kt │ │ │ │ ├── VerifiedIcons.kt │ │ │ │ ├── VisibilityState.kt │ │ │ │ ├── WireCheckIcon.kt │ │ │ │ ├── WireDropDown.kt │ │ │ │ ├── WireLabelledCheckbox.kt │ │ │ │ ├── WireRadioButton.kt │ │ │ │ ├── WireTabRow.kt │ │ │ │ ├── attachmentdraft │ │ │ │ │ ├── model │ │ │ │ │ │ └── AttachmentDraftUi.kt │ │ │ │ │ └── ui │ │ │ │ │ │ ├── AttachmentDraftView.kt │ │ │ │ │ │ ├── AttachmentFileView.kt │ │ │ │ │ │ ├── AttachmentImageView.kt │ │ │ │ │ │ ├── AttachmentScaffold.kt │ │ │ │ │ │ ├── AttachmentVideoView.kt │ │ │ │ │ │ └── FileHeaderView.kt │ │ │ │ ├── avatar │ │ │ │ │ ├── UnreadInfoIndicator.kt │ │ │ │ │ ├── UserProfileAvatar.kt │ │ │ │ │ └── UserStatusIndicator.kt │ │ │ │ ├── banner │ │ │ │ │ ├── SecurityClassificationArgs.kt │ │ │ │ │ ├── SecurityClassificationBanner.kt │ │ │ │ │ └── SecurityClassificationViewModel.kt │ │ │ │ ├── bottombar │ │ │ │ │ └── BottomNavigationBarHeight.kt │ │ │ │ ├── bottomsheet │ │ │ │ │ ├── PreviewMenuBottomSheetItem.kt │ │ │ │ │ ├── PreviewWireModalSheetLayout.kt │ │ │ │ │ ├── RichMenuBottomSheetItem.kt │ │ │ │ │ ├── conversation │ │ │ │ │ │ ├── ConversationSheetContent.kt │ │ │ │ │ │ ├── ConversationSheetState.kt │ │ │ │ │ │ ├── HomeSheetContent.kt │ │ │ │ │ │ └── MutingOptionsSheetContent.kt │ │ │ │ │ └── folder │ │ │ │ │ │ ├── ChangeConversationFavoriteStateArgs.kt │ │ │ │ │ │ └── ChangeConversationFavoriteVM.kt │ │ │ │ ├── dialogs │ │ │ │ │ ├── ArchiveConversationDialog.kt │ │ │ │ │ ├── BlockUserDialogs.kt │ │ │ │ │ ├── CancelLoginDialog.kt │ │ │ │ │ ├── ConfirmSendingPingDialog.kt │ │ │ │ │ ├── CustomServerDialog.kt │ │ │ │ │ ├── CustomServerNoNetworkDialog.kt │ │ │ │ │ ├── DialogStates.kt │ │ │ │ │ ├── EmailAlreadyInUseClaimedDomainDialog.kt │ │ │ │ │ ├── FeatureDisabledWithProxyDialog.kt │ │ │ │ │ ├── InvalidLinkDialog.kt │ │ │ │ │ ├── MaxAccountsReachedDialog.kt │ │ │ │ │ ├── PermissionPermanentlyDeniedDialog.kt │ │ │ │ │ ├── ProgressDialog.kt │ │ │ │ │ ├── SureAboutMessagingInDegradedConversationDialog.kt │ │ │ │ │ ├── UnblockUserDialogs.kt │ │ │ │ │ ├── UserNotFoundDialog.kt │ │ │ │ │ ├── VisitLinkDialog.kt │ │ │ │ │ └── calling │ │ │ │ │ │ ├── CallingFeatureActivatedDialog.kt │ │ │ │ │ │ ├── CallingFeatureUnavailableDialog.kt │ │ │ │ │ │ ├── ConfirmStartCallDialog.kt │ │ │ │ │ │ ├── JoinAnywayDialog.kt │ │ │ │ │ │ ├── OngoingActiveCallDialog.kt │ │ │ │ │ │ └── SureAboutCallingInDegradedConversationDialog.kt │ │ │ │ ├── effects │ │ │ │ │ └── LaunchedEffects.kt │ │ │ │ ├── error │ │ │ │ │ └── CoreFailureErrorDialog.kt │ │ │ │ ├── groupname │ │ │ │ │ ├── GroupConversationNameComponent.kt │ │ │ │ │ ├── GroupMetadataState.kt │ │ │ │ │ └── GroupNameValidator.kt │ │ │ │ ├── imagepreview │ │ │ │ │ ├── AvatarPickerFlow.kt │ │ │ │ │ └── BulletHoleImagePreview.kt │ │ │ │ ├── multipart │ │ │ │ │ └── MultipartAttachmentUi.kt │ │ │ │ ├── snackbar │ │ │ │ │ └── WireSnackbar.kt │ │ │ │ ├── spacers │ │ │ │ │ ├── HorizontalSpace.kt │ │ │ │ │ └── VerticalSpace.kt │ │ │ │ ├── topappbar │ │ │ │ │ ├── CommonTopAppBar.kt │ │ │ │ │ ├── CommonTopAppBarState.kt │ │ │ │ │ ├── CommonTopAppBarViewModel.kt │ │ │ │ │ ├── Connectivity.kt │ │ │ │ │ ├── ConnectivityUIState.kt │ │ │ │ │ ├── ConversationFilterState.kt │ │ │ │ │ └── search │ │ │ │ │ │ └── SearchTopBar.kt │ │ │ │ └── visbility │ │ │ │ │ └── VisibilityState.kt │ │ │ ├── connection │ │ │ │ ├── ConnectionActionButton.kt │ │ │ │ ├── ConnectionActionButtonArgs.kt │ │ │ │ ├── ConnectionActionButtonViewModel.kt │ │ │ │ └── ConnectionActionState.kt │ │ │ ├── debug │ │ │ │ ├── DebugDataOptions.kt │ │ │ │ ├── DebugDataOptionsState.kt │ │ │ │ ├── DebugDataOptionsViewModel.kt │ │ │ │ ├── DebugScreen.kt │ │ │ │ ├── DebugWireCellOptions.kt │ │ │ │ ├── ExportObfuscatedCopyViewModel.kt │ │ │ │ ├── LogOptions.kt │ │ │ │ ├── ObfuscatedCopyFlow.kt │ │ │ │ ├── StartServiceReceiver.kt │ │ │ │ └── UserDebugViewModel.kt │ │ │ ├── e2eiEnrollment │ │ │ │ ├── E2EIEnrollmentScreen.kt │ │ │ │ ├── E2EIEnrollmentViewModel.kt │ │ │ │ ├── GetE2EICertificateUI.kt │ │ │ │ └── GetE2EICertificateViewModel.kt │ │ │ ├── edit │ │ │ │ ├── CopyItemMenuOption.kt │ │ │ │ ├── DeleteItemMenuOption.kt │ │ │ │ ├── DownloadAssetExternallyOption.kt │ │ │ │ ├── EditMessageMenuOption.kt │ │ │ │ ├── MessageDetailsMenuOption.kt │ │ │ │ ├── OpenAssetExternallyOption.kt │ │ │ │ ├── ReactionOption.kt │ │ │ │ ├── ReplyMessageOption.kt │ │ │ │ └── ShareAssetMenuOption.kt │ │ │ ├── emoji │ │ │ │ ├── DraggableByHandleBottomSheetBehavior.kt │ │ │ │ ├── EmojiPicker.kt │ │ │ │ └── HandleDraggableBottomSheetDialog.kt │ │ │ ├── home │ │ │ │ ├── AppSyncViewModel.kt │ │ │ │ ├── E2EIDialogs.kt │ │ │ │ ├── FeatureFlagState.kt │ │ │ │ ├── HomeDialogs.kt │ │ │ │ ├── HomeNavGraph.kt │ │ │ │ ├── HomeScreen.kt │ │ │ │ ├── HomeSnackBarMessage.kt │ │ │ │ ├── HomeState.kt │ │ │ │ ├── HomeStateHolder.kt │ │ │ │ ├── HomeTopBar.kt │ │ │ │ ├── HomeViewModel.kt │ │ │ │ ├── appLock │ │ │ │ │ ├── LockCodeTimeManager.kt │ │ │ │ │ ├── forgot │ │ │ │ │ │ ├── ForgotLockCodeResetDeviceDialog.kt │ │ │ │ │ │ ├── ForgotLockCodeScreen.kt │ │ │ │ │ │ ├── ForgotLockCodeViewState.kt │ │ │ │ │ │ └── ForgotLockScreenViewModel.kt │ │ │ │ │ ├── set │ │ │ │ │ │ ├── SetLockCodeScreen.kt │ │ │ │ │ │ ├── SetLockCodeViewState.kt │ │ │ │ │ │ └── SetLockScreenViewModel.kt │ │ │ │ │ └── unlock │ │ │ │ │ │ ├── AppUnlockWithBiometricsScreen.kt │ │ │ │ │ │ ├── AppUnlockWithBiometricsViewModel.kt │ │ │ │ │ │ ├── EnterLockCodeScreen.kt │ │ │ │ │ │ ├── EnterLockCodeViewState.kt │ │ │ │ │ │ └── EnterLockScreenViewModel.kt │ │ │ │ ├── archive │ │ │ │ │ ├── ArchiveEmptyContent.kt │ │ │ │ │ └── ArchiveScreen.kt │ │ │ │ ├── cell │ │ │ │ │ └── GlobalCellsScreen.kt │ │ │ │ ├── conversations │ │ │ │ │ ├── AssetTooLargeDialog.kt │ │ │ │ │ ├── AuthorHeaderHelper.kt │ │ │ │ │ ├── CompositeMessageViewModel.kt │ │ │ │ │ ├── ConversationMemberExt.kt │ │ │ │ │ ├── ConversationMessageType.kt │ │ │ │ │ ├── ConversationNavArgs.kt │ │ │ │ │ ├── ConversationScreen.kt │ │ │ │ │ ├── ConversationScreenDialogType.kt │ │ │ │ │ ├── ConversationScreenState.kt │ │ │ │ │ ├── ConversationTopAppBar.kt │ │ │ │ │ ├── DownloadedAssetDialog.kt │ │ │ │ │ ├── FailedAttachmentDialog.kt │ │ │ │ │ ├── MessageComposerViewState.kt │ │ │ │ │ ├── MessageExpiration.kt │ │ │ │ │ ├── UsersTypingIndicator.kt │ │ │ │ │ ├── attachment │ │ │ │ │ │ └── MessageAttachmentsViewModel.kt │ │ │ │ │ ├── banner │ │ │ │ │ │ ├── ConversationBanner.kt │ │ │ │ │ │ ├── ConversationBannerViewModel.kt │ │ │ │ │ │ └── usecase │ │ │ │ │ │ │ └── ObserveConversationMembersByTypesUseCase.kt │ │ │ │ │ ├── call │ │ │ │ │ │ ├── ConversationCallViewState.kt │ │ │ │ │ │ └── ConversationListCallViewModel.kt │ │ │ │ │ ├── channels │ │ │ │ │ │ ├── BrowseChannelsEmptyScreen.kt │ │ │ │ │ │ └── BrowseChannelsScreen.kt │ │ │ │ │ ├── composer │ │ │ │ │ │ └── MessageComposerViewModel.kt │ │ │ │ │ ├── delete │ │ │ │ │ │ ├── DeleteMessageDialog.kt │ │ │ │ │ │ ├── DeleteMessageDialogHelper.kt │ │ │ │ │ │ └── DeleteMessageDialogsState.kt │ │ │ │ │ ├── details │ │ │ │ │ │ ├── GroupConversationDetailsNavArgs.kt │ │ │ │ │ │ ├── GroupConversationDetailsScreen.kt │ │ │ │ │ │ ├── GroupConversationDetailsTopBarCollapsing.kt │ │ │ │ │ │ ├── GroupConversationDetailsViewModel.kt │ │ │ │ │ │ ├── SearchAndMediaRow.kt │ │ │ │ │ │ ├── dialog │ │ │ │ │ │ │ └── ClearConversationContentDialog.kt │ │ │ │ │ │ ├── editguestaccess │ │ │ │ │ │ │ ├── Buttons.kt │ │ │ │ │ │ │ ├── CreateGuestLinkBottomSheet.kt │ │ │ │ │ │ │ ├── Dialogs.kt │ │ │ │ │ │ │ ├── EditGuestAccessNavArgs.kt │ │ │ │ │ │ │ ├── EditGuestAccessParams.kt │ │ │ │ │ │ │ ├── EditGuestAccessScreen.kt │ │ │ │ │ │ │ ├── EditGuestAccessState.kt │ │ │ │ │ │ │ ├── EditGuestAccessViewModel.kt │ │ │ │ │ │ │ ├── GuestLinkActionButtons.kt │ │ │ │ │ │ │ ├── GuestOption.kt │ │ │ │ │ │ │ ├── PasswordProtectedLinkBanner.kt │ │ │ │ │ │ │ └── createPasswordProtectedGuestLink │ │ │ │ │ │ │ │ ├── CreatePasswordGuestLinkNavArgs.kt │ │ │ │ │ │ │ │ ├── CreatePasswordGuestLinkState.kt │ │ │ │ │ │ │ │ ├── CreatePasswordGuestLinkViewModel.kt │ │ │ │ │ │ │ │ ├── CreatePasswordProtectedGuestLinkScreen.kt │ │ │ │ │ │ │ │ └── GeneratePasswordButton.kt │ │ │ │ │ │ ├── editselfdeletingmessages │ │ │ │ │ │ │ ├── EditSelfDeletingMessagesNavArgs.kt │ │ │ │ │ │ │ ├── EditSelfDeletingMessagesScreen.kt │ │ │ │ │ │ │ ├── EditSelfDeletingMessagesState.kt │ │ │ │ │ │ │ ├── EditSelfDeletingMessagesViewModel.kt │ │ │ │ │ │ │ └── SelfDeletingMessageOption.kt │ │ │ │ │ │ ├── menu │ │ │ │ │ │ │ ├── DeleteConversationGroupDialog.kt │ │ │ │ │ │ │ ├── DeleteConversationGroupLocallyDialog.kt │ │ │ │ │ │ │ ├── GroupConversationDetailsBottomSheetEventsHandler.kt │ │ │ │ │ │ │ └── LeaveConversationGroupDialog.kt │ │ │ │ │ │ ├── metadata │ │ │ │ │ │ │ ├── EditConversationMetadataViewModel.kt │ │ │ │ │ │ │ ├── EditConversationNameNavArgs.kt │ │ │ │ │ │ │ └── EditConversationNameScreen.kt │ │ │ │ │ │ ├── options │ │ │ │ │ │ │ ├── GroupConversationOptions.kt │ │ │ │ │ │ │ ├── GroupConversationOptionsItem.kt │ │ │ │ │ │ │ └── GroupConversationOptionsState.kt │ │ │ │ │ │ ├── participants │ │ │ │ │ │ │ ├── ConversationParticipantItem.kt │ │ │ │ │ │ │ ├── GroupConversationAllParticipantsNavArgs.kt │ │ │ │ │ │ │ ├── GroupConversationAllParticipantsScreen.kt │ │ │ │ │ │ │ ├── GroupConversationParticipantList.kt │ │ │ │ │ │ │ ├── GroupConversationParticipants.kt │ │ │ │ │ │ │ ├── GroupConversationParticipantsState.kt │ │ │ │ │ │ │ ├── GroupConversationParticipantsViewModel.kt │ │ │ │ │ │ │ ├── model │ │ │ │ │ │ │ │ ├── ConversationParticipantsData.kt │ │ │ │ │ │ │ │ └── UIParticipant.kt │ │ │ │ │ │ │ └── usecase │ │ │ │ │ │ │ │ ├── ObserveConversationRoleForUserUseCase.kt │ │ │ │ │ │ │ │ └── ObserveParticipantsForConversationUseCase.kt │ │ │ │ │ │ └── updatechannelaccess │ │ │ │ │ │ │ ├── ChannelAccessOnUpdateScreen.kt │ │ │ │ │ │ │ ├── UpdateChannelAccessArgs.kt │ │ │ │ │ │ │ └── UpdateChannelAccessViewModel.kt │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── AssetOptionsMenuItems.kt │ │ │ │ │ │ ├── MessageOptionsMenuItems.kt │ │ │ │ │ │ ├── MessageOptionsModalSheetLayout.kt │ │ │ │ │ │ └── TextMessageOptionsMenuItems.kt │ │ │ │ │ ├── folder │ │ │ │ │ │ ├── ConversationFoldersNavArgs.kt │ │ │ │ │ │ ├── ConversationFoldersScreen.kt │ │ │ │ │ │ ├── ConversationFoldersVM.kt │ │ │ │ │ │ ├── MoveConversationToFolderVM.kt │ │ │ │ │ │ ├── NewConversationFolderScreen.kt │ │ │ │ │ │ ├── NewFolderViewModel.kt │ │ │ │ │ │ └── RemoveConversationFromFolderVM.kt │ │ │ │ │ ├── info │ │ │ │ │ │ ├── ConversationInfoViewModel.kt │ │ │ │ │ │ └── ConversationInfoViewState.kt │ │ │ │ │ ├── media │ │ │ │ │ │ ├── CheckAssetRestrictionsViewModel.kt │ │ │ │ │ │ ├── ConversationAssetMessagesViewModel.kt │ │ │ │ │ │ ├── ConversationAssetMessagesViewState.kt │ │ │ │ │ │ ├── ConversationFilesButton.kt │ │ │ │ │ │ ├── ConversationMediaButton.kt │ │ │ │ │ │ ├── ConversationMediaNavArgs.kt │ │ │ │ │ │ ├── ConversationMediaScreen.kt │ │ │ │ │ │ ├── EmptyMediaContentScreen.kt │ │ │ │ │ │ ├── FileAssetsContent.kt │ │ │ │ │ │ ├── ImageAssetsContent.kt │ │ │ │ │ │ └── preview │ │ │ │ │ │ │ ├── AssetFilePreview.kt │ │ │ │ │ │ │ ├── AssetTilePreview.kt │ │ │ │ │ │ │ ├── ImagesPreviewNavArgs.kt │ │ │ │ │ │ │ ├── ImagesPreviewScreen.kt │ │ │ │ │ │ │ ├── ImagesPreviewState.kt │ │ │ │ │ │ │ └── ImagesPreviewViewModel.kt │ │ │ │ │ ├── mention │ │ │ │ │ │ └── MemberItemToMention.kt │ │ │ │ │ ├── messagedetails │ │ │ │ │ │ ├── MessageDetailsEmptyScreenText.kt │ │ │ │ │ │ ├── MessageDetailsNavArgs.kt │ │ │ │ │ │ ├── MessageDetailsReactions.kt │ │ │ │ │ │ ├── MessageDetailsReadReceipts.kt │ │ │ │ │ │ ├── MessageDetailsScreen.kt │ │ │ │ │ │ ├── MessageDetailsState.kt │ │ │ │ │ │ ├── MessageDetailsViewModel.kt │ │ │ │ │ │ ├── model │ │ │ │ │ │ │ ├── MessageDetailsReactionsData.kt │ │ │ │ │ │ │ └── MessageDetailsReadReceiptsData.kt │ │ │ │ │ │ └── usecase │ │ │ │ │ │ │ ├── ObserveReactionsForMessageUseCase.kt │ │ │ │ │ │ │ └── ObserveReceiptsForMessageUseCase.kt │ │ │ │ │ ├── messages │ │ │ │ │ │ ├── ConversationMessagesViewModel.kt │ │ │ │ │ │ ├── ConversationMessagesViewState.kt │ │ │ │ │ │ ├── QuotedMessage.kt │ │ │ │ │ │ ├── ReactionPill.kt │ │ │ │ │ │ ├── draft │ │ │ │ │ │ │ └── MessageDraftViewModel.kt │ │ │ │ │ │ └── item │ │ │ │ │ │ │ ├── InterceptClickable.kt │ │ │ │ │ │ │ ├── MessageClickActions.kt │ │ │ │ │ │ │ ├── MessageContainerItem.kt │ │ │ │ │ │ │ ├── MessageContentAndStatus.kt │ │ │ │ │ │ │ ├── MessageItemComponents.kt │ │ │ │ │ │ │ ├── MessageItemTemplate.kt │ │ │ │ │ │ │ ├── MessageStatusIndicator.kt │ │ │ │ │ │ │ ├── RegularMessageItem.kt │ │ │ │ │ │ │ ├── RegularMessageItemLeading.kt │ │ │ │ │ │ │ ├── SwipeableMessageBox.kt │ │ │ │ │ │ │ ├── SystemMessageItem.kt │ │ │ │ │ │ │ └── SystemMessageItemLeading.kt │ │ │ │ │ ├── migration │ │ │ │ │ │ └── ConversationMigrationViewModel.kt │ │ │ │ │ ├── mock │ │ │ │ │ │ └── Mock.kt │ │ │ │ │ ├── model │ │ │ │ │ │ ├── AssetBundle.kt │ │ │ │ │ │ ├── CompositeMessageArgs.kt │ │ │ │ │ │ ├── MessageTypes.kt │ │ │ │ │ │ ├── UIMention.kt │ │ │ │ │ │ ├── UIMessage.kt │ │ │ │ │ │ ├── UIQuotedMessage.kt │ │ │ │ │ │ └── messagetypes │ │ │ │ │ │ │ ├── asset │ │ │ │ │ │ │ ├── AssetMessageTypes.kt │ │ │ │ │ │ │ ├── PdfAssetPreview.kt │ │ │ │ │ │ │ └── UIAssetMessage.kt │ │ │ │ │ │ │ ├── audio │ │ │ │ │ │ │ └── AudioMessageType.kt │ │ │ │ │ │ │ ├── image │ │ │ │ │ │ │ ├── ImageMessageParams.kt │ │ │ │ │ │ │ └── ImageMessageTypes.kt │ │ │ │ │ │ │ ├── location │ │ │ │ │ │ │ └── LocationMessageType.kt │ │ │ │ │ │ │ ├── multipart │ │ │ │ │ │ │ ├── MultipartAttachmentsView.kt │ │ │ │ │ │ │ ├── MultipartAttachmentsViewModel.kt │ │ │ │ │ │ │ ├── TransferStatusIcon.kt │ │ │ │ │ │ │ ├── grid │ │ │ │ │ │ │ │ ├── AssetGridPreview.kt │ │ │ │ │ │ │ │ ├── AssetNotAvailableGridPreview.kt │ │ │ │ │ │ │ │ ├── FileAssetGridPreview.kt │ │ │ │ │ │ │ │ ├── ImageAssetGridPreview.kt │ │ │ │ │ │ │ │ ├── PdfAssetGridPreview.kt │ │ │ │ │ │ │ │ └── VideoAssetGridPreview.kt │ │ │ │ │ │ │ └── standalone │ │ │ │ │ │ │ │ ├── AssetNotAvailablePreview.kt │ │ │ │ │ │ │ │ ├── AssetPreview.kt │ │ │ │ │ │ │ │ ├── FileAssetPreview.kt │ │ │ │ │ │ │ │ ├── ImageAssetPreview.kt │ │ │ │ │ │ │ │ ├── PdfAssetPreview.kt │ │ │ │ │ │ │ │ └── VideoAssetPreview.kt │ │ │ │ │ │ │ └── video │ │ │ │ │ │ │ └── VideoMessage.kt │ │ │ │ │ ├── search │ │ │ │ │ │ ├── AddMembersSearchNavArgs.kt │ │ │ │ │ │ ├── EmptySearchQueryScreen.kt │ │ │ │ │ │ ├── HighLightName.kt │ │ │ │ │ │ ├── HighLightSubtTitle.kt │ │ │ │ │ │ ├── InternalContactSearchResultItem.kt │ │ │ │ │ │ ├── QueryExtension.kt │ │ │ │ │ │ ├── SearchAllPeopleScreen.kt │ │ │ │ │ │ ├── SearchAllServicesScreen.kt │ │ │ │ │ │ ├── SearchPeopleScreenState.kt │ │ │ │ │ │ ├── SearchServicesViewModel.kt │ │ │ │ │ │ ├── SearchUserViewModel.kt │ │ │ │ │ │ ├── SearchUsersAndServicesScreen.kt │ │ │ │ │ │ ├── adddembertoconversation │ │ │ │ │ │ │ ├── AddMembersSearchScreen.kt │ │ │ │ │ │ │ └── AddMembersToConversationViewModel.kt │ │ │ │ │ │ ├── messages │ │ │ │ │ │ │ ├── SearchConversationMessagesButton.kt │ │ │ │ │ │ │ ├── SearchConversationMessagesEmptyScreen.kt │ │ │ │ │ │ │ ├── SearchConversationMessagesNavArgs.kt │ │ │ │ │ │ │ ├── SearchConversationMessagesNoResultsScreen.kt │ │ │ │ │ │ │ ├── SearchConversationMessagesResultsScreen.kt │ │ │ │ │ │ │ ├── SearchConversationMessagesScreen.kt │ │ │ │ │ │ │ ├── SearchConversationMessagesState.kt │ │ │ │ │ │ │ └── SearchConversationMessagesViewModel.kt │ │ │ │ │ │ └── widget │ │ │ │ │ │ │ └── SearchFailureWidget.kt │ │ │ │ │ ├── selfdeletion │ │ │ │ │ │ ├── SelfDeletionMapper.kt │ │ │ │ │ │ ├── SelfDeletionMenuItems.kt │ │ │ │ │ │ └── SelfDeletionOptionsModalSheetLayout.kt │ │ │ │ │ ├── sendmessage │ │ │ │ │ │ ├── SendMessageState.kt │ │ │ │ │ │ └── SendMessageViewModel.kt │ │ │ │ │ ├── typing │ │ │ │ │ │ ├── TypingIndicatorViewModel.kt │ │ │ │ │ │ └── UsersTypingViewState.kt │ │ │ │ │ └── usecase │ │ │ │ │ │ ├── GetAssetMessagesFromConversationUseCase.kt │ │ │ │ │ │ ├── GetConversationMessagesFromSearchUseCase.kt │ │ │ │ │ │ ├── GetConversationsFromSearchUseCase.kt │ │ │ │ │ │ ├── GetMessagesForConversationUseCase.kt │ │ │ │ │ │ ├── GetQuoteMessageForConversationUseCase.kt │ │ │ │ │ │ ├── GetUsersForMessageUseCase.kt │ │ │ │ │ │ ├── HandleUriAssetUseCase.kt │ │ │ │ │ │ ├── ObserveImageAssetMessagesFromConversationUseCase.kt │ │ │ │ │ │ └── ObserveUsersTypingInConversationUseCase.kt │ │ │ │ ├── conversationslist │ │ │ │ │ ├── ConversationCallListViewModel.kt │ │ │ │ │ ├── ConversationListLoadingContent.kt │ │ │ │ │ ├── ConversationListState.kt │ │ │ │ │ ├── ConversationListViewModel.kt │ │ │ │ │ ├── ConversationsDialogsState.kt │ │ │ │ │ ├── ConversationsScreenContent.kt │ │ │ │ │ ├── all │ │ │ │ │ │ ├── AllConversationsScreen.kt │ │ │ │ │ │ └── ConversationsEmptyContent.kt │ │ │ │ │ ├── common │ │ │ │ │ │ ├── ChannelConversationAvatar.kt │ │ │ │ │ │ ├── ConnectionLabel.kt │ │ │ │ │ │ ├── ConversationItemFactory.kt │ │ │ │ │ │ ├── ConversationList.kt │ │ │ │ │ │ ├── ConversationTitle.kt │ │ │ │ │ │ ├── ConversationUserAvatar.kt │ │ │ │ │ │ ├── CustomGroupAvatarDrawing.kt │ │ │ │ │ │ ├── EventBadge.kt │ │ │ │ │ │ ├── FolderHeader.kt │ │ │ │ │ │ ├── LastMessageSubtitle.kt │ │ │ │ │ │ ├── MutedConversationBadge.kt │ │ │ │ │ │ ├── RegularGroupConversationAvatar.kt │ │ │ │ │ │ ├── RowItem.kt │ │ │ │ │ │ └── UserLabel.kt │ │ │ │ │ ├── filter │ │ │ │ │ │ ├── ConversationFilterSheetContent.kt │ │ │ │ │ │ ├── ConversationFilterSheetState.kt │ │ │ │ │ │ ├── ConversationFiltersSheetContent.kt │ │ │ │ │ │ └── ConversationFoldersSheetContent.kt │ │ │ │ │ ├── model │ │ │ │ │ │ ├── BadgeEventType.kt │ │ │ │ │ │ ├── ConversationFolder.kt │ │ │ │ │ │ ├── ConversationItem.kt │ │ │ │ │ │ ├── ConversationsSource.kt │ │ │ │ │ │ ├── GroupDialogState.kt │ │ │ │ │ │ ├── LastConversationEvent.kt │ │ │ │ │ │ ├── Membership.kt │ │ │ │ │ │ └── MutedSetting.kt │ │ │ │ │ └── search │ │ │ │ │ │ └── SearchConversationsEmptyContent.kt │ │ │ │ ├── drawer │ │ │ │ │ ├── HomeDrawer.kt │ │ │ │ │ ├── HomeDrawerState.kt │ │ │ │ │ └── HomeDrawerViewModel.kt │ │ │ │ ├── gallery │ │ │ │ │ ├── MediaGalleryNavArgs.kt │ │ │ │ │ ├── MediaGalleryScreen.kt │ │ │ │ │ ├── MediaGalleryScreenTopAppBar.kt │ │ │ │ │ ├── MediaGalleryViewModel.kt │ │ │ │ │ ├── MediaGalleryViewState.kt │ │ │ │ │ └── ZoomableImage.kt │ │ │ │ ├── messagecomposer │ │ │ │ │ ├── AdditionalOptions.kt │ │ │ │ │ ├── AttachmentOptions.kt │ │ │ │ │ ├── DropDownMentionsSuggestions.kt │ │ │ │ │ ├── EnabledMessageComposer.kt │ │ │ │ │ ├── KeyboardModifiers.kt │ │ │ │ │ ├── MembersMentionList.kt │ │ │ │ │ ├── MessageActions.kt │ │ │ │ │ ├── MessageAttachments.kt │ │ │ │ │ ├── MessageComposeActions.kt │ │ │ │ │ ├── MessageComposer.kt │ │ │ │ │ ├── MessageComposerInput.kt │ │ │ │ │ ├── RichTextOptions.kt │ │ │ │ │ ├── SelfDeletionDuration.kt │ │ │ │ │ ├── actions │ │ │ │ │ │ ├── SelfDeletingMessageActionArgs.kt │ │ │ │ │ │ └── SelfDeletingMessageActionViewModel.kt │ │ │ │ │ ├── attachments │ │ │ │ │ │ ├── AdditionalOptionButton.kt │ │ │ │ │ │ ├── IsFileSharingEnabledArgs.kt │ │ │ │ │ │ └── IsFileSharingEnabledViewModel.kt │ │ │ │ │ ├── location │ │ │ │ │ │ ├── GeoLocatedAddress.kt │ │ │ │ │ │ ├── GeocoderHelper.kt │ │ │ │ │ │ ├── LocationPickerComponent.kt │ │ │ │ │ │ ├── LocationPickerHelper.kt │ │ │ │ │ │ ├── LocationPickerState.kt │ │ │ │ │ │ └── LocationPickerViewModel.kt │ │ │ │ │ ├── model │ │ │ │ │ │ ├── MessageBundle.kt │ │ │ │ │ │ └── MessageComposition.kt │ │ │ │ │ ├── recordaudio │ │ │ │ │ │ ├── AudioMediaRecorder.kt │ │ │ │ │ │ ├── GenerateAudioFileWithEffectsUseCase.kt │ │ │ │ │ │ ├── RecordAudioButtons.kt │ │ │ │ │ │ ├── RecordAudioComponent.kt │ │ │ │ │ │ ├── RecordAudioInfoMessageType.kt │ │ │ │ │ │ ├── RecordAudioState.kt │ │ │ │ │ │ ├── RecordAudioViewModel.kt │ │ │ │ │ │ └── RecordedAudioDialogs.kt │ │ │ │ │ └── state │ │ │ │ │ │ ├── AdditionalOptionMenuState.kt │ │ │ │ │ │ ├── MessageComposerStateHolder.kt │ │ │ │ │ │ ├── MessageCompositionHolder.kt │ │ │ │ │ │ └── MessageCompositionInputStateHolder.kt │ │ │ │ ├── newconversation │ │ │ │ │ ├── NewConversationViewModel.kt │ │ │ │ │ ├── channelaccess │ │ │ │ │ │ ├── AccessItem.kt │ │ │ │ │ │ ├── ChannelAccessOnCreateScreen.kt │ │ │ │ │ │ ├── ChannelAccessType.kt │ │ │ │ │ │ ├── ChannelAddPermissionType.kt │ │ │ │ │ │ └── PermissionItem.kt │ │ │ │ │ ├── common │ │ │ │ │ │ ├── ContinueButton.kt │ │ │ │ │ │ ├── CreateGroupErrorDialog.kt │ │ │ │ │ │ ├── CreateGroupState.kt │ │ │ │ │ │ ├── CreateRegularGroupOrChannelButtons.kt │ │ │ │ │ │ ├── NewConversationNavGraph.kt │ │ │ │ │ │ └── SendContentButton.kt │ │ │ │ │ ├── groupOptions │ │ │ │ │ │ ├── GroupOptionState.kt │ │ │ │ │ │ └── GroupOptionsScreen.kt │ │ │ │ │ ├── groupname │ │ │ │ │ │ └── NewGroupNameScreen.kt │ │ │ │ │ ├── groupsearch │ │ │ │ │ │ └── NewGroupConversationSearchPeopleScreen.kt │ │ │ │ │ ├── model │ │ │ │ │ │ └── Contact.kt │ │ │ │ │ └── search │ │ │ │ │ │ ├── ChannelNotAvailableDialog.kt │ │ │ │ │ │ └── NewConversationSearchPeopleScreen.kt │ │ │ │ ├── settings │ │ │ │ │ ├── SettingsItem.kt │ │ │ │ │ ├── SettingsOptionSwitch.kt │ │ │ │ │ ├── SettingsScreen.kt │ │ │ │ │ ├── SettingsState.kt │ │ │ │ │ ├── SettingsViewModel.kt │ │ │ │ │ ├── TurnAppLockOffDialog.kt │ │ │ │ │ ├── about │ │ │ │ │ │ ├── dependencies │ │ │ │ │ │ │ ├── DependenciesScreen.kt │ │ │ │ │ │ │ ├── DependenciesState.kt │ │ │ │ │ │ │ └── DependenciesViewModel.kt │ │ │ │ │ │ └── licenses │ │ │ │ │ │ │ ├── LicenseDialog.kt │ │ │ │ │ │ │ ├── LicensesItem.kt │ │ │ │ │ │ │ ├── LicensesScreen.kt │ │ │ │ │ │ │ ├── LicensesState.kt │ │ │ │ │ │ │ └── LicensesViewModel.kt │ │ │ │ │ ├── account │ │ │ │ │ │ ├── AccountDetailsItem.kt │ │ │ │ │ │ ├── MyAccountScreen.kt │ │ │ │ │ │ ├── MyAccountState.kt │ │ │ │ │ │ ├── MyAccountViewModel.kt │ │ │ │ │ │ ├── deleteAccount │ │ │ │ │ │ │ ├── DeleteAccountDialog.kt │ │ │ │ │ │ │ ├── DeleteAccountState.kt │ │ │ │ │ │ │ └── DeleteAccountViewModel.kt │ │ │ │ │ │ ├── displayname │ │ │ │ │ │ │ ├── ChangeDisplayNameScreen.kt │ │ │ │ │ │ │ ├── ChangeDisplayNameViewModel.kt │ │ │ │ │ │ │ └── DisplayNameState.kt │ │ │ │ │ │ ├── email │ │ │ │ │ │ │ ├── updateEmail │ │ │ │ │ │ │ │ ├── ChangeEmailScreen.kt │ │ │ │ │ │ │ │ ├── ChangeEmailState.kt │ │ │ │ │ │ │ │ └── ChangeEmailViewModel.kt │ │ │ │ │ │ │ └── verifyEmail │ │ │ │ │ │ │ │ ├── VerifyEmailNavArgs.kt │ │ │ │ │ │ │ │ ├── VerifyEmailScreen.kt │ │ │ │ │ │ │ │ ├── VerifyEmailState.kt │ │ │ │ │ │ │ │ └── VerifyEmailViewModel.kt │ │ │ │ │ │ └── handle │ │ │ │ │ │ │ ├── ChangeHandleScreen.kt │ │ │ │ │ │ │ ├── ChangeHandleState.kt │ │ │ │ │ │ │ └── ChangeHandleViewModel.kt │ │ │ │ │ ├── appearance │ │ │ │ │ │ ├── CustomizationScreen.kt │ │ │ │ │ │ ├── CustomizationState.kt │ │ │ │ │ │ └── CustomizationViewModel.kt │ │ │ │ │ ├── appsettings │ │ │ │ │ │ ├── AppSettingsScreen.kt │ │ │ │ │ │ └── networkSettings │ │ │ │ │ │ │ ├── NetworkSettingsScreen.kt │ │ │ │ │ │ │ ├── NetworkSettingsState.kt │ │ │ │ │ │ │ └── NetworkSettingsViewModel.kt │ │ │ │ │ ├── backup │ │ │ │ │ │ ├── BackUpAndRestoreStateHolder.kt │ │ │ │ │ │ ├── BackupAndRestoreScreen.kt │ │ │ │ │ │ ├── BackupAndRestoreState.kt │ │ │ │ │ │ ├── BackupAndRestoreViewModel.kt │ │ │ │ │ │ ├── MPBackupSettings.kt │ │ │ │ │ │ └── dialog │ │ │ │ │ │ │ ├── common │ │ │ │ │ │ │ └── FailureDialog.kt │ │ │ │ │ │ │ ├── create │ │ │ │ │ │ │ ├── CreateBackupDialogFlow.kt │ │ │ │ │ │ │ ├── CreateBackupDialogStateHolder.kt │ │ │ │ │ │ │ └── CreateBackupDialogs.kt │ │ │ │ │ │ │ └── restore │ │ │ │ │ │ │ ├── RestoreBackupDialogFlow.kt │ │ │ │ │ │ │ ├── RestoreBackupDialogStateHolder.kt │ │ │ │ │ │ │ └── RestoreBackupDialogs.kt │ │ │ │ │ └── privacy │ │ │ │ │ │ ├── PrivacySettingsScreen.kt │ │ │ │ │ │ ├── PrivacySettingsState.kt │ │ │ │ │ │ └── PrivacySettingsViewModel.kt │ │ │ │ ├── sync │ │ │ │ │ └── FeatureFlagNotificationViewModel.kt │ │ │ │ ├── vault │ │ │ │ │ └── VaultScreen.kt │ │ │ │ └── whatsnew │ │ │ │ │ ├── WhatsNewItem.kt │ │ │ │ │ ├── WhatsNewScreen.kt │ │ │ │ │ ├── WhatsNewState.kt │ │ │ │ │ └── WhatsNewViewModel.kt │ │ │ ├── initialsync │ │ │ │ ├── InitialSyncScreen.kt │ │ │ │ └── InitialSyncViewModel.kt │ │ │ ├── joinConversation │ │ │ │ ├── JoinConversationViaCodeViewModel.kt │ │ │ │ ├── JoinConversationViaDeepLinkDialog.kt │ │ │ │ ├── JoinConversationViaDeepLinkErrorDialog.kt │ │ │ │ ├── JoinConversationViaInviteLinkError.kt │ │ │ │ └── JoinViaDeepLinkDialogState.kt │ │ │ ├── legalhold │ │ │ │ ├── banner │ │ │ │ │ ├── LegalHoldBaseBanner.kt │ │ │ │ │ ├── LegalHoldPendingBanner.kt │ │ │ │ │ ├── LegalHoldStatusBar.kt │ │ │ │ │ ├── LegalHoldSubjectBanner.kt │ │ │ │ │ └── LegalHoldUIState.kt │ │ │ │ └── dialog │ │ │ │ │ ├── common │ │ │ │ │ └── LearnMoreAboutLegalHoldButton.kt │ │ │ │ │ ├── connectionfailed │ │ │ │ │ └── LegalHoldSubjectConnectionFailedDialog.kt │ │ │ │ │ ├── deactivated │ │ │ │ │ ├── LegalHoldDeactivatedDialog.kt │ │ │ │ │ ├── LegalHoldDeactivatedState.kt │ │ │ │ │ └── LegalHoldDeactivatedViewModel.kt │ │ │ │ │ ├── requested │ │ │ │ │ ├── LegalHoldRequestedDialog.kt │ │ │ │ │ ├── LegalHoldRequestedState.kt │ │ │ │ │ └── LegalHoldRequestedViewModel.kt │ │ │ │ │ └── subject │ │ │ │ │ ├── LegalHoldSubjectBaseDialog.kt │ │ │ │ │ ├── LegalHoldSubjectConnectionDialog.kt │ │ │ │ │ ├── LegalHoldSubjectConversationDialog.kt │ │ │ │ │ ├── LegalHoldSubjectMessageDialog.kt │ │ │ │ │ └── LegalHoldSubjectProfileDialog.kt │ │ │ ├── markdown │ │ │ │ ├── MarkdownBlockQuote.kt │ │ │ │ ├── MarkdownCodeBlock.kt │ │ │ │ ├── MarkdownComposer.kt │ │ │ │ ├── MarkdownConstants.kt │ │ │ │ ├── MarkdownHeading.kt │ │ │ │ ├── MarkdownHelper.kt │ │ │ │ ├── MarkdownInline.kt │ │ │ │ ├── MarkdownList.kt │ │ │ │ ├── MarkdownNode.kt │ │ │ │ ├── MarkdownParagraph.kt │ │ │ │ ├── MarkdownParser.kt │ │ │ │ ├── MarkdownTable.kt │ │ │ │ ├── MarkdownText.kt │ │ │ │ ├── MarkdownThematicBreak.kt │ │ │ │ └── NodeData.kt │ │ │ ├── newauthentication │ │ │ │ ├── code │ │ │ │ │ └── NewLoginVerificationCodeScreen.kt │ │ │ │ ├── login │ │ │ │ │ ├── NewLoginAction.kt │ │ │ │ │ ├── NewLoginContainer.kt │ │ │ │ │ ├── NewLoginDestination.kt │ │ │ │ │ ├── NewLoginFlowState.kt │ │ │ │ │ ├── NewLoginScreen.kt │ │ │ │ │ ├── NewLoginScreenState.kt │ │ │ │ │ ├── NewLoginViewModel.kt │ │ │ │ │ ├── ValidateEmailOrSSOCodeUseCase.kt │ │ │ │ │ └── password │ │ │ │ │ │ └── NewLoginPasswordScreen.kt │ │ │ │ └── welcome │ │ │ │ │ └── NewWelcomeScreen.kt │ │ │ ├── registration │ │ │ │ └── selector │ │ │ │ │ ├── CreateAccountSelectorNavArgs.kt │ │ │ │ │ ├── CreateAccountSelectorScreen.kt │ │ │ │ │ └── CreateAccountSelectorViewModel.kt │ │ │ ├── server │ │ │ │ └── ApiVersioningDialogs.kt │ │ │ ├── settings │ │ │ │ ├── about │ │ │ │ │ ├── AboutThisAppScreen.kt │ │ │ │ │ ├── AboutThisAppState.kt │ │ │ │ │ └── AboutThisAppViewModel.kt │ │ │ │ └── devices │ │ │ │ │ ├── DeviceDetailsNavArgs.kt │ │ │ │ │ ├── DeviceDetailsScreen.kt │ │ │ │ │ ├── DeviceDetailsScreenState.kt │ │ │ │ │ ├── DeviceDetailsViewModel.kt │ │ │ │ │ ├── EndToEndIdentityCertificateItem.kt │ │ │ │ │ ├── SelfDevicesScreen.kt │ │ │ │ │ ├── SelfDevicesViewModel.kt │ │ │ │ │ ├── button │ │ │ │ │ ├── GetE2eiCertificateButton.kt │ │ │ │ │ ├── ShowE2eiCertificateButton.kt │ │ │ │ │ └── UpdateE2eiCertificateButton.kt │ │ │ │ │ ├── e2ei │ │ │ │ │ ├── E2eiCertificateDetailsBottomSheet.kt │ │ │ │ │ ├── E2eiCertificateDetailsScreen.kt │ │ │ │ │ ├── E2eiCertificateDetailsScreenNavArgs.kt │ │ │ │ │ └── E2eiCertificateDetailsViewModel.kt │ │ │ │ │ └── model │ │ │ │ │ ├── DeviceDetailsState.kt │ │ │ │ │ └── SelfDevicesState.kt │ │ │ ├── sharing │ │ │ │ ├── ImportMediaAuthenticatedState.kt │ │ │ │ ├── ImportMediaAuthenticatedViewModel.kt │ │ │ │ ├── ImportMediaScreen.kt │ │ │ │ ├── ImportMediaScreenState.kt │ │ │ │ ├── ImportedMediaAsset.kt │ │ │ │ └── SendMessagesSnackbarMessages.kt │ │ │ └── userprofile │ │ │ │ ├── avatarpicker │ │ │ │ ├── AvatarPicker.kt │ │ │ │ ├── AvatarPickerState.kt │ │ │ │ └── AvatarPickerViewModel.kt │ │ │ │ ├── common │ │ │ │ ├── UserProfileInfo.kt │ │ │ │ └── UsernameMapper.kt │ │ │ │ ├── group │ │ │ │ └── RemoveConversationMemberState.kt │ │ │ │ ├── other │ │ │ │ ├── OtherUserConnectionStatusInfo.kt │ │ │ │ ├── OtherUserConnectionUnverifiedWarning.kt │ │ │ │ ├── OtherUserDevicesScreen.kt │ │ │ │ ├── OtherUserProfileDetails.kt │ │ │ │ ├── OtherUserProfileEventsHandlers.kt │ │ │ │ ├── OtherUserProfileGroup.kt │ │ │ │ ├── OtherUserProfileInfoMessageType.kt │ │ │ │ ├── OtherUserProfileNavArgs.kt │ │ │ │ ├── OtherUserProfileScreen.kt │ │ │ │ ├── OtherUserProfileScreenState.kt │ │ │ │ ├── OtherUserProfileScreenViewModel.kt │ │ │ │ ├── OtherUserProfileState.kt │ │ │ │ ├── RemoveConversationMemberDialog.kt │ │ │ │ └── bottomsheet │ │ │ │ │ ├── EditGroupRoleBottomSheet.kt │ │ │ │ │ ├── OtherUserBottomSheetState.kt │ │ │ │ │ └── OtherUserProfileBottomSheet.kt │ │ │ │ ├── qr │ │ │ │ ├── QRCodeIntents.kt │ │ │ │ ├── SelfQRCodeScreen.kt │ │ │ │ ├── SelfQRCodeState.kt │ │ │ │ ├── SelfQRCodeViewModel.kt │ │ │ │ └── SelfQrCodeNavArgs.kt │ │ │ │ ├── self │ │ │ │ ├── CreateTeamInfoCard.kt │ │ │ │ ├── OtherAccounts.kt │ │ │ │ ├── SelfUserProfileScreen.kt │ │ │ │ ├── SelfUserProfileState.kt │ │ │ │ ├── SelfUserProfileViewModel.kt │ │ │ │ ├── dialog │ │ │ │ │ ├── ChangeStatusDialogs.kt │ │ │ │ │ ├── LogoutOptionsDialog.kt │ │ │ │ │ ├── LogoutOptionsDialogState.kt │ │ │ │ │ └── StatusDialogData.kt │ │ │ │ └── model │ │ │ │ │ └── OtherAccount.kt │ │ │ │ ├── service │ │ │ │ ├── ServiceDetailsInfoMessageType.kt │ │ │ │ ├── ServiceDetailsMapper.kt │ │ │ │ ├── ServiceDetailsNavArgs.kt │ │ │ │ ├── ServiceDetailsNotFoundScreen.kt │ │ │ │ ├── ServiceDetailsScreen.kt │ │ │ │ ├── ServiceDetailsState.kt │ │ │ │ └── ServiceDetailsViewModel.kt │ │ │ │ └── teammigration │ │ │ │ ├── PersonalToTeamMigrationNavGraph.kt │ │ │ │ ├── TeamMigrationState.kt │ │ │ │ ├── TeamMigrationViewModel.kt │ │ │ │ ├── common │ │ │ │ ├── BottomLineButtons.kt │ │ │ │ ├── BulletList.kt │ │ │ │ ├── ConfirmMigrationLeaveDialog.kt │ │ │ │ └── TeamMigrationContainer.kt │ │ │ │ ├── step1 │ │ │ │ └── TeamMigrationTeamPlanStepScreen.kt │ │ │ │ ├── step2 │ │ │ │ └── TeamMigrationTeamNameStepScreen.kt │ │ │ │ ├── step3 │ │ │ │ └── TeamMigrationConfirmationStepScreen.kt │ │ │ │ └── step4 │ │ │ │ └── TeamMigrationDoneStepScreen.kt │ │ │ ├── util │ │ │ ├── AppNameUtil.kt │ │ │ ├── AvatarImageManager.kt │ │ │ ├── ClipboardCopier.kt │ │ │ ├── CommonIntentUtil.kt │ │ │ ├── Copyable.kt │ │ │ ├── CoreFailureUtil.kt │ │ │ ├── CurrentScreenManager.kt │ │ │ ├── CustomTabsHelper.kt │ │ │ ├── DeprecatedDateTimeUtil.kt │ │ │ ├── DeviceUtil.kt │ │ │ ├── DurationUtil.kt │ │ │ ├── EmailComposer.kt │ │ │ ├── ExifHandler.kt │ │ │ ├── ExpiringMap.kt │ │ │ ├── FileManager.kt │ │ │ ├── FileUtil.kt │ │ │ ├── ImageUtil.kt │ │ │ ├── LogFileWriter.kt │ │ │ ├── LogUtil.kt │ │ │ ├── MediaMetadata.kt │ │ │ ├── NetworkStatus.kt │ │ │ ├── NetworkUtil.kt │ │ │ ├── Patterns.kt │ │ │ ├── QueryMatchExtractor.kt │ │ │ ├── ScreenStateObserver.kt │ │ │ ├── StringIntentSharer.kt │ │ │ ├── StringUtil.kt │ │ │ ├── SwitchAccountObserver.kt │ │ │ ├── UriUtil.kt │ │ │ ├── UserAgentProvider.kt │ │ │ ├── WebsocketHelper.kt │ │ │ ├── WillNeverOccurError.kt │ │ │ ├── debug │ │ │ │ └── FeatureVisibilityFlags.kt │ │ │ ├── deeplink │ │ │ │ ├── DeepLinkProcessor.kt │ │ │ │ └── UserLinkQRMapper.kt │ │ │ ├── dispatchers │ │ │ │ └── DispatcherProvider.kt │ │ │ ├── extension │ │ │ │ ├── ClientId.kt │ │ │ │ ├── Context.kt │ │ │ │ ├── Flow.kt │ │ │ │ ├── LazyListScope.kt │ │ │ │ └── OpenAppInfo.kt │ │ │ ├── flow │ │ │ │ └── SearchQueryStateFlow.kt │ │ │ ├── lifecycle │ │ │ │ ├── LifecycleEventObservation.kt │ │ │ │ └── SyncLifecycleManager.kt │ │ │ ├── permission │ │ │ │ ├── IntentPermissionsRequestFlow.kt │ │ │ │ ├── IntentPermissionsRequestFlows.kt │ │ │ │ ├── PermissionsDeniedRequestDialog.kt │ │ │ │ ├── PermissionsRequestFlow.kt │ │ │ │ ├── PermissionsRequestFlows.kt │ │ │ │ └── RequestLauncher.kt │ │ │ ├── time │ │ │ │ ├── ISOFormatter.kt │ │ │ │ ├── LocalTimeFormater.kt │ │ │ │ └── TimeZoneProvider.kt │ │ │ └── ui │ │ │ │ ├── AssetImageFetcher.kt │ │ │ │ ├── DownloadFolderOpener.kt │ │ │ │ ├── DrawableResultWrapper.kt │ │ │ │ ├── PdfPreviewDecoder.kt │ │ │ │ ├── PreviewMultipleThemes.kt │ │ │ │ ├── ScrollUtil.kt │ │ │ │ ├── SnackBarMessageHandler.kt │ │ │ │ ├── StyledStringUtil.kt │ │ │ │ ├── UIText.kt │ │ │ │ └── WireSessionImageLoader.kt │ │ │ └── workmanager │ │ │ ├── WireForegroundNotificationDetailsProvider.kt │ │ │ ├── WireWorkerFactory.kt │ │ │ └── worker │ │ │ ├── DeleteConversationLocallyWorker.kt │ │ │ ├── NotificationFetchWorker.kt │ │ │ └── PersistentWebsocketCheckWorker.kt │ ├── play │ │ ├── contact-email.txt │ │ ├── contact-website.txt │ │ ├── listings │ │ │ └── en-US │ │ │ │ ├── full-description.txt │ │ │ │ ├── graphics │ │ │ │ ├── feature-graphic │ │ │ │ │ └── brandBanner.png │ │ │ │ ├── icon │ │ │ │ │ └── brandLogo.png │ │ │ │ └── phone-screenshots │ │ │ │ │ ├── screenshot 1.png │ │ │ │ │ ├── screenshot 2.png │ │ │ │ │ ├── screenshot 3.png │ │ │ │ │ ├── screenshot 4.png │ │ │ │ │ └── screenshot 5.png │ │ │ │ ├── short-description.txt │ │ │ │ ├── title.txt │ │ │ │ └── video-url.txt │ │ └── release-notes │ │ │ └── en-US │ │ │ └── default.txt │ └── res │ │ ├── drawable-night │ │ ├── ic_certificate_not_activated_mls.xml │ │ ├── ic_certificate_revoked_mls.xml │ │ ├── ic_certificate_valid_mls.xml │ │ ├── ic_certificate_valid_proteus.xml │ │ ├── ic_conversation_degraded_mls.xml │ │ ├── ic_file_not_available.xml │ │ ├── ic_shield_holo.xml │ │ └── ic_upgrade.xml │ │ ├── drawable-v31 │ │ └── ic_launcher_wire_logo.xml │ │ ├── drawable │ │ ├── bg_waves.xml │ │ ├── ic_add.xml │ │ ├── ic_add_contact.xml │ │ ├── ic_archive.xml │ │ ├── ic_arrow_left.xml │ │ ├── ic_arrow_left_back.xml │ │ ├── ic_arrow_right.xml │ │ ├── ic_attach_file.xml │ │ ├── ic_attention.xml │ │ ├── ic_audio.xml │ │ ├── ic_block.xml │ │ ├── ic_blocked_user_avatar.xml │ │ ├── ic_bug.xml │ │ ├── ic_call.xml │ │ ├── ic_call_accept.xml │ │ ├── ic_call_end.xml │ │ ├── ic_call_reject.xml │ │ ├── ic_camera.xml │ │ ├── ic_camera_flip.xml │ │ ├── ic_camera_flipped.xml │ │ ├── ic_camera_off.xml │ │ ├── ic_camera_on.xml │ │ ├── ic_camera_white_paused.xml │ │ ├── ic_certificate_not_activated_mls.xml │ │ ├── ic_certificate_revoked_mls.xml │ │ ├── ic_certificate_valid_mls.xml │ │ ├── ic_certificate_valid_proteus.xml │ │ ├── ic_channel.xml │ │ ├── ic_check.xml │ │ ├── ic_check_circle.xml │ │ ├── ic_check_tick.xml │ │ ├── ic_clear_search.xml │ │ ├── ic_close.xml │ │ ├── ic_collapse.xml │ │ ├── ic_contact.xml │ │ ├── ic_conversation.xml │ │ ├── ic_conversation_degraded_mls.xml │ │ ├── ic_copy.xml │ │ ├── ic_create_personal_account.xml │ │ ├── ic_create_personal_account_success.xml │ │ ├── ic_create_team.xml │ │ ├── ic_create_team_success.xml │ │ ├── ic_decline.xml │ │ ├── ic_default_service_avatar.xml │ │ ├── ic_default_user_avatar.xml │ │ ├── ic_delete.xml │ │ ├── ic_devices.xml │ │ ├── ic_download.xml │ │ ├── ic_drawing.xml │ │ ├── ic_dropdown_icon.xml │ │ ├── ic_edit.xml │ │ ├── ic_emoticon.xml │ │ ├── ic_empty_contacts_arrow.xml │ │ ├── ic_empty_conversation_arrow.xml │ │ ├── ic_entypo_share.xml │ │ ├── ic_erase.xml │ │ ├── ic_event_badge_connect_request.xml │ │ ├── ic_event_badge_missed_call.xml │ │ ├── ic_event_badge_unread_knock.xml │ │ ├── ic_event_badge_unread_mention.xml │ │ ├── ic_event_badge_unread_reply.xml │ │ ├── ic_favourite.xml │ │ ├── ic_file.xml │ │ ├── ic_file_not_available.xml │ │ ├── ic_files.xml │ │ ├── ic_filter.xml │ │ ├── ic_flip_camera.xml │ │ ├── ic_folder.xml │ │ ├── ic_folders_outline.xml │ │ ├── ic_gallery.xml │ │ ├── ic_gif.xml │ │ ├── ic_group.xml │ │ ├── ic_incall_reactions.xml │ │ ├── ic_info.xml │ │ ├── ic_info_unread.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_launcher_wire_logo.xml │ │ ├── ic_leave.xml │ │ ├── ic_legal_hold.xml │ │ ├── ic_location.xml │ │ ├── ic_lock.xml │ │ ├── ic_mention.xml │ │ ├── ic_message_delivered.xml │ │ ├── ic_message_read.xml │ │ ├── ic_message_sending.xml │ │ ├── ic_message_sent.xml │ │ ├── ic_mic_on.xml │ │ ├── ic_microphone_off.xml │ │ ├── ic_microphone_on.xml │ │ ├── ic_microphone_white.xml │ │ ├── ic_microphone_white_muted.xml │ │ ├── ic_migration.xml │ │ ├── ic_minus.xml │ │ ├── ic_missed_call.xml │ │ ├── ic_more.xml │ │ ├── ic_more_emojis.xml │ │ ├── ic_mute.xml │ │ ├── ic_no_answer_call.xml │ │ ├── ic_outgoing_call.xml │ │ ├── ic_participant_muted.xml │ │ ├── ic_pause.xml │ │ ├── ic_ping.xml │ │ ├── ic_play.xml │ │ ├── ic_play_circle_filled.xml │ │ ├── ic_react.xml │ │ ├── ic_remove.xml │ │ ├── ic_reply.xml │ │ ├── ic_rich_text.xml │ │ ├── ic_rich_text_bold.xml │ │ ├── ic_rich_text_header.xml │ │ ├── ic_rich_text_italic.xml │ │ ├── ic_search.xml │ │ ├── ic_send.xml │ │ ├── ic_settings.xml │ │ ├── ic_share.xml │ │ ├── ic_share_file.xml │ │ ├── ic_shield_holo.xml │ │ ├── ic_speaker_off.xml │ │ ├── ic_speaker_on.xml │ │ ├── ic_star.xml │ │ ├── ic_stop.xml │ │ ├── ic_support.xml │ │ ├── ic_timer.xml │ │ ├── ic_unread_mention.xml │ │ ├── ic_unread_reply.xml │ │ ├── ic_upgrade.xml │ │ ├── ic_validation_block.xml │ │ ├── ic_validation_check.xml │ │ ├── ic_vault.xml │ │ ├── ic_video.xml │ │ ├── ic_video_call.xml │ │ ├── ic_view.xml │ │ ├── ic_warning_circle.xml │ │ ├── ic_welcome_1.xml │ │ ├── ic_welcome_2.xml │ │ ├── ic_welcome_3.xml │ │ ├── ic_welcome_4.xml │ │ ├── ic_welcome_5.xml │ │ ├── ic_wire_logo.xml │ │ ├── notification_icon_small.xml │ │ └── websocket_notification_icon_small.xml │ │ ├── ic_launcher-web.png │ │ ├── layout │ │ ├── dialog_bottom_sheet_custom_behavior.xml │ │ ├── notification_playing_audio_message.xml │ │ └── view_emoji_picker.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── playstore-icon.png │ │ ├── raw │ │ ├── ping_from_me.m4a │ │ ├── ping_from_them.m4a │ │ ├── ready_to_talk.m4a │ │ ├── ringing_from_me.m4a │ │ └── ringing_from_them.m4a │ │ ├── values-ar │ │ └── strings.xml │ │ ├── values-cs │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-et │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-hr │ │ └── strings.xml │ │ ├── values-hu │ │ └── strings.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-night │ │ ├── colors.xml │ │ ├── flags.xml │ │ └── themes.xml │ │ ├── values-pl │ │ └── strings.xml │ │ ├── values-pt │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-si │ │ └── strings.xml │ │ ├── values-sv │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values-uk │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ ├── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── flags.xml │ │ ├── integers.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ └── provider_paths.xml │ ├── nonfree │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ ├── initializer │ │ └── FirebaseInitializer.kt │ │ ├── services │ │ └── WireFirebaseMessagingService.kt │ │ ├── ui │ │ └── home │ │ │ └── messagecomposer │ │ │ └── location │ │ │ └── LocationPickerHelperFlavor.kt │ │ └── util │ │ └── extension │ │ └── GoogleServices.kt │ ├── private │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ ├── ExternalLoggerManager.kt │ │ ├── navigation │ │ └── TrackingNavController.kt │ │ └── util │ │ └── DataDogLogger.kt │ ├── prod │ └── res │ │ ├── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ ├── public │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ ├── ExternalLoggerManager.kt │ │ ├── navigation │ │ └── TrackingNavController.kt │ │ └── util │ │ └── DataDogLogger.kt │ ├── screenshotTest │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ └── kotlin │ │ └── ui │ │ └── home │ │ └── conversations │ │ └── messages │ │ └── item │ │ ├── PreviewMessageTypes.kt │ │ └── PreviewSystemMessageItem.kt │ ├── staging │ └── res │ │ └── drawable │ │ ├── ic_launcher_background.xml │ │ └── ic_launcher_foreground.xml │ └── test │ ├── kotlin │ └── com │ │ └── wire │ │ └── android │ │ ├── GlobalObserversManagerTest.kt │ │ ├── SelfDeletionTimerTest.kt │ │ ├── TestUtil.kt │ │ ├── analytics │ │ └── ObserveCurrentSessionAnalyticsUseCaseTest.kt │ │ ├── common │ │ └── TestsCommon.kt │ │ ├── config │ │ ├── CoroutineTestExtension.kt │ │ ├── MockURI.kt │ │ ├── NavigationTestExtension.kt │ │ ├── ScopedArgsTestExtension.kt │ │ ├── SnapshotExtension.kt │ │ └── TestDispatcherProvider.kt │ │ ├── feature │ │ ├── AccountSwitchUseCaseTest.kt │ │ ├── DisableAppLockUseCaseTest.kt │ │ ├── GenerateRandomPasswordUseCaseTest.kt │ │ ├── ObserveAppLockConfigUseCaseTest.kt │ │ ├── ShouldStartPersistentWebSocketServiceUseCaseTest.kt │ │ └── StartPersistentWebsocketIfNecessaryUseCaseTest.kt │ │ ├── framework │ │ ├── FakeKaliumFileSystem.kt │ │ ├── TestClient.kt │ │ ├── TestConnection.kt │ │ ├── TestConversation.kt │ │ ├── TestConversationDetails.kt │ │ ├── TestConversationItem.kt │ │ ├── TestMessage.kt │ │ ├── TestTeam.kt │ │ ├── TestUser.kt │ │ └── fake │ │ │ └── FakeSyncExecutor.kt │ │ ├── mapper │ │ ├── MessageContentMapperTest.kt │ │ ├── MessageDateGroupingMapperTest.kt │ │ ├── MessageMapperTest.kt │ │ ├── MessagePreviewContentMapperTest.kt │ │ ├── OtherAccountMapperTest.kt │ │ ├── RegularMessageContentMapperTest.kt │ │ ├── SystemMessageContentMapperTest.kt │ │ ├── UICallParticipantMapperTest.kt │ │ ├── UIParticipantMapperTest.kt │ │ └── UserTypeMapperTest.kt │ │ ├── media │ │ └── audiomessage │ │ │ ├── AudioMessageViewModelTest.kt │ │ │ └── ConversationAudioMessagePlayerTest.kt │ │ ├── model │ │ └── ImageAssetTest.kt │ │ ├── navigation │ │ ├── LoginTypeSelectorTest.kt │ │ └── NavigationUtilsTest.kt │ │ ├── notification │ │ ├── CallNotificationManagerTest.kt │ │ └── WireNotificationManagerTest.kt │ │ ├── services │ │ └── ServicesManagerTest.kt │ │ ├── ui │ │ ├── CallActivityViewModelTest.kt │ │ ├── CallFeedbackViewModelTest.kt │ │ ├── WireActivityViewModelTest.kt │ │ ├── analytics │ │ │ ├── AnalyticsUsageViewModelTest.kt │ │ │ └── IsAnalyticsAvailableUseCaseTest.kt │ │ ├── authentication │ │ │ ├── LoginViewModelTest.kt │ │ │ ├── create │ │ │ │ ├── details │ │ │ │ │ └── CreateAccountDetailsViewModelTest.kt │ │ │ │ ├── email │ │ │ │ │ └── CreateAccountEmailViewModelTest.kt │ │ │ │ └── username │ │ │ │ │ └── CreateAccountUsernameViewModelTest.kt │ │ │ ├── devices │ │ │ │ ├── common │ │ │ │ │ └── ClearSessionViewModelTest.kt │ │ │ │ ├── register │ │ │ │ │ └── RegisterDeviceViewModelTest.kt │ │ │ │ └── remove │ │ │ │ │ └── RemoveDeviceViewModelTest.kt │ │ │ ├── login │ │ │ │ ├── email │ │ │ │ │ └── LoginEmailViewModelTest.kt │ │ │ │ └── sso │ │ │ │ │ └── LoginSSOViewModelTest.kt │ │ │ └── welcome │ │ │ │ └── WelcomeViewModelTest.kt │ │ ├── calling │ │ │ ├── OngoingCallViewModelTest.kt │ │ │ ├── SharedCallingViewModelTest.kt │ │ │ ├── incoming │ │ │ │ └── IncomingCallViewModelTest.kt │ │ │ └── outgoing │ │ │ │ └── OutgoingCallViewModelTest.kt │ │ ├── common │ │ │ ├── bottomsheet │ │ │ │ ├── conversation │ │ │ │ │ └── ConversationSheetContentTest.kt │ │ │ │ └── folder │ │ │ │ │ ├── ChangeConversationFavoriteVMTest.kt │ │ │ │ │ └── NewFolderViewModelTest.kt │ │ │ └── topappbar │ │ │ │ └── CommonTopAppBarViewModelTest.kt │ │ ├── connection │ │ │ └── ConnectionActionButtonViewModelTest.kt │ │ ├── home │ │ │ ├── AppSyncViewModelTest.kt │ │ │ ├── HomeViewModelTest.kt │ │ │ ├── appLock │ │ │ │ ├── LockCodeTimeManagerTest.kt │ │ │ │ ├── forgot │ │ │ │ │ └── ForgotLockScreenViewModelTest.kt │ │ │ │ └── set │ │ │ │ │ └── SetLockScreenViewModelTest.kt │ │ │ ├── conversations │ │ │ │ ├── AuthorHeaderHelperTest.kt │ │ │ │ ├── CompositeMessageViewModelTest.kt │ │ │ │ ├── banner │ │ │ │ │ ├── ConversationBannerViewModelTest.kt │ │ │ │ │ ├── SecurityClassificationViewModelTest.kt │ │ │ │ │ └── usecase │ │ │ │ │ │ └── ObserveConversationMembersByTypesUseCaseTest.kt │ │ │ │ ├── call │ │ │ │ │ └── ConversationListCallViewModelTest.kt │ │ │ │ ├── composer │ │ │ │ │ ├── MessageComposerViewModelArrangement.kt │ │ │ │ │ ├── MessageComposerViewModelTest.kt │ │ │ │ │ └── actions │ │ │ │ │ │ └── SelfDeletingMessageActionViewModelTest.kt │ │ │ │ ├── details │ │ │ │ │ ├── GroupDetailsViewModelTest.kt │ │ │ │ │ ├── editguestaccess │ │ │ │ │ │ ├── CreatePasswordGuestLinkViewModelTest.kt │ │ │ │ │ │ └── EditGuestAccessViewModelTest.kt │ │ │ │ │ ├── editselfdeletingmessages │ │ │ │ │ │ └── EditSelfDeletingMessagesViewModelTest.kt │ │ │ │ │ ├── participants │ │ │ │ │ │ ├── GroupParticipantsViewModelTest.kt │ │ │ │ │ │ └── usecase │ │ │ │ │ │ │ └── ObserveParticipantsForConversationUseCaseTest.kt │ │ │ │ │ └── updatechannelaccess │ │ │ │ │ │ └── UpdateChannelAccessViewModelTest.kt │ │ │ │ ├── info │ │ │ │ │ ├── ConversationInfoViewModelArrangement.kt │ │ │ │ │ └── ConversationInfoViewModelTest.kt │ │ │ │ ├── messages │ │ │ │ │ ├── ConversationMessagesViewModelArrangement.kt │ │ │ │ │ ├── ConversationMessagesViewModelTest.kt │ │ │ │ │ ├── SearchConversationMessagesViewModelTest.kt │ │ │ │ │ └── draft │ │ │ │ │ │ └── MessageDraftViewModelTest.kt │ │ │ │ ├── migration │ │ │ │ │ └── ConversationMigrationViewModelTest.kt │ │ │ │ ├── model │ │ │ │ │ └── MessageTypesTest.kt │ │ │ │ ├── search │ │ │ │ │ ├── SearchUserViewModelTest.kt │ │ │ │ │ └── adddembertoconversation │ │ │ │ │ │ └── AddMembersToConversationViewModelTest.kt │ │ │ │ ├── sendmessage │ │ │ │ │ ├── SendMessageViewModelArrangement.kt │ │ │ │ │ └── SendMessageViewModelTest.kt │ │ │ │ ├── typing │ │ │ │ │ └── TypingIndicatorViewModelTest.kt │ │ │ │ └── usecase │ │ │ │ │ ├── GetConversationMessagesFromSearchUseCaseTest.kt │ │ │ │ │ ├── GetConversationsFromSearchUseCaseTest.kt │ │ │ │ │ ├── GetUsersForMessageUseCaseTest.kt │ │ │ │ │ ├── HandleUriAssetUseCaseTest.kt │ │ │ │ │ ├── ObserveImageAssetMessagesFromConversationUseCaseTest.kt │ │ │ │ │ └── ObserveUsersTypingInConversationUseCaseTest.kt │ │ │ ├── conversationslist │ │ │ │ ├── ConversationCallListViewModelTest.kt │ │ │ │ └── ConversationListViewModelTest.kt │ │ │ ├── drawer │ │ │ │ └── HomeDrawerViewModelTest.kt │ │ │ ├── gallery │ │ │ │ └── MediaGalleryViewModelTest.kt │ │ │ ├── messagecomposer │ │ │ │ ├── MessageComposerStateHolderTest.kt │ │ │ │ ├── attachments │ │ │ │ │ └── IsFileSharingEnabledViewModelTest.kt │ │ │ │ ├── location │ │ │ │ │ ├── GeocoderHelperTest.kt │ │ │ │ │ ├── LocationPickerHelperFlavorTest.kt │ │ │ │ │ ├── LocationPickerHelperTest.kt │ │ │ │ │ └── LocationPickerViewModelTest.kt │ │ │ │ ├── recordaudio │ │ │ │ │ └── RecordAudioViewModelTest.kt │ │ │ │ └── state │ │ │ │ │ ├── MessageCompositionHolderTest.kt │ │ │ │ │ └── MessageCompositionInputStateHolderTest.kt │ │ │ ├── newconversation │ │ │ │ ├── NewConversationViewModelArrangement.kt │ │ │ │ └── NewConversationViewModelTest.kt │ │ │ ├── settings │ │ │ │ ├── account │ │ │ │ │ ├── MyAccountViewModelTest.kt │ │ │ │ │ ├── deleteAccount │ │ │ │ │ │ └── DeleteAccountViewModelTest.kt │ │ │ │ │ ├── displayname │ │ │ │ │ │ └── ChangeDisplayNameViewModelTest.kt │ │ │ │ │ ├── email │ │ │ │ │ │ ├── ChangeEmailViewModelTest.kt │ │ │ │ │ │ └── VerifyEmailViewModelTest.kt │ │ │ │ │ └── handle │ │ │ │ │ │ └── ChangeHandleViewModelTest.kt │ │ │ │ ├── appearance │ │ │ │ │ └── AppearanceViewModelTest.kt │ │ │ │ ├── home │ │ │ │ │ └── BackupAndRestoreViewModelTest.kt │ │ │ │ └── privacy │ │ │ │ │ └── PrivacySettingsViewModelTest.kt │ │ │ ├── sync │ │ │ │ └── FeatureFlagNotificationViewModelTest.kt │ │ │ └── whatsnew │ │ │ │ └── WhatsNewViewModelTest.kt │ │ ├── initialsync │ │ │ └── InitialSyncViewModelTest.kt │ │ ├── joinDeepLink │ │ │ └── JoinConversationViaCodeViewModelTest.kt │ │ ├── legalhold │ │ │ └── dialog │ │ │ │ ├── deactivated │ │ │ │ └── LegalHoldDeactivatedViewModelTest.kt │ │ │ │ └── requested │ │ │ │ └── LegalHoldRequestedViewModelTest.kt │ │ ├── markdown │ │ │ └── MarkdownHelperTest.kt │ │ ├── newauthentication │ │ │ └── login │ │ │ │ ├── NewLoginViewModelTest.kt │ │ │ │ └── ValidateEmailOrSSOCodeUseCaseTest.kt │ │ ├── settings │ │ │ ├── debug │ │ │ │ └── DebugDataOptionsViewModelTest.kt │ │ │ └── devices │ │ │ │ ├── DeviceDetailsViewModelTest.kt │ │ │ │ └── SelfDevicesViewModelTest.kt │ │ ├── sharing │ │ │ └── ImportMediaAuthenticatedViewModelTest.kt │ │ └── userprofile │ │ │ ├── common │ │ │ └── UsernameMapperTest.kt │ │ │ ├── image │ │ │ └── AvatarPickerViewModelTest.kt │ │ │ ├── other │ │ │ ├── OtherUserProfileScreenViewModelTest.kt │ │ │ └── OtherUserProfileViewModelArrangement.kt │ │ │ ├── qr │ │ │ └── SelfQRCodeViewModelTest.kt │ │ │ ├── self │ │ │ ├── SelfUserProfileViewModelArrangement.kt │ │ │ └── SelfUserProfileViewModelTest.kt │ │ │ ├── service │ │ │ ├── ServiceDetailsMapperTest.kt │ │ │ └── ServiceDetailsViewModelTest.kt │ │ │ └── teammigration │ │ │ └── TeamMigrationViewModelTest.kt │ │ └── util │ │ ├── CurrentScreenManagerTest.kt │ │ ├── DateAndTimeParsersTest.kt │ │ ├── DeepLinkProcessorTest.kt │ │ ├── ExpiringMapTest.kt │ │ ├── FileHelperTest.kt │ │ ├── ImageUtilTest.kt │ │ ├── QueryMatchExtractorTest.kt │ │ ├── ScreenStateObserverTest.kt │ │ ├── StringUtilTest.kt │ │ ├── StubLifecycle.kt │ │ ├── Stubs.kt │ │ ├── UriUtilTest.kt │ │ ├── extension │ │ └── ClientIdTest.kt │ │ ├── lifecycle │ │ └── SyncLifecycleManagerTest.kt │ │ └── ui │ │ └── AssetImageFetcherTest.kt │ └── resources │ └── rich-exif-sample.jpg ├── benchmark ├── build.gradle.kts ├── consumer-rules.pro ├── lint-baseline.xml ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── wire │ │ └── benchmark │ │ ├── BaselineGenerator.kt │ │ ├── StartupBenchmark.kt │ │ └── StartupBenchmarkWithLogin.kt │ └── main │ └── AndroidManifest.xml ├── build-logic ├── gradle.properties ├── plugins │ ├── build.gradle.kts │ └── src │ │ ├── main │ │ └── kotlin │ │ │ ├── AndroidApplicationConventionPlugin.kt │ │ │ ├── AndroidCoordinates.kt │ │ │ ├── AndroidLibraryConventionPlugin.kt │ │ │ ├── AndroidNavigationConventionPlugin.kt │ │ │ ├── AndroidTestLibraryConventionPlugin.kt │ │ │ ├── AppVersionPlugin.kt │ │ │ ├── Extention.kt │ │ │ ├── HiltConventionPlugin.kt │ │ │ ├── KoverConventionPlugin.kt │ │ │ ├── LibsCatalog.kt │ │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ └── gradle │ │ │ ├── ComposeConfiguration.kt │ │ │ ├── KotlinAndroidConfiguration.kt │ │ │ └── version │ │ │ └── Versionizer.kt │ │ └── test │ │ ├── kotlin │ │ └── VersionizerTest.kt │ │ └── resources │ │ └── version.txt └── settings.gradle.kts ├── build.gradle.kts ├── buildSrc ├── build.gradle.kts ├── settings.gradle.kts └── src │ ├── main │ └── kotlin │ │ ├── Dependencies.kt │ │ ├── IncludeGitBuildTask.kt │ │ ├── LibsCatalog.kt │ │ ├── MapTojson.kt │ │ ├── ProjectExtensions.kt │ │ ├── WriteKeyValuesToFileTask.kt │ │ ├── customization │ │ ├── BuildTimeConfiguration.kt │ │ ├── ConfigurationFileImporter.kt │ │ ├── Customization.kt │ │ ├── FeatureConfigs.kt │ │ ├── FeatureFlags.kt │ │ └── ResourcesOverrider.kt │ │ ├── flavor │ │ └── ProductFlavors.kt │ │ └── scripts │ │ ├── compilation.gradle.kts │ │ ├── infrastructure.gradle.kts │ │ ├── quality.gradle.kts │ │ ├── testing.gradle.kts │ │ └── variants.gradle.kts │ └── test │ └── kotlin │ └── customization │ ├── ConfigurationFileImporterTest.kt │ └── CustomizationTest.kt ├── codecov.yml ├── config └── detekt │ ├── baseline.xml │ └── detekt.yml ├── core ├── .gitkeep ├── analytics-disabled │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ └── feature │ │ │ └── analytics │ │ │ ├── AnonymousAnalyticsManagerImpl.kt │ │ │ └── AnonymousAnalyticsRecorderImpl.kt │ │ └── res │ │ └── values │ │ └── strings.xml ├── analytics-enabled │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── wire │ │ │ │ └── android │ │ │ │ └── feature │ │ │ │ └── analytics │ │ │ │ ├── AnonymousAnalyticsManagerImpl.kt │ │ │ │ ├── AnonymousAnalyticsRecorderImpl.kt │ │ │ │ └── StringExt.kt │ │ └── res │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ └── feature │ │ └── analytics │ │ ├── AnonymousAnalyticsManagerTest.kt │ │ └── StringExtTest.kt ├── analytics │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ └── feature │ │ │ └── analytics │ │ │ ├── AnonymousAnalyticsManager.kt │ │ │ ├── AnonymousAnalyticsManagerStub.kt │ │ │ ├── AnonymousAnalyticsRecorder.kt │ │ │ ├── AnonymousAnalyticsRecorderStub.kt │ │ │ ├── handler │ │ │ ├── AnalyticsMigrationHandler.kt │ │ │ └── AnalyticsPropagationHandler.kt │ │ │ └── model │ │ │ ├── AnalyticsEvent.kt │ │ │ ├── AnalyticsResult.kt │ │ │ └── AnalyticsSettings.kt │ │ └── res │ │ └── values │ │ └── strings.xml ├── navigation │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ └── navigation │ │ ├── NavigationCommand.kt │ │ ├── PreviewNavigator.kt │ │ ├── PreviewResultBackNavigator.kt │ │ ├── PreviewResultRecipient.kt │ │ ├── SavedStateViewModel.kt │ │ ├── WireNavigator.kt │ │ ├── annotation │ │ └── WireDestination.kt │ │ ├── style │ │ ├── BackgroundStyle.kt │ │ ├── DefaultNavGraphAnimations.kt │ │ ├── NavigationAnimationStyles.kt │ │ ├── TransitionAnimations.kt │ │ └── WireDestinationStyleAnimated.kt │ │ └── wrapper │ │ ├── TabletDialogWrapper.kt │ │ └── WaitUntilTransitionEndsWrapper.kt └── ui-common │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── wire │ │ └── android │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ ├── model │ │ │ └── Clickable.kt │ │ │ ├── ui │ │ │ ├── common │ │ │ │ ├── DefaultSearchQueryDebounce.kt │ │ │ │ ├── Extensions.kt │ │ │ │ ├── MoreOptionIcon.kt │ │ │ │ ├── TextWithLinkSuffix.kt │ │ │ │ ├── ThemeExt.kt │ │ │ │ ├── WireDialog.kt │ │ │ │ ├── WirePromotionDialog.kt │ │ │ │ ├── bottomsheet │ │ │ │ │ ├── MenuBottomSheetItem.kt │ │ │ │ │ ├── ModalSheetHeaderItem.kt │ │ │ │ │ ├── WireBottomSheetDefaults.kt │ │ │ │ │ ├── WireBottomSheetScaffold.kt │ │ │ │ │ ├── WireModalSheetLayout.kt │ │ │ │ │ └── WireModalSheetState.kt │ │ │ │ ├── button │ │ │ │ │ ├── FloatingActionButton.kt │ │ │ │ │ ├── WireButton.kt │ │ │ │ │ ├── WireButtonDefaults.kt │ │ │ │ │ ├── WireCheckBoxDefaults.kt │ │ │ │ │ ├── WireItemLabel.kt │ │ │ │ │ ├── WirePrimaryButton.kt │ │ │ │ │ ├── WirePrimaryIconButton.kt │ │ │ │ │ ├── WireSecondaryButton.kt │ │ │ │ │ ├── WireSecondaryIconButton.kt │ │ │ │ │ ├── WireSwitch.kt │ │ │ │ │ ├── WireTertiaryButton.kt │ │ │ │ │ └── WireTertiaryIconButton.kt │ │ │ │ ├── divider │ │ │ │ │ └── WireDivider.kt │ │ │ │ ├── error │ │ │ │ │ └── ErrorIcon.kt │ │ │ │ ├── image │ │ │ │ │ └── WireImage.kt │ │ │ │ ├── preview │ │ │ │ │ ├── EdgeToEdgePreview.kt │ │ │ │ │ └── MultipleThemePreviews.kt │ │ │ │ ├── progress │ │ │ │ │ ├── CenteredCircularProgressBarIndicator.kt │ │ │ │ │ ├── WireCircularProgressIndicator.kt │ │ │ │ │ └── WireLinearProgressIndicator.kt │ │ │ │ ├── remove │ │ │ │ │ └── RemoveIcon.kt │ │ │ │ ├── scaffold │ │ │ │ │ └── WireScaffold.kt │ │ │ │ ├── search │ │ │ │ │ └── SearchBarState.kt │ │ │ │ ├── snackbar │ │ │ │ │ ├── LocalSnackbarHostState.kt │ │ │ │ │ └── SwipeableSnackbar.kt │ │ │ │ ├── textfield │ │ │ │ │ ├── CodeTextField.kt │ │ │ │ │ ├── CodeTextFieldLayout.kt │ │ │ │ │ ├── InputTransformations.kt │ │ │ │ │ ├── WireLabel.kt │ │ │ │ │ ├── WirePasswordTextField.kt │ │ │ │ │ ├── WireTextField.kt │ │ │ │ │ ├── WireTextFieldAutoFill.kt │ │ │ │ │ ├── WireTextFieldDefaults.kt │ │ │ │ │ ├── WireTextFieldLayout.kt │ │ │ │ │ └── WireTextFieldState.kt │ │ │ │ └── topappbar │ │ │ │ │ ├── NavigationIconButton.kt │ │ │ │ │ ├── WireCenterAlignedTopAppBar.kt │ │ │ │ │ └── WireTopAppBarDefaults.kt │ │ │ └── theme │ │ │ │ ├── Accent.kt │ │ │ │ ├── AvatarColors.kt │ │ │ │ ├── StatusBarsHelper.kt │ │ │ │ ├── Theme.kt │ │ │ │ ├── ThemeOption.kt │ │ │ │ ├── ThemeUtils.kt │ │ │ │ ├── WireColorPalette.kt │ │ │ │ ├── WireColorScheme.kt │ │ │ │ ├── WireDimensions.kt │ │ │ │ ├── WireFixedColorScheme.kt │ │ │ │ ├── WireTypography.kt │ │ │ │ └── WireTypographyBase.kt │ │ │ └── util │ │ │ ├── AnyPrimitiveAsStringSerializer.kt │ │ │ ├── DateAndTimeParsers.kt │ │ │ ├── PreviewMultipleThemes.kt │ │ │ ├── StringUtils.kt │ │ │ └── SyncStateObserver.kt │ └── res │ │ ├── drawable │ │ ├── ic_attention.xml │ │ ├── ic_close.xml │ │ ├── ic_input_mandatory.xml │ │ ├── ic_more.xml │ │ ├── ic_plus.xml │ │ ├── ic_wave.xml │ │ └── mock_image.jpeg │ │ ├── values-ar │ │ └── strings.xml │ │ ├── values-cs │ │ └── strings.xml │ │ ├── values-de │ │ └── strings.xml │ │ ├── values-es │ │ └── strings.xml │ │ ├── values-et │ │ └── strings.xml │ │ ├── values-fr │ │ └── strings.xml │ │ ├── values-hr │ │ └── strings.xml │ │ ├── values-hu │ │ └── strings.xml │ │ ├── values-it │ │ └── strings.xml │ │ ├── values-ja │ │ └── strings.xml │ │ ├── values-pl │ │ └── strings.xml │ │ ├── values-pt │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-si │ │ └── strings.xml │ │ ├── values-sv │ │ └── strings.xml │ │ ├── values-tr │ │ └── strings.xml │ │ ├── values-uk │ │ └── strings.xml │ │ ├── values-zh │ │ └── strings.xml │ │ └── values │ │ ├── integers.xml │ │ └── strings.xml │ └── test │ └── kotlin │ └── com │ └── wire │ └── android │ └── ui │ └── common │ ├── ExampleUnitTest.kt │ └── bottomsheet │ └── WireModalSheetStateTest.kt ├── crowdin.yml ├── default.json ├── docker-agent ├── AndroidAgent ├── builder.sh └── configure-project.sh ├── docker-compose.yml ├── docs └── adr │ ├── 0000-template-lightway-adr.md │ ├── 0001-record-architecture-decisions.md │ ├── 0002-calling-activities-refactor.md │ ├── 0003-introducing-junit5-parametrizable-tests.md │ ├── 0004-deeplink-handling-refactor.md │ ├── 0005-conversation-list-composables-refactor.md │ ├── 0006-enterprise-login-supporting-both-flows.md │ └── 0007-introducing-uiautomator.md ├── features ├── cells │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── wire │ │ │ │ └── android │ │ │ │ └── feature │ │ │ │ └── cells │ │ │ │ ├── domain │ │ │ │ └── model │ │ │ │ │ └── AttachmentFileType.kt │ │ │ │ ├── ui │ │ │ │ ├── AllFilesScreen.kt │ │ │ │ ├── CellFilesNavArgs.kt │ │ │ │ ├── CellFilesScreen.kt │ │ │ │ ├── CellListItem.kt │ │ │ │ ├── CellScreenContent.kt │ │ │ │ ├── CellViewModel.kt │ │ │ │ ├── ConversationFilesScreen.kt │ │ │ │ ├── ConversationFilesWithSlideInTransitionScreen.kt │ │ │ │ ├── LoadingScreen.kt │ │ │ │ ├── PublicLinkScreenData.kt │ │ │ │ ├── createfolder │ │ │ │ │ ├── CreateFolderScreen.kt │ │ │ │ │ ├── CreateFolderScreenNavArgs.kt │ │ │ │ │ └── CreateFolderViewModel.kt │ │ │ │ ├── dialog │ │ │ │ │ ├── BottomSheetMenuItem.kt │ │ │ │ │ ├── CellsNewActionBottomSheet.kt │ │ │ │ │ ├── CellsOptionsBottomSheet.kt │ │ │ │ │ ├── DeleteConfirmationDialog.kt │ │ │ │ │ ├── NodeActionsBottomSheet.kt │ │ │ │ │ └── RestoreConfirmationDialog.kt │ │ │ │ ├── download │ │ │ │ │ └── DownloadFileBottomSheet.kt │ │ │ │ ├── model │ │ │ │ │ ├── CellNodeUi.kt │ │ │ │ │ └── NodeBottomSheetAction.kt │ │ │ │ ├── movetofolder │ │ │ │ │ ├── MoveToFolderNavArgs.kt │ │ │ │ │ ├── MoveToFolderScreen.kt │ │ │ │ │ ├── MoveToFolderScreenState.kt │ │ │ │ │ └── MoveToFolderViewModel.kt │ │ │ │ ├── publiclink │ │ │ │ │ ├── PublicLinkNavArgs.kt │ │ │ │ │ ├── PublicLinkScreen.kt │ │ │ │ │ └── PublicLinkViewModel.kt │ │ │ │ ├── recyclebin │ │ │ │ │ └── RecycleBinScreen.kt │ │ │ │ └── util │ │ │ │ │ └── PreviewMultipleThemes.kt │ │ │ │ └── util │ │ │ │ └── FileHelper.kt │ │ └── res │ │ │ ├── drawable-night │ │ │ ├── ic_file_type_archive.xml │ │ │ ├── ic_file_type_audio.xml │ │ │ ├── ic_file_type_code.xml │ │ │ ├── ic_file_type_doc.xml │ │ │ ├── ic_file_type_folder.xml │ │ │ ├── ic_file_type_image.xml │ │ │ ├── ic_file_type_other.xml │ │ │ ├── ic_file_type_pdf.xml │ │ │ ├── ic_file_type_presentation.xml │ │ │ ├── ic_file_type_spreadsheet.xml │ │ │ ├── ic_file_type_video.xml │ │ │ └── ic_folder_item.xml │ │ │ ├── drawable │ │ │ ├── ic_delete.xml │ │ │ ├── ic_file_link.xml │ │ │ ├── ic_file_type_archive.xml │ │ │ ├── ic_file_type_audio.xml │ │ │ ├── ic_file_type_code.xml │ │ │ ├── ic_file_type_doc.xml │ │ │ ├── ic_file_type_folder.xml │ │ │ ├── ic_file_type_image.xml │ │ │ ├── ic_file_type_other.xml │ │ │ ├── ic_file_type_pdf.xml │ │ │ ├── ic_file_type_presentation.xml │ │ │ ├── ic_file_type_spreadsheet.xml │ │ │ ├── ic_file_type_video.xml │ │ │ ├── ic_folder.xml │ │ │ ├── ic_folder_item.xml │ │ │ ├── ic_restore.xml │ │ │ ├── ic_save.xml │ │ │ └── ic_share.xml │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ └── strings.xml │ │ │ ├── values-cv │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-et │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-hr │ │ │ └── strings.xml │ │ │ ├── values-hu │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ └── strings.xml │ │ │ ├── values-pt │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values-si │ │ │ └── strings.xml │ │ │ ├── values-sv │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ └── strings.xml │ │ │ ├── values-uk │ │ │ └── strings.xml │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ ├── config │ │ └── NavigationTestExtension.kt │ │ └── feature │ │ └── cells │ │ └── ui │ │ ├── CellViewModelTest.kt │ │ ├── movetofolder │ │ └── MoveToFolderViewModelTest.kt │ │ └── publiclink │ │ └── PublicLinkViewModelTest.kt ├── sketch │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── wire │ │ │ │ └── android │ │ │ │ └── feature │ │ │ │ └── sketch │ │ │ │ ├── DrawingCanvasComponent.kt │ │ │ │ ├── DrawingCanvasScreen.kt │ │ │ │ ├── DrawingCanvasViewModel.kt │ │ │ │ ├── DrawingDiscardConfirmationDialog.kt │ │ │ │ ├── DrawingToolPicker.kt │ │ │ │ ├── model │ │ │ │ ├── DrawMode.kt │ │ │ │ ├── DrawingCanvasNavArgs.kt │ │ │ │ ├── DrawingMotionEvent.kt │ │ │ │ ├── DrawingPathProperties.kt │ │ │ │ └── DrawingState.kt │ │ │ │ ├── tools │ │ │ │ └── DrawingToolsConfig.kt │ │ │ │ └── util │ │ │ │ └── PreviewMultipleThemes.kt │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── ic_arrow_onboarding.png │ │ │ └── ic_arrow_onboarding_mirror.png │ │ │ ├── drawable-mdpi │ │ │ ├── ic_arrow_onboarding.png │ │ │ └── ic_arrow_onboarding_mirror.png │ │ │ ├── drawable-xhdpi │ │ │ ├── ic_arrow_onboarding.png │ │ │ └── ic_arrow_onboarding_mirror.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── ic_arrow_onboarding.png │ │ │ └── ic_arrow_onboarding_mirror.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── ic_arrow_onboarding.png │ │ │ └── ic_arrow_onboarding_mirror.png │ │ │ ├── drawable │ │ │ ├── ic_close.xml │ │ │ ├── ic_long_arrow.xml │ │ │ ├── ic_send.xml │ │ │ └── ic_undo.xml │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-et │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-hr │ │ │ └── strings.xml │ │ │ ├── values-hu │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ └── strings.xml │ │ │ ├── values-pl │ │ │ └── strings.xml │ │ │ ├── values-pt │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values-si │ │ │ └── strings.xml │ │ │ ├── values-sv │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ └── strings.xml │ │ │ ├── values-uk │ │ │ └── strings.xml │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ └── values │ │ │ └── strings.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── wire │ │ └── android │ │ └── feature │ │ └── sketch │ │ ├── DrawingCanvasViewModelTest.kt │ │ └── NavigationTestExtension.kt └── template │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── lint-baseline.xml │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── wire │ │ └── android │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── com │ │ │ └── wire │ │ │ └── android │ │ │ └── feature │ │ │ └── template │ │ │ └── AndroidExampleView.kt │ └── res │ │ └── values │ │ └── strings.xml │ └── test │ └── kotlin │ └── com │ └── wire │ └── android │ └── feature │ └── template │ └── ExampleUnitTest.kt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── include_builds.gradle.kts ├── ksp ├── build.gradle.kts └── src │ └── main │ ├── kotlin │ └── com │ │ └── wire │ │ └── android │ │ └── di │ │ └── ViewModelScopedPreview.kt │ └── resources │ └── META-INF │ └── services │ └── com.google.devtools.ksp.processing.SymbolProcessorProvider ├── scripts ├── new_feature_module.sh └── tail_logcat_to_file.sh ├── settings.gradle.kts └── tests ├── testsCore ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── lint-baseline.xml ├── proguard-rules.pro └── src │ ├── androidTest │ └── kotlin │ │ └── com │ │ └── wire │ │ └── android │ │ └── tests │ │ └── core │ │ ├── login │ │ ├── LoginTest.kt │ │ └── pages │ │ │ └── LoginPage.kt │ │ └── registration │ │ └── RegistrationTest.kt │ └── main │ └── AndroidManifest.xml └── testsSupport ├── .gitignore ├── build.gradle.kts ├── consumer-rules.pro ├── lint-baseline.xml ├── proguard-rules.pro └── src ├── androidTest └── kotlin │ └── com │ └── wire │ └── android │ └── tests │ └── support │ ├── UiAutomatorSetup.kt │ └── suite │ ├── RC.kt │ └── Regression.kt └── main └── AndroidManifest.xml /.gitattributes: -------------------------------------------------------------------------------- 1 | app/src/internalDebug/screenshotTests/** filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Wire 4 | # Copyright (C) 2024 Wire Swiss GmbH 5 | # 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see http://www.gnu.org/licenses/. 18 | # 19 | 20 | set -e 21 | ############ 22 | ## This Git Hook it's optional and can help you to check code style, before you do your commits. 23 | ## It will run "detektAll" 24 | ############ 25 | echo "> Running detekt checks" 26 | ./gradlew detektAll 27 | exit 0 28 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "gradle" 9 | open-pull-requests-limit: 1 10 | directory: "/" 11 | schedule: 12 | interval: "daily" 13 | reviewers: 14 | - "wireapp/android" 15 | commit-message: 16 | prefix: "chore(deps): [WPB-9777] " 17 | 18 | - package-ecosystem: "github-actions" 19 | open-pull-requests-limit: 1 20 | directory: "/" 21 | schedule: 22 | interval: "weekly" 23 | reviewers: 24 | - "wireapp/android" 25 | commit-message: 26 | prefix: "chore(deps): [WPB-9777] " 27 | -------------------------------------------------------------------------------- /.github/labels.yml: -------------------------------------------------------------------------------- 1 | XS: 2 | name: size/XS 3 | lines: 10 4 | color: 3CBF00 5 | S: 6 | name: size/S 7 | lines: 100 8 | color: 5D9801 9 | M: 10 | name: size/M 11 | lines: 300 12 | color: 7F7203 13 | L: 14 | name: size/L 15 | lines: 500 16 | color: A14C05 17 | XL: 18 | name: size/XL 19 | lines: 1000 20 | color: C32607 21 | comment: | 22 | # Ups 🫰🟨 23 | This PR is too big. Please try to break it up into smaller PRs. 24 | XXL: 25 | name: size/XXL 26 | lines: 100000 27 | color: E50009 28 | comment: | 29 | # Ups 🫰🟥 30 | This PR is too big. Please break it up into smaller PRs. 31 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | 2 | # Number of days of inactivity before an issue becomes stale 3 | daysUntilStale: 60 4 | # Number of days of inactivity before a stale issue is closed 5 | daysUntilClose: 7 6 | # Issues with these labels will never be considered stale 7 | exemptLabels: 8 | - pinned 9 | - security 10 | # Label to use when marking an issue as stale 11 | staleLabel: stale 12 | # Comment to post when marking an issue as stale. Set to `false` to disable 13 | markComment: > 14 | This issue has been automatically marked as stale because it has not had 15 | recent activity. It will be closed if no further activity occurs. Thank you 16 | for your contributions. 17 | # Comment to post when closing a stale issue. Set to `false` to disable 18 | closeComment: false 19 | -------------------------------------------------------------------------------- /.github/technolinator.yml: -------------------------------------------------------------------------------- 1 | # whether Technolinator does analysis at all; default: true 2 | enable: true 3 | # whether Technolinator shall comment vulnerability reports to pull-requests 4 | enablePullRequestReport: false 5 | analysis: 6 | # whether cdxgen should scan for projects recursively in 'location' or only 'location' itself; default: true 7 | recursive: true 8 | # include only 'required' scoped dependencies to created BOM 9 | requiredScopeOnly: false 10 | # create sbom with evidence (slows down the process) 11 | evidence: true 12 | # exclude the kalium directory because a) it throws errors that can't be resolved and b) it doesn't matter, as its 13 | # scanned as its own project anyway and it would be a duplicated effort 14 | # excludes: 15 | # - kalium 16 | jdk: 17 | # select JDK version used by cdxgen on JVM based projects 18 | version: 17 19 | -------------------------------------------------------------------------------- /.github/workflows/jira-lint-and-link.yml: -------------------------------------------------------------------------------- 1 | name: Link and Lint PR with Jira Ticket Number 2 | on: 3 | merge_group: 4 | pull_request: 5 | types: [opened, edited, synchronize] 6 | jobs: 7 | add-jira-description: 8 | runs-on: ubuntu-latest 9 | # Run only if the PR is not from a Fork / external contributor 10 | if: ${{ github.repository_owner == 'wireapp' }} 11 | steps: 12 | - name: Check for Dependabot 13 | if: github.actor == 'dependabot[bot]' || github.actor == 'AndroidBob' 14 | run: echo "PR created by Dependabot or AndroidBob, exiting successfully" && exit 0 15 | 16 | - uses: cakeinpanic/jira-description-action@v0.9.0 17 | name: jira-description-action 18 | with: 19 | github-token: ${{ secrets.GITHUB_TOKEN }} 20 | jira-token: ${{ secrets.JIRA_TOKEN }} 21 | jira-base-url: https://wearezeta.atlassian.net 22 | skip-branches: '^(production-release|main|master|release\/v\d+)$' #optional 23 | fail-when-jira-issue-not-found: true 24 | -------------------------------------------------------------------------------- /.github/workflows/pr-author-assigner.yml: -------------------------------------------------------------------------------- 1 | name: Auto assign author to PR 2 | on: 3 | pull_request_target: 4 | types: [ opened ] 5 | 6 | jobs: 7 | assign-author: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: samspills/assign-pr-to-author@v1.0.2 11 | with: 12 | repo-token: '${{ secrets.GITHUB_TOKEN }}' 13 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "kalium"] 2 | path = kalium 3 | url = https://github.com/wireapp/kalium.git 4 | branch = develop 5 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/copyright/wire_swiss_gmbh.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/.idea/icon.png -------------------------------------------------------------------------------- /.java-version: -------------------------------------------------------------------------------- 1 | 17.0 2 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | # Room db schemas 3 | /schemas -------------------------------------------------------------------------------- /app/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/androidTest/kotlin/com/wire/android/HiltTestApp.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android 19 | 20 | import dagger.hilt.android.testing.CustomTestApplication 21 | 22 | @CustomTestApplication(BaseApp::class) 23 | interface HiltTestApp 24 | -------------------------------------------------------------------------------- /app/src/androidTest/kotlin/com/wire/android/provider/LocalAppContext.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.provider 19 | 20 | import android.content.Context 21 | import androidx.compose.runtime.staticCompositionLocalOf 22 | 23 | val LocalAppContext = staticCompositionLocalOf { 24 | error("CompositionLocal LocalAppContext not provided") 25 | } 26 | -------------------------------------------------------------------------------- /app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/internal/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/internal/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/assets/.gitkeep -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/model/ItemActionType.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.model 19 | 20 | enum class ItemActionType { 21 | CHECK, CLICK; 22 | 23 | val checkable: Boolean get() = this == CHECK 24 | val clickable: Boolean get() = this == CLICK 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/navigation/FolderNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.navigation 19 | 20 | import android.os.Parcelable 21 | import kotlinx.parcelize.Parcelize 22 | 23 | @Parcelize 24 | data class FolderNavArgs( 25 | val folderId: String, 26 | val folderName: String 27 | ) : Parcelable 28 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/WireTestActivity.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui 19 | 20 | import androidx.activity.ComponentActivity 21 | import dagger.hilt.android.AndroidEntryPoint 22 | 23 | @AndroidEntryPoint 24 | class WireTestActivity : ComponentActivity() 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/analytics/AnalyticsConfiguration.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.analytics 19 | 20 | sealed interface AnalyticsConfiguration { 21 | data object Enabled : AnalyticsConfiguration 22 | data object Disabled : AnalyticsConfiguration 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/analytics/AnalyticsUsageState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.analytics 19 | 20 | data class AnalyticsUsageState( 21 | val shouldDisplayDialog: Boolean = false 22 | ) 23 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/authentication/create/summary/CreateAccountSummaryNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.authentication.create.summary 19 | 20 | import com.wire.android.ui.authentication.create.common.CreateAccountFlowType 21 | 22 | data class CreateAccountSummaryNavArgs( 23 | val type: CreateAccountFlowType 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/authentication/create/summary/CreateAccountSummaryViewState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.ui.authentication.create.summary 20 | 21 | import com.wire.android.ui.authentication.create.common.CreateAccountFlowType 22 | 23 | data class CreateAccountSummaryViewState(val type: CreateAccountFlowType) 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/authentication/devices/common/ClearSessionState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.ui.authentication.devices.common 20 | 21 | data class ClearSessionState( 22 | val showCancelLoginDialog: Boolean = false 23 | ) 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/authentication/welcome/WelcomeNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.authentication.welcome 19 | 20 | import com.wire.kalium.logic.configuration.server.ServerConfig 21 | 22 | class WelcomeNavArgs( 23 | val customServerConfig: ServerConfig.Links? = null, 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/calling/ongoing/OngoingCallState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.calling.ongoing 19 | 20 | data class OngoingCallState( 21 | val flowState: FlowState = FlowState.Default 22 | ) { 23 | sealed interface FlowState { 24 | object Default : FlowState 25 | object CallClosed : FlowState 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/HomeNavGraph.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.navigation 19 | 20 | import com.ramcosta.composedestinations.annotation.NavGraph 21 | 22 | @NavGraph 23 | annotation class HomeNavGraph( 24 | val start: Boolean = false 25 | ) 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/details/metadata/EditConversationNameNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.details.metadata 19 | 20 | import com.wire.kalium.logic.data.id.ConversationId 21 | 22 | data class EditConversationNameNavArgs( 23 | val conversationId: ConversationId 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/details/participants/GroupConversationAllParticipantsNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.details.participants 19 | 20 | import com.wire.kalium.logic.data.id.ConversationId 21 | 22 | data class GroupConversationAllParticipantsNavArgs( 23 | val conversationId: ConversationId 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/media/ConversationMediaNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.media 19 | 20 | import com.wire.kalium.logic.data.id.ConversationId 21 | 22 | data class ConversationMediaNavArgs( 23 | val conversationId: ConversationId 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/search/AddMembersSearchNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.search 19 | 20 | import com.wire.kalium.logic.data.id.ConversationId 21 | 22 | data class AddMembersSearchNavArgs( 23 | val conversationId: ConversationId, 24 | val isServicesAllowed: Boolean 25 | ) 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/search/QueryExtension.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.search 19 | 20 | fun String.removeQueryPrefix(): String = removePrefix("@") 21 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/search/messages/SearchConversationMessagesNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.search.messages 19 | 20 | import com.wire.kalium.logic.data.id.ConversationId 21 | 22 | data class SearchConversationMessagesNavArgs( 23 | val conversationId: ConversationId 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/conversations/typing/UsersTypingViewState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.conversations.typing 19 | 20 | import com.wire.android.ui.home.conversations.details.participants.model.UIParticipant 21 | 22 | data class UsersTypingViewState( 23 | val usersTyping: List = emptyList() 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/drawer/HomeDrawerState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.ui.home.drawer 20 | 21 | data class HomeDrawerState( 22 | val unreadArchiveConversationsCount: Int, 23 | val showFilesOption: Boolean, 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/SettingsState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings 19 | 20 | data class SettingsState( 21 | val isAppLockEditable: Boolean = false, 22 | val isAppLockEnabled: Boolean = false, 23 | val userName: String = "", 24 | ) 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/about/licenses/LicensesState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings.about.licenses 19 | 20 | import androidx.compose.runtime.Stable 21 | import com.mikepenz.aboutlibraries.entity.Library 22 | 23 | @Stable 24 | data class LicensesState( 25 | val libraryList: List = emptyList() 26 | ) 27 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/account/deleteAccount/DeleteAccountState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings.account.deleteAccount 19 | 20 | data class DeleteAccountState( 21 | val startDeleteAccountFlow: Boolean = false 22 | ) 23 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/account/email/verifyEmail/VerifyEmailNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings.account.email.verifyEmail 19 | 20 | // TODO: should be encoded? URLEncoder.encode(it, UTF_8.name()) 21 | data class VerifyEmailNavArgs( 22 | val newEmail: String 23 | ) 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/account/email/verifyEmail/VerifyEmailState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings.account.email.verifyEmail 19 | 20 | data class VerifyEmailState( 21 | val isResendEmailEnabled: Boolean = true 22 | ) 23 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/appearance/CustomizationState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings.appearance 19 | 20 | import com.wire.android.ui.theme.ThemeOption 21 | 22 | data class CustomizationState( 23 | val selectedThemeOption: ThemeOption = ThemeOption.SYSTEM, 24 | val pressEnterToSentState: Boolean = false, 25 | ) 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/appsettings/networkSettings/NetworkSettingsState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.ui.home.settings.appsettings.networkSettings 20 | 21 | data class NetworkSettingsState( 22 | val isPersistentWebSocketConnectionEnabled: Boolean = false 23 | ) 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/home/settings/backup/MPBackupSettings.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.home.settings.backup 19 | 20 | sealed interface MPBackupSettings { 21 | data object Disabled : MPBackupSettings 22 | data object Enabled : MPBackupSettings 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/settings/about/AboutThisAppState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.settings.about 19 | 20 | data class AboutThisAppState( 21 | val commitish: String = "null", 22 | val appName: String 23 | ) 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/settings/devices/DeviceDetailsNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.settings.devices 19 | 20 | import com.wire.kalium.logic.data.conversation.ClientId 21 | import com.wire.kalium.logic.data.user.UserId 22 | 23 | data class DeviceDetailsNavArgs( 24 | val userId: UserId, 25 | val clientId: ClientId 26 | ) 27 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/sharing/ImportedMediaAsset.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.sharing 19 | 20 | import com.wire.android.ui.home.conversations.model.AssetBundle 21 | 22 | data class ImportedMediaAsset( 23 | val assetBundle: AssetBundle, 24 | val assetSizeExceeded: Int? 25 | ) 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/userprofile/qr/SelfQrCodeNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.userprofile.qr 19 | 20 | import android.os.Parcelable 21 | import kotlinx.parcelize.Parcelize 22 | 23 | @Parcelize 24 | data class SelfQrCodeNavArgs( 25 | val handle: String = "", 26 | val isTeamMember: Boolean 27 | ) : Parcelable 28 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/ui/userprofile/self/dialog/LogoutOptionsDialogState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.ui.userprofile.self.dialog 20 | 21 | data class LogoutOptionsDialogState( 22 | val shouldWipeData: Boolean = false 23 | ) 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/util/ClipboardCopier.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.util 20 | 21 | import androidx.compose.ui.platform.ClipboardManager 22 | import androidx.compose.ui.text.AnnotatedString 23 | 24 | fun ClipboardManager.copyLinkToClipboard(text: String) { 25 | setText(AnnotatedString(text)) 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/util/StringUtil.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android.util 2 | 3 | import com.wire.android.ui.markdown.isNotBlank 4 | import com.wire.android.ui.markdown.toMarkdownDocument 5 | 6 | fun CharSequence.isNotMarkdownBlank(): Boolean = this.isNotBlank() && this.toString().toMarkdownDocument().isNotBlank() 7 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/util/WillNeverOccurError.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.util 20 | 21 | class WillNeverOccurError(message: String, throwable: Throwable?) : Error(message, throwable) { 22 | constructor(message: String) : this(message, null) 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/util/permission/RequestLauncher.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.util.permission 19 | 20 | fun interface RequestLauncher { 21 | fun launch() 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/kotlin/com/wire/android/util/time/TimeZoneProvider.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.util.time 19 | 20 | import kotlinx.datetime.TimeZone 21 | import javax.inject.Inject 22 | 23 | class TimeZoneProvider @Inject constructor() { 24 | fun currentSystemDefault(): TimeZone = TimeZone.currentSystemDefault() 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/play/contact-email.txt: -------------------------------------------------------------------------------- 1 | support@wire.com 2 | -------------------------------------------------------------------------------- /app/src/main/play/contact-website.txt: -------------------------------------------------------------------------------- 1 | https://www.wire.com 2 | -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/feature-graphic/brandBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/feature-graphic/brandBanner.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/icon/brandLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/icon/brandLogo.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 1.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 2.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 3.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 4.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/play/listings/en-US/graphics/phone-screenshots/screenshot 5.png -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/short-description.txt: -------------------------------------------------------------------------------- 1 | Wire offers highly secure communication – anywhere and anytime. 2 | -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Wire • Secure Messenger 2 | -------------------------------------------------------------------------------- /app/src/main/play/listings/en-US/video-url.txt: -------------------------------------------------------------------------------- 1 | https://youtu.be/0PqqjYddLqE 2 | -------------------------------------------------------------------------------- /app/src/main/play/release-notes/en-US/default.txt: -------------------------------------------------------------------------------- 1 | New 2 | - Swipe left to add reactions to a message 3 | Improvement 4 | - Using QR codes with federation 5 | Fixes 6 | - Resolved a security issue when sharing files, pictures, or audio and video messages 7 | - Fixed an issue when people couldn't open conversations from a notification 8 | - Resolved a syncing issue on slow internet 9 | - Fix issue where app stuck processing commits 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_attention.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_files.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_filter.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_folders_outline.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info_unread.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/ic_launcher-web.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/playstore-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/playstore-icon.png -------------------------------------------------------------------------------- /app/src/main/res/raw/ping_from_me.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/raw/ping_from_me.m4a -------------------------------------------------------------------------------- /app/src/main/res/raw/ping_from_them.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/raw/ping_from_them.m4a -------------------------------------------------------------------------------- /app/src/main/res/raw/ready_to_talk.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/raw/ready_to_talk.m4a -------------------------------------------------------------------------------- /app/src/main/res/raw/ringing_from_me.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/raw/ringing_from_me.m4a -------------------------------------------------------------------------------- /app/src/main/res/raw/ringing_from_them.m4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/main/res/raw/ringing_from_them.m4a -------------------------------------------------------------------------------- /app/src/main/res/values-night/flags.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | false 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/values/flags.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | true 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 3000 22 | 1000 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/private/kotlin/com/wire/android/navigation/TrackingNavController.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android.navigation 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.navigation.NavDestination 5 | import androidx.navigation.compose.rememberNavController 6 | import com.datadog.android.compose.ExperimentalTrackingApi 7 | import com.datadog.android.compose.NavigationViewTrackingEffect 8 | import com.datadog.android.rum.tracking.AcceptAllNavDestinations 9 | 10 | @OptIn(ExperimentalTrackingApi::class) 11 | @Composable 12 | fun rememberTrackingAnimatedNavController(nameFromRoute: (String) -> String?) = 13 | rememberNavController().apply { 14 | NavigationViewTrackingEffect( 15 | navController = this, 16 | trackArguments = true, 17 | destinationPredicate = object : AcceptAllNavDestinations() { 18 | override fun getViewName(component: NavDestination): String? = 19 | component.route?.let { nameFromRoute(it) } 20 | } 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/prod/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/prod/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/public/kotlin/com/wire/android/ExternalLoggerManager.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android 2 | 3 | import android.content.Context 4 | 5 | object ExternalLoggerManager { 6 | 7 | fun initDatadogLogger(context: Context) = Unit 8 | } 9 | -------------------------------------------------------------------------------- /app/src/public/kotlin/com/wire/android/navigation/TrackingNavController.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android.navigation 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.navigation.compose.rememberNavController 5 | 6 | @Composable 7 | fun rememberTrackingAnimatedNavController(nameFromRoute: (String) -> String?) = 8 | rememberNavController() 9 | -------------------------------------------------------------------------------- /app/src/public/kotlin/com/wire/android/util/DataDogLogger.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | * 18 | * 19 | */ 20 | 21 | package com.wire.android.util 22 | 23 | import co.touchlab.kermit.LogWriter 24 | import co.touchlab.kermit.Severity 25 | 26 | object DataDogLogger : LogWriter() { 27 | 28 | override fun log(severity: Severity, message: String, tag: String, throwable: Throwable?) = Unit 29 | } 30 | -------------------------------------------------------------------------------- /app/src/test/kotlin/com/wire/android/framework/TestTeam.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | package com.wire.android.framework 20 | 21 | import com.wire.kalium.logic.data.id.TeamId 22 | import com.wire.kalium.logic.data.team.Team 23 | 24 | object TestTeam { 25 | val TEAM: Team = Team(id = "Some-team", name = "Some-name", icon = "icon") 26 | val TEAM_ID = TeamId("Some-team") 27 | } 28 | -------------------------------------------------------------------------------- /app/src/test/resources/rich-exif-sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/app/src/test/resources/rich-exif-sample.jpg -------------------------------------------------------------------------------- /benchmark/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/benchmark/consumer-rules.pro -------------------------------------------------------------------------------- /benchmark/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /benchmark/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /benchmark/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /build-logic/gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Wire 3 | # Copyright (C) 2024 Wire Swiss GmbH 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see http://www.gnu.org/licenses/. 17 | # 18 | org.gradle.parallel=true 19 | org.gradle.caching=true 20 | org.gradle.configureondemand=true 21 | -------------------------------------------------------------------------------- /build-logic/plugins/src/test/resources/version.txt: -------------------------------------------------------------------------------- 1 | VersionCode: 100018802 2 | VersionName: 4.8.2-18802 3 | Revision: e53642019 4 | Buildtime: 2024-08-21 19:32:06 5 | Application-name: com.wire 6 | -------------------------------------------------------------------------------- /buildSrc/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | 19 | dependencyResolutionManagement { 20 | versionCatalogs { 21 | create("klibs") { 22 | from(files("../kalium/gradle/libs.versions.toml")) 23 | } 24 | create("libs") { 25 | from(files("../gradle/libs.versions.toml")) 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /core/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/.gitkeep -------------------------------------------------------------------------------- /core/analytics-disabled/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/analytics-disabled/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.library.get().pluginId) 3 | id(libs.plugins.wire.kover.get().pluginId) 4 | alias(libs.plugins.compose.compiler) 5 | } 6 | 7 | dependencies { 8 | implementation(libs.androidx.core) 9 | implementation(libs.androidx.appcompat) 10 | 11 | api(project(":core:analytics")) 12 | 13 | val composeBom = platform(libs.compose.bom) 14 | implementation(composeBom) 15 | implementation(libs.compose.ui) 16 | 17 | testImplementation(libs.junit4) 18 | } 19 | -------------------------------------------------------------------------------- /core/analytics-disabled/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/analytics-disabled/consumer-rules.pro -------------------------------------------------------------------------------- /core/analytics-disabled/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /core/analytics-disabled/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core/analytics-disabled/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /core/analytics-disabled/src/main/kotlin/com/wire/android/feature/analytics/AnonymousAnalyticsManagerImpl.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.analytics 19 | 20 | object AnonymousAnalyticsManagerImpl : AnonymousAnalyticsManagerStub() 21 | -------------------------------------------------------------------------------- /core/analytics-disabled/src/main/kotlin/com/wire/android/feature/analytics/AnonymousAnalyticsRecorderImpl.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.analytics 19 | 20 | @Suppress("UnusedPrivateProperty") 21 | class AnonymousAnalyticsRecorderImpl( 22 | private val appVersion: String, 23 | private val appName: String 24 | ) : AnonymousAnalyticsRecorderStub() 25 | -------------------------------------------------------------------------------- /core/analytics-disabled/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Disabled Analytics Module 20 | 21 | -------------------------------------------------------------------------------- /core/analytics-enabled/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/analytics-enabled/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.library.get().pluginId) 3 | id(libs.plugins.wire.kover.get().pluginId) 4 | alias(libs.plugins.compose.compiler) 5 | } 6 | 7 | dependencies { 8 | implementation(libs.androidx.core) 9 | implementation(libs.androidx.appcompat) 10 | 11 | implementation("com.wire.kalium:kalium-data") 12 | api(project(":core:analytics")) 13 | 14 | val composeBom = platform(libs.compose.bom) 15 | implementation(composeBom) 16 | implementation(libs.compose.ui) 17 | 18 | implementation(libs.countly.sdk) 19 | 20 | testImplementation(libs.junit4) 21 | testImplementation(libs.mockk.core) 22 | testImplementation(libs.coroutines.test) 23 | } 24 | -------------------------------------------------------------------------------- /core/analytics-enabled/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/analytics-enabled/consumer-rules.pro -------------------------------------------------------------------------------- /core/analytics-enabled/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /core/analytics-enabled/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core/analytics-enabled/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /core/analytics-enabled/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Enabled Analytics Module 20 | 21 | -------------------------------------------------------------------------------- /core/analytics/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/analytics/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.library.get().pluginId) 3 | id(libs.plugins.wire.kover.get().pluginId) 4 | alias(libs.plugins.compose.compiler) 5 | } 6 | 7 | dependencies { 8 | implementation(libs.androidx.core) 9 | implementation(libs.androidx.appcompat) 10 | 11 | implementation("com.wire.kalium:kalium-data") 12 | 13 | val composeBom = platform(libs.compose.bom) 14 | implementation(composeBom) 15 | implementation(libs.compose.ui) 16 | 17 | testImplementation(libs.junit4) 18 | } 19 | -------------------------------------------------------------------------------- /core/analytics/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/analytics/consumer-rules.pro -------------------------------------------------------------------------------- /core/analytics/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /core/analytics/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core/analytics/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /core/analytics/src/main/kotlin/com/wire/android/feature/analytics/handler/AnalyticsMigrationHandler.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.analytics.handler 19 | 20 | fun interface AnalyticsMigrationHandler { 21 | suspend fun migrate(manager: T) 22 | } 23 | -------------------------------------------------------------------------------- /core/analytics/src/main/kotlin/com/wire/android/feature/analytics/handler/AnalyticsPropagationHandler.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.analytics.handler 19 | 20 | fun interface AnalyticsPropagationHandler { 21 | suspend fun propagate(manager: T, identifier: String) 22 | } 23 | -------------------------------------------------------------------------------- /core/analytics/src/main/kotlin/com/wire/android/feature/analytics/model/AnalyticsSettings.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.analytics.model 19 | 20 | data class AnalyticsSettings( 21 | val countlyAppKey: String, 22 | val countlyServerUrl: String, 23 | val enableDebugLogging: Boolean 24 | ) 25 | -------------------------------------------------------------------------------- /core/analytics/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | Core Analytics Module 20 | 21 | -------------------------------------------------------------------------------- /core/navigation/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/navigation/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.library.get().pluginId) 3 | id(libs.plugins.wire.kover.get().pluginId) 4 | alias(libs.plugins.compose.compiler) 5 | } 6 | 7 | android { 8 | namespace = "com.wire.android.navigation" 9 | buildTypes { 10 | create("benchmark") { 11 | } 12 | } 13 | } 14 | 15 | dependencies { 16 | implementation(libs.visibilityModifiers) 17 | implementation(libs.compose.navigation) 18 | implementation(libs.compose.destinations.core) 19 | implementation(project(":core:ui-common")) 20 | implementation(libs.compose.material3) 21 | } 22 | -------------------------------------------------------------------------------- /core/navigation/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/navigation/consumer-rules.pro -------------------------------------------------------------------------------- /core/navigation/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /core/navigation/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core/navigation/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | -------------------------------------------------------------------------------- /core/navigation/src/main/kotlin/com/wire/android/navigation/style/BackgroundStyle.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.navigation.style 19 | 20 | interface BackgroundStyle { 21 | fun backgroundType(): BackgroundType = BackgroundType.Default 22 | } 23 | 24 | enum class BackgroundType { 25 | Default, Auth 26 | } 27 | -------------------------------------------------------------------------------- /core/ui-common/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core/ui-common/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/ui-common/consumer-rules.pro -------------------------------------------------------------------------------- /core/ui-common/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /core/ui-common/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core/ui-common/src/androidTest/java/com/wire/android/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.wire.android.test", appContext.packageName) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /core/ui-common/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /core/ui-common/src/main/kotlin/com/wire/android/ui/common/DefaultSearchQueryDebounce.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | * 18 | * 19 | */ 20 | 21 | package com.wire.android.ui.common 22 | 23 | const val DEFAULT_SEARCH_QUERY_DEBOUNCE = 500L 24 | -------------------------------------------------------------------------------- /core/ui-common/src/main/kotlin/com/wire/android/ui/theme/ThemeOption.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.ui.theme 19 | 20 | data class ThemeData(val option: ThemeOption, val selectedOption: ThemeOption) 21 | 22 | enum class ThemeOption { 23 | SYSTEM, 24 | LIGHT, 25 | DARK 26 | } 27 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/drawable/ic_attention.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/drawable/ic_plus.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/drawable/mock_image.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/core/ui-common/src/main/res/drawable/mock_image.jpeg -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-hr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-si/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /core/ui-common/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 6 21 | 22 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | "project_id_env": "CROWDIN_PROJECT_ID" 2 | "api_token_env": "CROWDIN_API_TOKEN" 3 | "base_path": "." 4 | "base_url": "https://api.crowdin.com" 5 | "preserve_hierarchy": true 6 | 7 | files: [ 8 | { 9 | "source": "/app/src/main/res/values/strings.xml", 10 | "translation": "/app/src/main/res/values-%two_letters_code%/%original_file_name%", 11 | }, 12 | { 13 | "source": "/features/cells/src/main/res/values/strings.xml", 14 | "translation": "/features/cells/src/main/res/values-%two_letters_code%/%original_file_name%", 15 | }, 16 | { 17 | "source": "/features/sketch/src/main/res/values/strings.xml", 18 | "translation": "/features/sketch/src/main/res/values-%two_letters_code%/%original_file_name%", 19 | }, 20 | { 21 | "source": "/core/ui-common/src/main/res/values/strings.xml", 22 | "translation": "/core/ui-common/src/main/res/values-%two_letters_code%/%original_file_name%", 23 | } 24 | ] 25 | -------------------------------------------------------------------------------- /docker-agent/configure-project.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=local.properties 4 | if test -f "$FILE"; then 5 | echo "${FILE} exists already, replacing existing sdk.dir and ndk.dir" 6 | sed -i -r "s!sdk.dir=(.*)!sdk.dir=${ANDROID_HOME}!g" $FILE 7 | sed -i -r "s!android.ndkPath=(.*)!android.ndkPath=${ANDROID_NDK_HOME}!g" $FILE 8 | else 9 | echo "sdk.dir="$ANDROID_HOME >> local.properties 10 | echo "android.ndkPath="$ANDROID_NDK_HOME >> local.properties 11 | fi 12 | echo "$ANDROID_HOME has been added as sdk.dir to ${FILE}" 13 | echo "$ANDROID_NDK_HOME has been added as ndk.dir to ${FILE}" 14 | 15 | -------------------------------------------------------------------------------- /docs/adr/0000-template-lightway-adr.md: -------------------------------------------------------------------------------- 1 | # Decision record template by Michael Nygard 2 | 3 | This is the template in [Documenting architecture decisions - Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). 4 | You can use [adr-tools](https://github.com/npryce/adr-tools) for managing the ADR files. 5 | 6 | In each ADR file, write these sections: 7 | 8 | # Title 9 | 10 | ## Status 11 | 12 | What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.? 13 | 14 | ## Context 15 | 16 | What is the issue that we're seeing that is motivating this decision or change? 17 | 18 | ## Decision 19 | 20 | What is the change that we're proposing and/or doing? 21 | 22 | ## Consequences 23 | 24 | What becomes easier or more difficult to do because of this change? 25 | -------------------------------------------------------------------------------- /docs/adr/0001-record-architecture-decisions.md: -------------------------------------------------------------------------------- 1 | # 1. Record architecture decisions 2 | 3 | Date: 2024-08-05 4 | 5 | ## Status 6 | 7 | Accepted 8 | 9 | ## Context 10 | 11 | We agreed in the past to use ADR's, but we lost track of it as we were using confluence to keep 12 | them. This concern was raised in the last collective, and we need to decide how to proceed. 13 | 14 | ## Decision 15 | 16 | We will use Architecture Decision Records in the code and as part of the review process. 17 | We will use the [Lightway ADR template](0000-template-lightway-adr.md) to keep the ADRs simple and 18 | easy to maintain. 19 | 20 | ## Consequences 21 | 22 | - We need to add a new folder to the repository, `docs/adr`, to keep the architecture decision 23 | records. 24 | - Whenever a new refactoring or library is introduced, a new ADR should be created. 25 | - You can always request in the Pull request review process to add a new ADR, if you think it's 26 | necessary. 27 | -------------------------------------------------------------------------------- /docs/adr/0003-introducing-junit5-parametrizable-tests.md: -------------------------------------------------------------------------------- 1 | # 3. Use parameterizable tests in JUnit5 2 | 3 | Date: 2024-08-05 4 | 5 | ## Status 6 | 7 | Accepted 8 | 9 | ## Context 10 | 11 | Sometimes we need to write multiple tests for the same scenario, changing only the input values. 12 | 13 | ## Decision 14 | 15 | We will use parameterizable tests in JUnit5 to avoid writing multiple tests for the same scenario. 16 | 17 | ## Consequences 18 | 19 | - Introduction of `@ParameterizedTest` annotation in the test class 20 | and [library](https://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests). 21 | - The test method will receive the parameters as arguments. 22 | -------------------------------------------------------------------------------- /features/cells/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /features/cells/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/cells/consumer-rules.pro -------------------------------------------------------------------------------- /features/cells/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /features/cells/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /features/cells/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /features/cells/src/main/java/com/wire/android/feature/cells/ui/CellFilesNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.cells.ui 19 | 20 | data class CellFilesNavArgs( 21 | val conversationId: String? = null, 22 | val screenTitle: String? = null, 23 | val isRecycleBin: Boolean? = false 24 | ) 25 | -------------------------------------------------------------------------------- /features/cells/src/main/java/com/wire/android/feature/cells/ui/PublicLinkScreenData.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.cells.ui 19 | 20 | data class PublicLinkScreenData( 21 | val assetId: String, 22 | val fileName: String, 23 | val linkId: String? = null, 24 | val isFolder: Boolean 25 | ) 26 | -------------------------------------------------------------------------------- /features/cells/src/main/java/com/wire/android/feature/cells/ui/createfolder/CreateFolderScreenNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.cells.ui.createfolder 19 | 20 | data class CreateFolderScreenNavArgs( 21 | val uuid: String? 22 | ) 23 | -------------------------------------------------------------------------------- /features/cells/src/main/java/com/wire/android/feature/cells/ui/movetofolder/MoveToFolderNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.cells.ui.movetofolder 19 | 20 | data class MoveToFolderNavArgs( 21 | val currentPath: String, 22 | val nodeToMovePath: String, 23 | val uuid: String, 24 | val screenName: String? = null 25 | ) 26 | -------------------------------------------------------------------------------- /features/cells/src/main/java/com/wire/android/feature/cells/ui/movetofolder/MoveToFolderScreenState.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.cells.ui.movetofolder 19 | 20 | enum class MoveToFolderScreenState { 21 | LOADING_CONTENT, 22 | LOADING_IN_FULL_SCREEN, 23 | SUCCESS, 24 | ERROR 25 | } 26 | -------------------------------------------------------------------------------- /features/cells/src/main/java/com/wire/android/feature/cells/ui/publiclink/PublicLinkNavArgs.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.cells.ui.publiclink 19 | 20 | data class PublicLinkNavArgs( 21 | val assetId: String, 22 | val fileName: String, 23 | val publicLinkId: String?, 24 | val isFolder: Boolean, 25 | ) 26 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable-night/ic_file_type_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable-night/ic_file_type_other.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable-night/ic_file_type_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 21 | 22 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_file_link.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_file_type_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_file_type_other.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 17 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_file_type_video.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 21 | 22 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_restore.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_save.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /features/cells/src/main/res/drawable/ic_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-hr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/cells/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /features/sketch/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/consumer-rules.pro -------------------------------------------------------------------------------- /features/sketch/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /features/sketch/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /features/sketch/src/androidTest/java/com/wire/android/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.wire.android.test", appContext.packageName) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /features/sketch/src/main/java/com/wire/android/feature/sketch/model/DrawMode.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.sketch.model 19 | 20 | internal enum class DrawMode { 21 | Pen, Eraser, None 22 | } 23 | -------------------------------------------------------------------------------- /features/sketch/src/main/java/com/wire/android/feature/sketch/model/DrawingMotionEvent.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2024 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.feature.sketch.model 19 | 20 | internal enum class DrawingMotionEvent { 21 | Idle, Down, Move, Up 22 | } 23 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-hdpi/ic_arrow_onboarding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-hdpi/ic_arrow_onboarding.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-hdpi/ic_arrow_onboarding_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-hdpi/ic_arrow_onboarding_mirror.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-mdpi/ic_arrow_onboarding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-mdpi/ic_arrow_onboarding.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-mdpi/ic_arrow_onboarding_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-mdpi/ic_arrow_onboarding_mirror.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-xhdpi/ic_arrow_onboarding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-xhdpi/ic_arrow_onboarding.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-xhdpi/ic_arrow_onboarding_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-xhdpi/ic_arrow_onboarding_mirror.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-xxhdpi/ic_arrow_onboarding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-xxhdpi/ic_arrow_onboarding.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-xxhdpi/ic_arrow_onboarding_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-xxhdpi/ic_arrow_onboarding_mirror.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-xxxhdpi/ic_arrow_onboarding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-xxxhdpi/ic_arrow_onboarding.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable-xxxhdpi/ic_arrow_onboarding_mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/sketch/src/main/res/drawable-xxxhdpi/ic_arrow_onboarding_mirror.png -------------------------------------------------------------------------------- /features/sketch/src/main/res/drawable/ic_long_arrow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-hr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | Scarta 21 | 22 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/sketch/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 19 | 20 | -------------------------------------------------------------------------------- /features/template/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /features/template/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.library.get().pluginId) 3 | id(libs.plugins.wire.kover.get().pluginId) 4 | alias(libs.plugins.compose.compiler) 5 | } 6 | 7 | dependencies { 8 | implementation(libs.androidx.core) 9 | implementation(libs.androidx.appcompat) 10 | implementation(libs.material) 11 | 12 | val composeBom = platform(libs.compose.bom) 13 | implementation(composeBom) 14 | implementation(libs.compose.ui) 15 | implementation(libs.compose.foundation) 16 | implementation(libs.compose.material.android) 17 | 18 | testImplementation(libs.junit4) 19 | androidTestImplementation(libs.androidx.test.extJunit) 20 | androidTestImplementation(libs.androidx.espresso.core) 21 | } 22 | -------------------------------------------------------------------------------- /features/template/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/features/template/consumer-rules.pro -------------------------------------------------------------------------------- /features/template/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /features/template/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /features/template/src/androidTest/java/com/wire/android/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.wire.android 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.wire.android.test", appContext.packageName) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /features/template/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /features/template/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | template module 20 | 21 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Wire 3 | # Copyright (C) 2024 Wire Swiss GmbH 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see http://www.gnu.org/licenses/. 17 | # 18 | 19 | org.gradle.jvmargs=-Xmx8g 20 | android.useAndroidX=true 21 | kotlin.code.style=official 22 | 23 | # Support KMP Gradle Composite Builds - See https://youtrack.jetbrains.com/issue/KT-52172/ 24 | kotlin.mpp.import.enableKgpDependencyResolution=true 25 | org.gradle.logging.level=QUIET 26 | android.experimental.enableScreenshotTest=true 27 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Wire 3 | # Copyright (C) 2024 Wire Swiss GmbH 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see http://www.gnu.org/licenses/. 17 | # 18 | 19 | distributionBase=GRADLE_USER_HOME 20 | distributionPath=wrapper/dists 21 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip 22 | zipStoreBase=GRADLE_USER_HOME 23 | zipStorePath=wrapper/dists 24 | -------------------------------------------------------------------------------- /ksp/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2023 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | * 18 | * 19 | */ 20 | 21 | plugins { 22 | kotlin("jvm") 23 | alias(libs.plugins.ksp) 24 | } 25 | dependencies { 26 | implementation(libs.ksp.symbol.processing.api) 27 | } 28 | -------------------------------------------------------------------------------- /ksp/src/main/resources/META-INF/services/com.google.devtools.ksp.processing.SymbolProcessorProvider: -------------------------------------------------------------------------------- 1 | com.wire.android.di.ViewModelScopedPreviewProcessorProvider 2 | -------------------------------------------------------------------------------- /tests/testsCore/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /tests/testsCore/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.test.library.get().pluginId) 3 | alias(libs.plugins.compose.compiler) 4 | } 5 | 6 | android { 7 | sourceSets { 8 | getByName("androidTest") { 9 | kotlin.srcDirs("src/androidTest/kotlin") 10 | kotlin.srcDirs(project(":tests:testsSupport").file("src/androidTest/kotlin")) 11 | } 12 | } 13 | } 14 | 15 | dependencies { 16 | val composeBom = platform(libs.compose.bom) 17 | implementation(composeBom) 18 | implementation(libs.compose.ui) 19 | 20 | androidTestImplementation(libs.androidx.test.runner) 21 | androidTestImplementation(libs.androidx.test.extJunit) 22 | androidTestImplementation(libs.androidx.espresso.core) 23 | androidTestImplementation(libs.androidx.test.uiAutomator) 24 | androidTestImplementation(project(":tests:testsSupport")) 25 | } 26 | -------------------------------------------------------------------------------- /tests/testsCore/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/tests/testsCore/consumer-rules.pro -------------------------------------------------------------------------------- /tests/testsCore/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/testsCore/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /tests/testsCore/src/androidTest/kotlin/com/wire/android/tests/core/registration/RegistrationTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.tests.core.registration 19 | 20 | // TODO: Add tests for registration 21 | -------------------------------------------------------------------------------- /tests/testsSupport/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /tests/testsSupport/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id(libs.plugins.wire.android.test.library.get().pluginId) 3 | alias(libs.plugins.compose.compiler) 4 | } 5 | 6 | dependencies { 7 | androidTestImplementation(libs.androidx.test.runner) 8 | androidTestImplementation(libs.androidx.test.extJunit) 9 | androidTestImplementation(libs.androidx.espresso.core) 10 | androidTestImplementation(libs.androidx.test.uiAutomator) 11 | } 12 | -------------------------------------------------------------------------------- /tests/testsSupport/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wireapp/wire-android/72472cc9a1f8c9d96dc24ee0bddbdc385a36c0d2/tests/testsSupport/consumer-rules.pro -------------------------------------------------------------------------------- /tests/testsSupport/lint-baseline.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/testsSupport/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /tests/testsSupport/src/androidTest/kotlin/com/wire/android/tests/support/suite/RC.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.tests.support.suite 19 | 20 | /** 21 | * Suite for running scoped tests for release candidate. 22 | */ 23 | @Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS) 24 | @Retention(AnnotationRetention.RUNTIME) 25 | annotation class RC 26 | -------------------------------------------------------------------------------- /tests/testsSupport/src/androidTest/kotlin/com/wire/android/tests/support/suite/Regression.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Wire 3 | * Copyright (C) 2025 Wire Swiss GmbH 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 3 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see http://www.gnu.org/licenses/. 17 | */ 18 | package com.wire.android.tests.support.suite 19 | 20 | /** 21 | * Suite for running scoped tests for regression tests. 22 | */ 23 | @Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS) 24 | @Retention(AnnotationRetention.RUNTIME) 25 | annotation class Regression 26 | -------------------------------------------------------------------------------- /tests/testsSupport/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | --------------------------------------------------------------------------------