How mateusrodcosta/savelocally works
Save Locally is an Android app for saving shared files or text to local storage. The main flow receives shared content, gathers details or selection when needed, lets the user choose a destination, and dispatches saving through a foreground service; the native file picker and a configured default location support destination selection. The app also provides settings, about, and media-preview UI. Source excerpts establish several app-to-feature and service-to-use-case links; internals of unsampled use cases and some feature wiring are not verified.
Main entry points: MainActivity.kt Main activity · SettingsScreen.kt Settings · DetailsActivity.kt Share handling · screens File details and selection
Components 25
App entry and sharing
- Main activity
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/MainActivity.kt - Share handling
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/DetailsActivity.kt - Navigation routes
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/navigation/Routes.kt - Save service
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/service/SaveLocallyService.kt
User-facing features
- Main screen
features/main/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/main/MainScreen.kt - File details and selection
features/details/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/details/screens - Details view model
features/details/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/details/screens/DetailsViewModel.kt - Settings
features/settings/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/settings/SettingsScreen.kt - Settings view model
features/settings/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/settings/SettingsViewModel.kt - About screen
features/about/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/about/AboutScreen.kt
Save domain
- Save and target use cases
domain/src/main/kotlin/com/mateusrodcosta/apps/share2storage/domain/usecases - File metadata use case
domain/src/main/kotlin/com/mateusrodcosta/apps/share2storage/domain/usecases/GetFileMetadataUseCase.kt - File metadata model
domain/src/main/kotlin/com/mateusrodcosta/apps/share2storage/domain/entity/UriData.kt - File repository contract
domain/src/main/kotlin/com/mateusrodcosta/apps/share2storage/domain/repository/FileRepository.kt - Preferences contract
domain/src/main/kotlin/com/mateusrodcosta/apps/share2storage/domain/repository/PreferencesRepository.kt - Insufficient storage error
domain/src/main/kotlin/com/mateusrodcosta/apps/share2storage/domain/exception/InsufficientStorageException.kt
Persistence and files
- File operations
data/src/main/kotlin/com/mateusrodcosta/apps/share2storage/data/repository/FileRepositoryImpl.kt - Saved preferences
data/src/main/kotlin/com/mateusrodcosta/apps/share2storage/data/repository/PreferencesRepositoryImpl.kt
Shared UI
- Thumbnail fetching
core/ui/src/main/kotlin/com/mateusrodcosta/apps/share2storage/core/ui/media/ThumbnailFetcher.kt - Thumbnail model
core/ui/src/main/kotlin/com/mateusrodcosta/apps/share2storage/core/ui/model/MediaThumbnail.kt - Section header
core/ui/src/main/kotlin/com/mateusrodcosta/apps/share2storage/core/ui/components/SectionHeader.kt - Theme colors
core/ui/src/main/kotlin/com/mateusrodcosta/apps/share2storage/core/ui/theme/Color.kt - App constants
core/src/main/kotlin/com/mateusrodcosta/apps/share2storage/core/AppConstants.kt
Other components
- Android user
- Android share menu
Connections 26
- Android user → Android share menu: shares content
- Android share menu → Share handling: opens share flow
- Android user → Main activity: opens app
- Main activity → Main screen: shows
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/MainActivity.kt - Main activity → Settings: routes to
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/MainActivity.kt - Main activity → About screen: routes to
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/MainActivity.kt - Main activity → Navigation routes: uses routes
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/MainActivity.kt - Share handling → File details and selection: shows
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/DetailsActivity.kt - Share handling → Details view model: reads state
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/DetailsActivity.kt - Share handling → Save service: dispatches saves
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/DetailsActivity.kt - Save service → Save and target use cases: invokes saving
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/service/SaveLocallyService.kt - File details and selection → Details view model: observes state
features/details/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/details/screens/MultiDetailsScreen.kt - Settings → Settings view model: uses state
features/settings/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/settings/SettingsScreen.kt - Settings → Preferences contract: reads preferences
features/settings/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/settings/SettingsScreen.kt - Settings → Section header: renders
features/settings/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/settings/SettingsScreen.kt - File operations → File repository contract: implements
data/src/main/kotlin/com/mateusrodcosta/apps/share2storage/data/repository/FileRepositoryImpl.kt - Saved preferences → Preferences contract: implements
data/src/main/kotlin/com/mateusrodcosta/apps/share2storage/data/repository/PreferencesRepositoryImpl.kt - Saved preferences → File operations: uses preferences helper
- File operations → File metadata model: produces metadata
data/src/main/kotlin/com/mateusrodcosta/apps/share2storage/data/repository/FileRepositoryImpl.kt - Details view model → File metadata use case: uses metadata
features/details/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/details/screens/DetailsViewModel.kt - Thumbnail fetching → Thumbnail model: creates thumbnails
core/ui/src/main/kotlin/com/mateusrodcosta/apps/share2storage/core/ui/media/ThumbnailFetcher.kt - File details and selection → Thumbnail fetching: previews media
- About screen → Theme colors: uses colors
features/about/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/about/AboutScreen.kt - Settings → Theme colors: uses colors
features/settings/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/settings/SettingsScreen.kt - File details and selection → File metadata model: displays file data
features/details/src/main/kotlin/com/mateusrodcosta/apps/share2storage/features/details/screens/MultiDetailsScreen.kt - Save service → Insufficient storage error: handles storage failure
app/src/main/kotlin/com/mateusrodcosta/apps/share2storage/service/SaveLocallyService.kt