├── .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 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/copyright/wire_swiss_gmbh.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
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 |
--------------------------------------------------------------------------------