This commit refactors the connectivity service to be more robust and less prone to UI flicker.
Key changes:
- Any successful API response now briefly suppresses the offline warning. This prevents the UI from flashing an offline message between regular connectivity checks.
- The threshold for showing the offline warning is increased from 2 to 3 consecutive failed health checks.
- The timeout for health checks is increased to better handle slow networks.
- The offline warning is now suppressed if there are active data streams to avoid interrupting the user.
- A custom JSON converter is added for conversation metadata to handle potential type mismatches from local storage.
- Deleted the SelfSignedCertificateManager and its associated files to simplify the certificate management process.
- Updated ApiService and ConnectivityService to include self-signed certificate configuration directly, enhancing clarity and maintainability.
- Adjusted comments to reflect the new approach to handling self-signed certificates, ensuring better understanding of security considerations.
- Improved the application startup sequence by deferring unnecessary initializations, contributing to a more efficient first paint performance.
- Improved BackgroundStreamingService to manage foreground service notifications more effectively, ensuring compliance with Android requirements.
- Implemented dynamic foreground service type resolution based on microphone permission, enhancing service behavior based on app state.
- Added checks for app foreground status in connectivity management, improving responsiveness to network changes.
- Refactored notification handling to streamline service lifecycle management and improve code maintainability.
- Integrated connectivity status monitoring into the RouterNotifier to manage navigation based on network availability.
- Refactored ConnectivityService to streamline connectivity checks and improve state management, ensuring a more reliable online/offline status.
- Updated the connection issue page to directly utilize the connectivity status provider, simplifying the connectivity state handling.
- Improved offline indicator behavior to provide clearer feedback on connectivity changes.
- Enhanced the persistent streaming service to react to connectivity status changes more effectively.
- Added `connectivity_plus` dependency to manage network connectivity status.
- Updated `pubspec.yaml` to include the new dependency version.
- Enhanced `ConnectivityService` to utilize `connectivity_plus` for improved connectivity monitoring and handling.
- Refactored connectivity checks and state management for better performance and reliability.
- Added checks in the ConnectivityService to prevent operations on a closed stream controller, ensuring stability and preventing potential errors.
- Updated the timer creation and stream addition logic to only execute if the service is not disposed, improving resource management.
- Enhanced the dispose method to safely close the connectivity controller, maintaining clean resource handling.
- Refactored the ConnectivityService to replace health URI references with base URI for improved clarity and consistency.
- Updated methods to probe server health and resolve URIs, ensuring a more streamlined approach to connectivity checks.
- Enhanced the provider setup to create a Dio instance with custom headers from the active server configuration, improving flexibility in server communication.
- Changed the initial state of the socket connection from `disconnected` to `connecting` to better reflect the connection process.
- Updated the service change handling to emit the `connecting` state when the service is null.
- Introduced a new `stream()` method in the `ConversationDeltaStream` class for direct access to the underlying stream, improving usability.
- Added a `conversationDeltaEventsProvider` to provide a stream of conversation delta events based on requests, enhancing the application's real-time capabilities.