[PR #6432] [MERGED] [PM-31370] Refactor stringToUri and consolidate FileManager #32588

Closed
opened 2026-04-18 15:57:22 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6432
Author: @SaintPatrck
Created: 1/28/2026
Status: Merged
Merged: 1/28/2026
Merged by: @SaintPatrck

Base: mainHead: PM-31370/propagate-stringToUri-error


📝 Commits (4)

  • ebe05e6 [PM-31370] Refactor stringToUri to use a Writer
  • f560844 [PM-31370] Consolidate FileManager into data module
  • 258547e Fix imports
  • ae87934 Refactor FileManagerImpl to use use for OutputStream

📊 Changes

7 files changed (+17 additions, -109 deletions)

View changed files

authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/manager/FileManager.kt (+0 -19)
authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/manager/FileManagerImpl.kt (+0 -58)
📝 authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/manager/di/AuthenticatorManagerModule.kt (+0 -16)
📝 authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/repository/AuthenticatorRepositoryImpl.kt (+1 -1)
📝 authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/repository/di/AuthenticatorRepositoryModule.kt (+1 -1)
📝 authenticator/src/test/kotlin/com/bitwarden/authenticator/data/authenticator/repository/AuthenticatorRepositoryTest.kt (+1 -1)
📝 data/src/main/kotlin/com/bitwarden/data/manager/file/FileManagerImpl.kt (+14 -13)

📄 Description

🎟️ Tracking

PM-31370

📔 Objective

This PR improves the stringToUri function and consolidates duplicate FileManager implementations:

Writer-based Implementation

  • Uses a Writer for character-based I/O instead of directly writing byte arrays
  • More idiomatic and efficient way to handle string data
  • Refines exception handling by specifically catching IOException instead of generic RuntimeException

FileManager Consolidation

  • Removes duplicate FileManager interface and implementation from the :authenticator module
  • The :authenticator module now uses the shared FileManager from the :data module
  • Eliminates ~90 lines of duplicate code

Bug Fix

  • Fixes null-stream handling: now correctly returns false when openOutputStream() returns null, instead of incorrectly returning true

📋 Changes

File Change
data/.../FileManagerImpl.kt Updated stringToUri with Writer pattern and IOException handling
authenticator/.../FileManager.kt Deleted - duplicate interface
authenticator/.../FileManagerImpl.kt Deleted - duplicate implementation
authenticator/.../AuthenticatorManagerModule.kt Removed FileManager provider
authenticator/.../AuthenticatorRepositoryModule.kt Updated import path
authenticator/.../AuthenticatorRepositoryImpl.kt Updated import path
authenticator/.../AuthenticatorRepositoryTest.kt Updated import path

Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Protected functional changes with optionality (feature flags)
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/bitwarden/android/pull/6432 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 1/28/2026 **Status:** ✅ Merged **Merged:** 1/28/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `PM-31370/propagate-stringToUri-error` --- ### 📝 Commits (4) - [`ebe05e6`](https://github.com/bitwarden/android/commit/ebe05e6ba7fc365d3073af96c75e7bc39314e072) [PM-31370] Refactor stringToUri to use a Writer - [`f560844`](https://github.com/bitwarden/android/commit/f560844af6aa9fadaa63e31fe3849bc2ee1c05d9) [PM-31370] Consolidate FileManager into data module - [`258547e`](https://github.com/bitwarden/android/commit/258547e182713e587c8eacd3eaaf79a7cd56158a) Fix imports - [`ae87934`](https://github.com/bitwarden/android/commit/ae879341d05f99b569d8a332d43ca088263b3d17) Refactor FileManagerImpl to use `use` for OutputStream ### 📊 Changes **7 files changed** (+17 additions, -109 deletions) <details> <summary>View changed files</summary> ➖ `authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/manager/FileManager.kt` (+0 -19) ➖ `authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/manager/FileManagerImpl.kt` (+0 -58) 📝 `authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/manager/di/AuthenticatorManagerModule.kt` (+0 -16) 📝 `authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/repository/AuthenticatorRepositoryImpl.kt` (+1 -1) 📝 `authenticator/src/main/kotlin/com/bitwarden/authenticator/data/authenticator/repository/di/AuthenticatorRepositoryModule.kt` (+1 -1) 📝 `authenticator/src/test/kotlin/com/bitwarden/authenticator/data/authenticator/repository/AuthenticatorRepositoryTest.kt` (+1 -1) 📝 `data/src/main/kotlin/com/bitwarden/data/manager/file/FileManagerImpl.kt` (+14 -13) </details> ### 📄 Description ## 🎟️ Tracking PM-31370 ## 📔 Objective This PR improves the `stringToUri` function and consolidates duplicate `FileManager` implementations: ### Writer-based Implementation - Uses a `Writer` for character-based I/O instead of directly writing byte arrays - More idiomatic and efficient way to handle string data - Refines exception handling by specifically catching `IOException` instead of generic `RuntimeException` ### FileManager Consolidation - Removes duplicate `FileManager` interface and implementation from the `:authenticator` module - The `:authenticator` module now uses the shared `FileManager` from the `:data` module - Eliminates ~90 lines of duplicate code ### Bug Fix - Fixes null-stream handling: now correctly returns `false` when `openOutputStream()` returns null, instead of incorrectly returning `true` ## 📋 Changes | File | Change | |------|--------| | `data/.../FileManagerImpl.kt` | Updated `stringToUri` with Writer pattern and IOException handling | | `authenticator/.../FileManager.kt` | **Deleted** - duplicate interface | | `authenticator/.../FileManagerImpl.kt` | **Deleted** - duplicate implementation | | `authenticator/.../AuthenticatorManagerModule.kt` | Removed FileManager provider | | `authenticator/.../AuthenticatorRepositoryModule.kt` | Updated import path | | `authenticator/.../AuthenticatorRepositoryImpl.kt` | Updated import path | | `authenticator/.../AuthenticatorRepositoryTest.kt` | Updated import path | ## ⏰ Reminders before review - Contributor guidelines followed - All formatters and local linters executed and passed - Written new unit and / or integration tests where applicable - Protected functional changes with optionality (feature flags) - Used internationalization (i18n) for all UI strings - CI builds passed - Communicated to DevOps any deployment requirements - Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team ## 🦮 Reviewer guidelines <!-- Suggested interactions but feel free to use (or not) as you desire! --> - 👍 (`:+1:`) or similar for great changes - 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info - ❓ (`:question:`) for questions - 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - 🎨 (`:art:`) for suggestions / improvements - ❌ (`:x:`) or ⚠️ (`:warning:`) for more significant problems or concerns needing attention - 🌱 (`:seedling:`) or ♻️ (`:recycle:`) for future improvements or indications of technical debt - ⛏ (`:pick:`) for minor or nitpick changes --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-18 15:57:22 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#32588