-
Couldn't load subscription status.
- Fork 26
app-masking POC #643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feature/raven-integration
Are you sure you want to change the base?
app-masking POC #643
Conversation
…feature/AOO-39-app-masking
added BaseDialog implementation with DialogTypes added reusable button composables
fastlane init
Proof Mode to Common Dialog Implementation
Mix Panel Implementation
Feature/Android 15 Edge-to-Edge + Official PickVisualMedia Migration Merging to next to continue edge to edge check for feature/storacha, created a backup branch called `next-11-aug-2025`.
…iption-fix fix: update internet archive description to clarify account types
…iption-fix fix: update upload description for internet archive to specify free public server
Updated text for AddFolderScreen and CreateNewFolderScreen
…prefs_use_proofmode_description` string resource.
Bug fix/proofmode text changes
IA refactor to MVI from Redux CC License Setup Screen Compose Migration IA Detail Screen CC License Integration
SpaceList screen add btn size increased
…ds in crashlytics
removed space id arg from IALoginScreen, made IADetailScreen arg space_id as required
Feature/ia cc license
# Conflicts: # app/src/main/AndroidManifest.xml # app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/AppConfig.kt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces app masking capabilities for the OpenArchive mobile application. The primary purpose is to allow users to disguise the app's appearance through alternate launcher icons and names, enhancing privacy and security for journalists and activists operating in sensitive environments.
Key Changes
- Added app masking infrastructure with configurable launcher aliases (Save vs. Masked app icons)
- Implemented comprehensive UI modernization migrating from View-based to Compose UI components
- Enhanced passcode functionality with improved numeric keypad and haptic feedback
Reviewed Changes
Copilot reviewed 175 out of 314 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| app/src/main/res/drawable/*.xml | New vector drawable icons for masked app appearance and updated UI elements |
| app/src/main/java/.../app_masking/* | Core app masking utilities and settings activity for managing launcher aliases |
| app/src/main/java/.../passcode/* | Enhanced passcode system with new numeric keypad design and submit functionality |
| app/src/main/java/.../spaces/* | Modernized space setup screens using Compose UI |
| app/src/main/java/.../settings/* | Updated settings infrastructure with new license setup and configuration options |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| @@ -0,0 +1,5 @@ | |||
| <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#000000" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp"> | |||
Copilot
AI
Sep 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The XML declaration is missing from this vector drawable. Consider adding <?xml version=\"1.0\" encoding=\"utf-8\"?> at the beginning for consistency with other drawable files.
| ) = applyEdgeToEdgeInsets { insets -> | ||
|
|
||
| leftMargin = insets.left | ||
| rightMargin = insets.right |
Copilot
AI
Sep 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing documentation for the applySideInsets function. Consider adding a KDoc comment explaining its purpose and parameters.
| else { | ||
| getPackageInfo(packageName, 0) | ||
| }.versionName | ||
| }.versionName ?: "unknown" |
Copilot
AI
Sep 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fallback versionName ?: \"unknown\" duplicates the catch block return value. Consider extracting this to a constant to avoid magic strings.
| // // Process passcode only when the required length is reached | ||
| // if (_uiState.value.passcode.length == config.passcodeLength) { | ||
| // _uiState.update { it.copy(isProcessing = true) } | ||
| // processPasscodeEntry() | ||
| // } |
Copilot
AI
Sep 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dead code should be removed. These commented lines serve no purpose and reduce code readability.
| } | ||
|
|
||
| private fun onSubmit() { | ||
|
|
Copilot
AI
Sep 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The onSubmit method is empty but is referenced in the UI action. This could lead to unexpected behavior when users tap the submit button.
| val state = uiState.value | |
| if (!state.isProcessing && state.passcode.length == config.passcodeLength) { | |
| _uiState.update { it.copy(isProcessing = true) } | |
| checkPasscode() | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
detekt found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.
https://oadev.atlassian.net/browse/AOO-39