How wireapp/wire-android works
Wire for Android is a secure messaging client with account, conversation, calling, meeting, search, and file features. A typical user opens the app, authenticates, enters a session, then uses conversations or other account features; background services support pending-message sync, notifications, and offline downloads. The tree identifies these product areas, while the sampled excerpts substantiate only selected runtime links, so other feature connections are left out rather than inferred. Several paths below represent substantial subsystems by their exact enclosing directory.
Main entry points: WireNotificationManager.kt Notification manager · accountScoped Account services · WireActivity.kt App activity · authentication Authentication flows
Components 23
App and navigation
- App activity
app/src/main/kotlin/com/wire/android/ui/WireActivity.kt - Navigation runtime
app/src/main/kotlin/com/wire/android/navigation/runtime - Route controller
core/navigation-kmp/src/commonMain/kotlin/com/wire/navigation/WireNavigationController.kt
Accounts and conversations
- Authentication flows
app/src/main/kotlin/com/wire/android/ui/authentication - Account services
app/src/main/kotlin/com/wire/android/di/accountScoped - Search features
core/search/src/main/kotlin/com/wire/android/search
Communication
- Conversation UI
app/src/main/kotlin/com/wire/android/ui/home/conversations - Call coordination
app/src/main/kotlin/com/wire/android/ui/home/conversations/call/JoinOrStartCallManager.kt - Notification manager
app/src/main/kotlin/com/wire/android/notification/WireNotificationManager.kt - Message notifications
app/src/main/kotlin/com/wire/android/notification/MessageNotificationManager.kt - Meeting notifications
app/src/main/kotlin/com/wire/android/notification/MeetingNotificationManager.kt - Call notifications
app/src/main/kotlin/com/wire/android/notification/CallNotificationManager.kt - Meeting screens
features/meetings/src/main/java/com/wire/android/feature/meetings/ui/AllMeetingsScreen.kt
Files and offline access
- Cells feature
features/cells/src/main/java/com/wire/android/feature/cells - File download controller
features/cells/src/main/java/com/wire/android/feature/cells/ui/OfflineFileDownloadController.kt - Offline download manager
features/cells/src/main/java/com/wire/android/feature/cells/ui/offline/OfflineDownloadManager.kt
Background and platform
- Offline download service
app/src/main/kotlin/com/wire/android/services/OfflineDownloadService.kt - Pending-message service
app/src/main/kotlin/com/wire/android/services/PendingMessagesForegroundService.kt - Sync lifecycle
app/src/main/kotlin/com/wire/android/util/lifecycle/SyncLifecycleManager.kt - Notification channels
core/notification/src/main/kotlin/com/wire/android/notification/NotificationChannelsManager.kt - Encrypted app data
app/src/main/kotlin/com/wire/android/datastore/EncryptionManager.kt
Other components
- Wire user
- Wire backend
Connections 22
- Wire user → App activity: uses
README.md - App activity → Navigation runtime: hosts
- Navigation runtime → Route controller: delegates navigation
- App activity → Authentication flows: presents flows
- Authentication flows → Account services: establishes session
- Account services → Conversation UI: provides account features
- Conversation UI → Call coordination: coordinates calls
app/src/main/kotlin/com/wire/android/ui/home/conversations/call/JoinOrStartCallManager.kt - Call coordination → Account services: observes call state
app/src/main/kotlin/com/wire/android/ui/home/conversations/call/JoinOrStartCallManager.kt - Notification manager → Message notifications: uses
app/src/main/kotlin/com/wire/android/notification/WireNotificationManager.kt - Notification manager → Meeting notifications: uses
app/src/main/kotlin/com/wire/android/notification/WireNotificationManager.kt - Notification manager → Call notifications: uses
app/src/main/kotlin/com/wire/android/notification/WireNotificationManager.kt - Notification manager → Sync lifecycle: coordinates sync
app/src/main/kotlin/com/wire/android/notification/WireNotificationManager.kt - Notification manager → Notification channels: uses channels
- Account services → Search features: supports search
- Account services → Meeting screens: supports meetings
- Cells feature → File download controller: starts downloads
features/cells/src/main/java/com/wire/android/feature/cells/ui/offline/OfflineDownloadManager.kt - Offline download manager → File download controller: uses
features/cells/src/main/java/com/wire/android/feature/cells/ui/offline/OfflineDownloadManager.kt - Offline download service → Offline download manager: runs downloads
app/src/main/kotlin/com/wire/android/services/OfflineDownloadService.kt - Pending-message service → Sync lifecycle: syncs sessions
app/src/main/kotlin/com/wire/android/services/PendingMessagesForegroundService.kt - Authentication flows → Wire backend: authenticates
- Conversation UI → Wire backend: exchanges messages
- File download controller → Encrypted app data: persists offline metadata