fix: implement in-memory token caching to avoid redundant prefs decryptions (#320)
* fix: implement in-memory token caching to avoid redundant prefs decryptions Resolves #277 Previously, the `AuthManager.getToken()` method decrypted the entire `EncryptedSharedPreferences` file on every call. Because this method is used in the OkHttp interceptor on every HTTP/WS request, and frequently during navigation, it introduced 10-30ms of redundant work per call. This compounded to noticeable UI lag (e.g., during chat session switches). This commit implements thread-safe in-memory caching for the auth token inside `AuthManager`. - Added a `@Volatile` `cachedToken` and `tokenInitialized` flag. - Modified `getToken()` to return the cached value after initial evaluation, using double-checked locking (`synchronized(this)`) to avoid race conditions. - Updated `setToken()` and `setSelectedProfileId()` to correctly invalidate or update the cache. - Added comprehensive unit tests in `AuthManagerTest.kt` to verify caching behavior and proper invalidation upon profile switches. * fix: implement in-memory token caching to avoid redundant prefs decryptions Resolves #277 Previously, the `AuthManager.getToken()` method decrypted the entire `EncryptedSharedPreferences` file on every call. Because this method is used in the OkHttp interceptor on every HTTP/WS request, and frequently during navigation, it introduced 10-30ms of redundant work per call. This compounded to noticeable UI lag (e.g., during chat session switches). This commit implements thread-safe in-memory caching for the auth token inside `AuthManager`. - Added a `@Volatile` `cachedToken` and `tokenInitialized` flag. - Modified `getToken()` to return the cached value after initial evaluation, using double-checked locking (`synchronized(this)`) to avoid race conditions. - Updated `setToken()` and `setSelectedProfileId()` to correctly invalidate or update the cache. - Added comprehensive unit tests in `AuthManagerTest.kt` to verify caching behavior and proper invalidation upon profile switches. * fix: implement in-memory token caching to avoid redundant prefs decryptions Resolves #277 Previously, the `AuthManager.getToken()` method decrypted the entire `EncryptedSharedPreferences` file on every call. Because this method is used in the OkHttp interceptor on every HTTP/WS request, and frequently during navigation, it introduced 10-30ms of redundant work per call. This compounded to noticeable UI lag (e.g., during chat session switches). This commit implements thread-safe in-memory caching for the auth token inside `AuthManager`. - Added a `@Volatile` `cachedToken` and `tokenInitialized` flag. - Modified `getToken()` to return the cached value after initial evaluation, using double-checked locking (`synchronized(this)`) to avoid race conditions. - Updated `setToken()` and `setSelectedProfileId()` to correctly invalidate or update the cache. - Added comprehensive unit tests in `AuthManagerTest.kt` to verify caching behavior and proper invalidation upon profile switches. - Fixed GitGuardian warning by removing the "my_secret_token" from the test. * fix: implement in-memory token caching to avoid redundant prefs decryptions Resolves #277 Previously, the `AuthManager.getToken()` method decrypted the entire `EncryptedSharedPreferences` file on every call. Because this method is used in the OkHttp interceptor on every HTTP/WS request, and frequently during navigation, it introduced 10-30ms of redundant work per call. This compounded to noticeable UI lag (e.g., during chat session switches). This commit implements thread-safe in-memory caching for the auth token inside `AuthManager`. - Added a `@Volatile` `cachedToken` and `tokenInitialized` flag. - Modified `getToken()` to return the cached value after initial evaluation, using double-checked locking (`synchronized(this)`) to avoid race conditions. - Updated `setToken()` and `setSelectedProfileId()` to correctly invalidate or update the cache. - Added comprehensive unit tests in `AuthManagerTest.kt` to verify caching behavior and proper invalidation upon profile switches. - Fixed GitGuardian warning by removing the "my_secret_token" from the test. - Fixed merge conflicts and ensured code still tests well. * fix: implement in-memory token caching to avoid redundant prefs decryptions Resolves #277 Previously, the `AuthManager.getToken()` method decrypted the entire `EncryptedSharedPreferences` file on every call. Because this method is used in the OkHttp interceptor on every HTTP/WS request, and frequently during navigation, it introduced 10-30ms of redundant work per call. This compounded to noticeable UI lag (e.g., during chat session switches). This commit implements thread-safe in-memory caching for the auth token inside `AuthManager`. - Added a `@Volatile` `cachedToken` and `tokenInitialized` flag. - Modified `getToken()` to return the cached value after initial evaluation, using double-checked locking (`synchronized(this)`) to avoid race conditions. - Updated `setToken()` and `setSelectedProfileId()` to correctly invalidate or update the cache. - Added comprehensive unit tests in `AuthManagerTest.kt` to verify caching behavior and proper invalidation upon profile switches. - Fixed GitGuardian warning by removing the "my_secret_token" from the test. * fix: implement in-memory token caching to avoid redundant prefs decryptions Resolves #277 Previously, the `AuthManager.getToken()` method decrypted the entire `EncryptedSharedPreferences` file on every call. Because this method is used in the OkHttp interceptor on every HTTP/WS request, and frequently during navigation, it introduced 10-30ms of redundant work per call. This compounded to noticeable UI lag (e.g., during chat session switches). This commit implements thread-safe in-memory caching for the auth token inside `AuthManager`. - Added a `@Volatile` `cachedToken` and `tokenInitialized` flag. - Modified `getToken()` to return the cached value after initial evaluation, using double-checked locking (`synchronized(this)`) to avoid race conditions. - Updated `setToken()` and `setSelectedProfileId()` to correctly invalidate or update the cache. - Added comprehensive unit tests in `AuthManagerTest.kt` to verify caching behavior and proper invalidation upon profile switches. - Fixed GitGuardian warning by removing the "my_secret_token" from the test. --------- Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
eb71ae3a46
commit
42fcf2a14b
19 files changed
+157
-299
No files matched your search
@@ -178,7 +178,6 @@
|
||||
<string name="connect_error_refused">Connection refused – is Hermes running?</string>
|
||||
<string name="connect_error_resolve">Could not resolve host</string>
|
||||
<string name="connect_error_connection_failed">Connection failed: %1$s</string>
|
||||
<string name="connect_error_invalid_host">Invalid or forbidden host in pairing string</string>
|
||||
<string name="connect_error_missing_fields">Malformed pairing string — missing host, port, or token</string>
|
||||
<string name="connect_error_malformed">Malformed pairing string — expected URL or Base64-encoded JSON</string>
|
||||
<string name="connect_error_parse_failed">Failed to parse pairing string: %1$s</string>
|
||||
|
||||
Reference in new issue
Block a user