Range question support - #472
Open
Hamsterarsch wants to merge 13 commits into
Open
Conversation
- Replaced the feature graphic and first seven phone screenshots. - Removed unused screenshots (8 and 9).
Co-authored-by: ahlem <dev@wearehorizontal.org>
* wip manual connection * WIP manual connection * Finish manual connection * wip navigation based on event emitted in the server api * comment the prepareUploadEvent * add the accept or reject files view and its navigation * clean flow * handle the accept reject flow * handle discard and go back to first destination * wip flow prepare load * Wip finish manual connection * wip add success message * WIP on feat/stable_peer_to_peer add back button * add message of success * add success string * change the connectCode to ipAdress * wip reject flow * wip reject flow in the sender and recipient * Fix hash problem, wip send/receive manual * wip reject flow and refactor code * change naming * WIP manual register flow * Revert "change the connectCode to ipAdress" This reverts commit d311889. * Finish connect flow * finish reject flow * fix merge conflicts * delete old code * wip import files * fix hash generation to match the ios * Fix qr code flow * Correct ios/android connect flow * refactor code save sessionId * Fix prepare upload (ios/Android) * add error in case adressIp is null * get the mimeType dynamically and save the transmissionId * Improve code, unify routes api * unify code in TellaPeerToPeerClient * Fix wifi integration * refactor code * fix audio recorder * WIP unify code * refactor code * wip save the fileId and tokens refactor code of prepareUpload * WIP fix prepare upload files * WIP submission * WIP fix state * clean code * wip submission files workflow * WIP unify client/server state * wip fix state * Fix logic with the new state * WIP send files flow * Fix prepare upload flow and response * prepare files for sender/receiver ui from the state * Prepare data to send files * WIP client upload * Fix reciepient fragment * change viewmodel package * fix location display for wifi display * add error handling in registration flow * wip recipient flow in upload * WIP sending problem * change post to put * Fix client upload code * wip errors in registration * Fix regression * sender progress flow * wip cancel button * wip resultView * wip recipient progress and result view * WIP save files in the recepient * Finish saving files in DB * wip finish peer to peer result * WIP fix design and result progress state * fix qrcode design * fix design of all buttons * fix design * WIP code * fix design * add action * send octet stream * add collapsable view * Fix sender/receiver manual verification design * navigate from view files to attachments * fix nearbysharing display * fix navigation issue * wip fix * wip fixes * handle back * WIP sheet progress state * WIP server celan up * add close connexion endpoint * show all files result * add stopserver * fix injection * Fix close connection api * fix error * Fix and improve flow * clean code * Fix sheet progress * WIP fix manual connection * Fix wifi problem * Fix wifi * add the wifi screen in the sender * fix thumbnail issue between ios and android * fix T-And-1697 - Get connected screen is showing an incorrect text * add byteArrayFlexibleSerializer * wip handle success uploading file in the sender side * Revert "wip handle success uploading file in the sender side" This reverts commit e835c98. * Fix hotspot shared for registartion issue * Fix success screen * Revert "Fix success screen" This reverts commit 537f291. * update the p2pFile Status while upload/ cancel * Fix files status preview * Fix design * add nearby settings/home screen * Baypass ping call certificate * add new custom tips card view * add new fragment tips logic + layout * Adjust new logic removal for wifi + tips * Fix network update * new T-And-1676 - Update Onboarding with p2p info * make nearby sharing home button visible by default * Remove text all caps redundant * apply protocol fixes * Fix finger print fetcher * Fix ping isse problem * Apply design changes * WIP WAITING/ACCEPT validation * Fix * Fix server/receipient flow * Release 3.0.0 "211" * Revert "Release 3.0.0 "211"" This reverts commit 3ab1050. * fix upload problem related to duplicated files/folders * update version code * Fix gradle problem * fix prepareUpload request * fix strings display * fix design * fix strings * Fix merge problems * WIP fix merge problems * Fix T-And-1802 - CVE-2025-TELLA3-002: Cleartext Traffic Enabled * WIP T-And-1754 - CVE-2025-TELLA3-001 * Fix strings conflicts * Fix build conflicts * wip rate limiting (protocol) * feat(proguard): Keep Netty core classes for Android reflection * fix(proguard): Suppress warnings for optional Netty and OpenJDK deps on Android * add proguard rules for ktor server * add gradle parser * WIP CVE-2025-TELLA3-008 — Android * feat(p2p): Align rate limiting logic and responses with Tella-iOS Adjusts the P2P rate-limiting mechanism to match the iOS implementation for cross-platform consistency. This changes the default bucket key to use a combination of client IP and request path (ignoring query parameters) and updates the 429 response to return a JSON error body. UI handling is also updated to show a connection failure message when registration is rate-limited. * fix(p2p): Ensure peer server stops on toolbar back navigation Consolidates the back navigation logic in QRCodeFragment to ensure that the peer server is stopped when using either the toolbar's back listener or the UI back button. Previously, the toolbar back action did not trigger the server shutdown. * implement T-And-1829 - Hash verification: After upload, compare file hash to prepareUpload hash; reject on mismatch. * fix conflicts * Refactor: P2P - Consolidate receive progress updates in server * Cleanup: P2PServer - Reduce log level for temp file deletion failures * Refactor: Make X509Certificate field final in adapter * Feature: P2P - Handle file failures in session completion and UI * Fix: P2P - Improve recipient import robustness and UI dismissal * Fix: P2P - Show toast when recipient rejects files during preparation Add an observer to handle the recipient rejection state in PrepareUploadFragment, ensuring the user is notified via a toast message when a transfer is rejected. * fix(p2p): Ensure accurate file list and metadata during P2P preparation * feat(p2p): implement nonce validation and PIN attempt limits Adds single-use nonce tracking to the P2P protocol to prevent replay attacks during registration, upload preparation, and file transfers. This update also includes logic to limit failed PIN attempts per registration nonce to mitigate brute-force attacks, aligning the Android implementation with the iOS client. * feat(p2p): Improve PeerServerStarterManager for idempotent start/stop * feat(p2p): Initialize P2PSession and log session ID mismatches * refactor(p2p): Move P2P server ops to background thread in UI fragments * feat(p2p): Add mutex and loading indicator for QR code generation * fix(p2p): Ensure prepareUploads calls after observers in WaitingSenderFragment * refactor: Remove unused TopSheetDialog * feat: Add light_red color resource * feat(p2p): Introduce PeerConnectionQrCodec for multi-IP QR payloads * feat(p2p): Enhance network info manager to collect all local IPv4 addresses * feat(p2p): Support multiple Subject Alternative Names in self-signed certificates * feat(p2p): Implement IP preference heuristic for Nearby Sharing * feat(p2p): Update PeerToPeerViewModel for multi-IP registration and retry * feat(p2p): Adjust Sender QR scanning to use multi-IP registration * feat(p2p): Update Receiver QR generation with multiple local IPs * refactor(p2p): Update P2P UI fragments to display multi-IP from QR * feat(p2p): Calculate plaintext SHA-256 and size for P2P file transfers * Fix(P2P): Prevent incorrect network binding for local peers * feat(p2p): Add PayloadTooLarge to P2P outcomes and results * feat(p2p): Define Nearby Sharing transfer limits * feat(p2p): Implement server-side content size validation * feat(p2p): Client-side handling of 413 Payload Too Large responses * feat(p2p): Client-side pre-checks and UI feedback for large transfers * Bump version code to 232 * Refactor: Replace `kotlin.Result` with standard `Result` type * Feat: Enhance self-signed certificate generation with standard extensions * Refactor: Centralize certificate hashing and trust manager logic * Feat: Integrate new certificate pinning trust managers into client code * feat(p2p): Migrate receive directory to noBackupFilesDir and clean stale files * refactor(p2p): Centralize P2P receive temp file cleanup * feat: Introduce defensive copies for MainKey key material * refactor: Improve MainKey generation error handling to fail closed * Chore: Remove unused imports from MyApplication * Fix(security): Conditionally enable TLS tracing for debug builds (CVE-2025-TELLA3-003) * Fix(security): Restrict WorkManager verbose logging in production (CVE-2025-TELLA3-003) * Fix(security): Conditionally log Conscrypt TLS details in debug builds (CVE-2025-TELLA3-003) * Docs: Add clarification to network security config XML * feat: Remove unused EncryptionUtil.java * feat: Improve secure handling of database encryption keys * feat: Zero database encryption key on helper close * refactor: Remove obsolete SQLCipher key logging * feat: Implement proper lifecycle management for Vault DB singleton * feat: Enhance P2P networking and security for stable discovery Upgrades Ktor to 3.3.0 and refines the peer-to-peer implementation to improve cross-platform compatibility and discovery reliability. * refactor(p2p): Remove unused network address policy log and imports feat(media): Enhance MediaFileHandler for P2P-specific file saving feat(vault): Add MOV to recognized video file types feat(p2p): Implement vault import logic for received P2P files * fix: Extend timeout when launching CameraActivity * T-And-1761 - Update Get Started flow Introduce a Wi-Fi confirmation step before initiating P2P sharing to ensure both devices are on the same network. This also revamps the connection process to use QR codes for initiating transfers and adds a dedicated "Tips to Connect" help screen accessible from the P2P start screen, improving user guidance. * Fix : T-And-1897 - Click on Exit doesn’t cancel the connection * Fix T-And-1895 - Android server: Can’t click on Back when transfer is in progress * FIX : T-And-1893 - “Waiting for the sender to share files” is still shown after the second try to send files * Fix : T-And-1891 - After clicking Back on Android, the server continues waiting for files to be received even after clicking on Receive files button * FIX : T-And-1886 - Make Try Again button to only go back to the connection screen, do not automatically try again * feat: Improve QR code parsing robustness and error handling * Fix T-And-1894 - Android server fails in case the folder name exists * T-And-1729 - Design inconsistencies Introduces a 'Back to Home' button on the P2P transfer result screen, visible only for sender participants. This provides a clear and direct navigation path after a file transfer attempt. Additionally: - Replaced the `ic_p2p_sharing.png` with a scalable vector drawable (`ic_p2p_sharing.xml`). - Standardized 'Nearby sharing' UI strings to 'Nearby Sharing' for consistent capitalization. - Improved clarity of P2P connection instruction strings. * fix T-And-1896 - White QR code view * feat: Enable direct navigation to specific Vault folder Allows the Attachments screen (Vault) to be opened directly to a specified folder ID. * fix T-And-1528 - Can't select all files with checkbox in server connections (uwazi, but also gDrive, Nextcloud, Tella Web, Dropbox, etc) * fix T-And-1912 - Add Back to home button in Transfer Interrupted * fix T-And-1913 - The buttons for Hash verification screen overlap with the text * fix T-And-1911 - R capited in the app bar in REsults screen and T-And-1910 - TRansfer interrupted results screen (For partial submission) should follow design text * fix T-And-1910 - TRansfer interrupted results screen (For partial submission) should follow design text fix T-And-1908 - Back to home button after the sucessful submission has not background fix T-And-1907 - Add margin to the "QR" show connection and also to the Accept/Reject fix T-And-1904 - all error messages (for example recipient rejected) need to have the new layout fix T-And-1903 - The bottom sheet (to select files for the connection) apears in the top of the screen * fix T-And-1528 - Refine "select all" checkbox and selection mode synchronization * feat(sender): Add bottom action bar for manual connection navigation * refactor(sender): Update manual connection layout to use ConstraintLayout and Toolbar * More ui improvements * refactor(ui): Adjust 'Vault Importing' progress plural string * More ui improvements * More improvements * bump version code * More improvements -> T-And-1890 - After clicking Back on iOS, Android server continues waiting for files to be received. * refix T-And-1528 - Can't select all files with checkbox in server connections (uwazi, but also gDrive, Nextcloud, Tella Web, Dropbox, etc) and T-And-1912 - Add Back to home button in Transfer Interrupted * Fix result screen * Lokalise: Translations update (Horizontal-org#464) * New translations - For 3.0.0 release * wip strings --------- Co-authored-by: ahlem <ahlem.jarrar@hotmail.com> * ui improvements * More ui improvements * UI: Adjust waiting screen text layout and update message * bump version * fix design * Remove unused code * New translations - For 3.0.0 release - cleanup (Horizontal-org#465) Co-authored-by: ahlem <ahlem.jarrar@hotmail.com> * bump version --------- Co-authored-by: wafa <lakwafa@gmail.com> Co-authored-by: Ahlem <ahlem.jarrar@proxym-it.com> Co-authored-by: ahlem <dev@wearehorizontal.org> Co-authored-by: raphmim <27868414+raphmim@users.noreply.github.com>
* fix T-And-1920 - crash when unlocking tella (every time) * fix T-And-1771 - people who don't use Google's Files explorer cannot impor files to tella * fix T-And-1923 - HomeButton.initListeners$lambda$1 * fix navigation
* Fix files added when parent is null * Fix top bar camera problem hidden
Collaborator
|
@Hamsterarsch Thanks for the contribution and for rebasing the PR. We can’t merge it yet because it includes a major JavaRosa upgrade from 2.6.0 to 4.4.0. Before merging, we need to run more extensive regression testing on ODK/Collect and our other form-related integrations. We’re planning to focus on this testing over the next few weeks and will update you once we know more. Thanks again for your patience. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebased version of #471
@ahlem-jarrar here's the rebased version. I wanted to point out - since it might not have been clear from the way you wrote about it in the old PR - that this PR already updates the javarosa package to a quite recent version. Without this change, the feature could not be implemented since parsing of forms with range type questions crashed javarosa.
I suppose the options here are to either accept this PR and get the javarosa update "on top" of the feature or to discard this for now until someone at Tella gets around to perform the dependency update.