frosty/lib/apis/base_api_client.dart

263 lines
8.1 KiB
Dart
Raw Normal View History

v5 (#463) * migrate to dio * ignore folders * simplify twitch api headers handling * clean up main * simplify logs * optimize profile picture fetching fixes refetches on tab switch * update claude md * refactor irc.dart * update copilot instructions with essential commands and project structure details * implement message sending state management and UI updates * refactor notification handling and add copy-paste functionality in chat * refactor AlertMessage to support vertical layout and optional padding * refactor error messages for consistency and clarity across various components * refactor chat layout to use draggable divider and improve chat width settings * refactor Uptime widget to use SharedTimerService for synchronized updates * refactor search results components to handle null future states gracefully * refactor loading indicators to use skeleton loaders for improved user experience * refactor UI components for improved layout and responsiveness, enhance skeleton loaders, and streamline padding adjustments * refactor: replace manual blur effects with BlurredContainer for consistency and reusability * refactor: enhance JavaScript execution and error handling in WebView components * refactor: replace app bar with blurred container for improved UI consistency across screens * refactor: streamline video chat layout and enhance PiP drag gesture functionality * revert some app bar changes * refactor: implement Picture-in-Picture drag functionality in VideoChat * refactor: pass currentChannelId to IRCMessage and ChatMessage for improved context * fix large thubmnail width * chore: update Gradle and Kotlin plugin versions for improved compatibility * changes from v4.10.0 branch * feat: integrate AnimatedScrollBorder for improved UI responsiveness across various screens * refactor: update SectionHeader styling and improve theme management * feat: add pinned section to StreamsList and enhance skeleton loader padding * feat: add repository guidelines for project structure, coding style, testing, and security * feat: enhance StreamCard UI with BlurredContainer and adjust border width in theme * feat: implement unfocusInput and safeRequestFocus methods to manage text field focus behavior * feat: enhance Picture-in-Picture drag interactions with haptic feedback and smooth animations * refactor: improve code formatting and readability across multiple files * feat: implement picture-in-picture mode toggle and state management for video playback * feat: reset PiP mode state when pausing video playback * feat: add custom app bar with profile picture and stream info for video chat * feat: convert multiple settings screens to use StatefulWidget and add animated scroll borders * feat: update blur configuration for adaptive alpha based on theme * fix: adjust default font size in SectionHeader widget * feat: enhance PiP mode with drag overlay instruction and UI improvements * fix: improve badge rendering with consistent margin and border for current channel * refactor: replace BackdropFilter with BlurredContainer for improved clarity and maintainability * fix: reduce background transparency in Uptime widget for better visibility * feat: enhance photo view dialog with full resolution toggle and blurred background * fix: reset chat delay to 0 when auto sync is enabled and update settings title for clarity * fix: adjust border width in theme to improve consistency * feat: add forceDarkMode option to BlurredContainer for improved theme adaptability * feat: implement offline followed channels feature with UI integration and settings option * fix: increase font size and weight for offline status text for better readability * feat: remove offline pinned channels feature and update related UI components * feat: optimize offline channels loading behavior based on expansion state * fix: improve clarity and consistency in repository guidelines formatting * feat: update full resolution URL handling and button visibility logic * feat: replace app bar with blurred version in chat-only mode and add animated scroll border * feat: refactor video chat layout for improved chat and video display in landscape mode * feat: remove bottom bar visibility setting and adjust chat layout accordingly * fix: simplify condition for displaying offline channels section in following tab * feat: enhance reply thread display with indentation and reply icon * feat: implement showModalBottomSheetWithProperFocus for improved focus handling * feat: add gradient direction support to BlurredContainer for enhanced visual effects * feat: enhance NavigationBar and Theme settings for improved visual consistency * feat: add gradient direction support to BlurredContainer in VideoChat for enhanced visual effects * chore: update .gitignore to include .cursor file for better environment management * fix: update PiP drag gesture conditions to include video paused state for better user experience * refactor: replace ScrollController with SettingsPageLayout in settings screens for improved layout management * refactor: centralize orientation handling by introducing OrientationUtils for improved readability and maintainability * refactor: replace OrientationUtils with ContextExtensions for streamlined context-based access to theme, layout, and API dependencies * refactor: improve video chat UI by adjusting title layout and adding stream info tooltips for better user experience * refactor: adjust titleSpacing in theme and navigation components for improved layout consistency * refactor: update stream info timer handling and overlay management for improved UI responsiveness * refactor: enhance stream info timer logic and overlay visibility management for chat-only mode * refactor: enhance input decoration theme in FrostyThemes for improved visual consistency and responsiveness * refactor: adjust inputDecorationTheme padding in FrostyThemes for improved visual consistency * refactor: enhance video overlay management by including video preview overlay in hideElements for improved UI consistency * refactor: improve chat bottom bar padding and video chat layout for enhanced UI consistency * refactor: adjust chat padding to account for device bottom insets for improved layout consistency * refactor: update text styles in FrostyThemes for improved visual consistency across UI components * refactor: update iOS minimum deployment target to 13.0 for improved compatibility * refactor: adjust chat bottom padding based on emote menu visibility for improved layout consistency * refactor: adjust padding values in StreamsList for improved layout consistency * refactor: replace Padding with AnimatedPadding in Chat for smoother layout transitions refactor: replace Container with AnimatedContainer in BlurredContainer for smoother animations * refactor: remove unnecessary radius property from ProfilePicture in OfflineChannelCard for cleaner code * refactor: enhance chat bottom bar suffix icon to display message delay with tooltip for improved user experience * refactor: update hint text and tooltips in chat bottom bar and search for improved clarity * refactor: simplify notification display logic and enhance chat input behavior for improved user experience * refactor: enhance layout consistency by adjusting spacing in various components across the channel and home screens * refactor: introduce LiveIndicator widget and adjust spacing in channel and video components for improved layout consistency * refactor: remove monospace font family from chat bottom bar for improved text rendering * refactor: reduce notification animation duration and change dismiss direction for improved user experience * refactor: replace VideoBar with StreamInfoBar in video components for improved layout and consistency * refactor: adjust font sizes and spacing in StreamInfoBar for improved layout consistency * refactor: standardize font sizes and update gradient stops in video components for improved visual consistency * refactor: update tooltip padding and background color in theme for improved visual consistency * refactor: enhance tooltip behavior and standardize font sizes in StreamInfoBar and related components for improved visual consistency * refactor: add showThumbnail option to LargeStreamCardSkeletonLoader for improved layout flexibility * refactor: add StreamInfoBarSkeletonLoader for improved layout consistency in stream components * refactor: add shadow effects to icons and text in StreamInfoBar and VideoOverlay for improved visual depth * refactor: update defaultOverlayOpacity to 0.0 for improved overlay behavior * fix: correct stream info text color on overlay * refactor: implement a new color picker dialog with random color generation for enhanced user experience * refactor: adjust gradient colors and stops in VideoOverlay for improved visual consistency * refactor: refine gradient colors and stops in VideoOverlay for enhanced visual clarity * refactor: add isCompact parameter to StreamInfoBar for responsive text sizing * fix: update tooltip background color to use surface color for better contrast * feat: add shared chat mode support in chat store and update StreamInfoBar for visual indication * refactor: disable debug print for IRC messages to reduce log clutter * feat: implement chat color selection feature with user color management in chat settings * refactor: replace color adjustment logic with new contrast-aware utility for chat names * refactor: simplify chat details UI by replacing list tiles with action cards and removing unused clear dialog * refactor: enhance chat details UI by improving time formatting and adding label styling to action cards * refactor: update chat color terminology to 'Username color' for clarity in UI * refactor: enhance chat details UI by introducing active chat modes display and improving layout structure * refactor: improve chat details layout by replacing ListTile with Padding and adding a Divider for better visual separation * refactor: remove chat notifications positioning setting and adjust notification alignment in video chat * refactor: streamline StreamInfoBar component by consolidating offline handling and improving layout for better readability * refactor: enhance StreamInfoBar by adding tooltip for streamer name and improving text overflow handling * refactor: adjust tooltip display duration in StreamInfoBar and update theme configuration * refactor: adjust margin and padding in StreamCard for improved layout consistency * chore: update dependencies in pubspec.yaml and pubspec.lock for Firebase and other packages * template * chore: update iOS platform version to 15.0 and Firebase dependencies to 12.2.0 * refactor: simplify StreamInfoBar layout by reducing nested widgets and improving text color handling * format * feat: enhance Channel model and StreamInfoBar to support offline channel details * feat: add offline indicator and improve StreamInfoBar layout for better offline channel display * fix: adjust icon color opacity in StreamInfoBar for improved visibility * feat: enhance dismissal animation in FrostyPhotoViewDialog to track swipe direction * docs: update copilot instructions for clarity and additional error handling details * refactor: optimize latency tooltip layout and improve offline indicator styling in VideoOverlay * feat: implement shared chat asset fetching and participant management in ChatAssetsStore * refactor: replace Observer with Builder for improved widget rebuilding in VideoOverlay * refactor: update StreamInfoBar border styling and adjust layout in VideoOverlay for improved visual consistency * feat: add showTextShadows property to StreamInfoBar for customizable text shadow display * refactor: adjust layout in VideoOverlay by adding padding to improve spacing and visual consistency * refactor: enhance VideoOverlay gradients and layout for improved visual hierarchy and user experience * refactor: reduce vertical padding in VideoOverlay for improved layout consistency * refactor: remove overlay opacity settings from VideoSettings and SettingsStore for simplification * refactor: improve text overlay transition in VideoChat for better user experience * Revert "refactor: improve text overlay transition in VideoChat for better user experience" This reverts commit fd16ff5ec30ec266157e5c8a9d4a6090c91717f6. * refactor: wrap videoOverlay in ColoredBox for improved layout handling * refactor: optimize animation duration and transition curves in VideoChat for smoother interactions * refactor: dispose searchScrollController in HomeStoreBase to prevent memory leaks * refactor: simplify gradient definitions in VideoOverlay for improved readability and maintainability * refactor: remove 'Offline' text overlay from VideoOverlay for cleaner UI * refactor: add refresh functionality for assets in ChatDetails with loading indicators * refactor: update visibility conditions for uptime, viewer count, and category display in StreamInfoBar * refactor: replace AlertDialog with FrostyDialog for consistent dialog styling across the application * refactor: enhance layout handling in FrostyPageView to prevent overflow during height transitions * refactor: replace ColorPickerDialog with AccentColorPickerDialog for improved color selection experience * refactor: replace theme and accent color settings with dedicated components for improved modularity and readability * refactor: replace ElevatedButton with TextButton for consistent button styling across dialogs * refactor: integrate MobX Observer for reactive state management in settings widgets * refactor: update theme and dialog components for improved styling and consistency * refactor: enhance dialog styling with rounded corners and border in theme configuration * refactor: improve dialog messages for unauthorized access handling * refactor: update bodyLarge text style in theme configuration to include font weight * refactor: standardize Divider usage and adjust theme styles for improved consistency * refactor: adjust Divider properties and theme styles for enhanced visual consistency * chore: remove GEMINI.md file as it is no longer needed for project documentation * refactor: enhance token validation and reconnect logic in AuthBase for improved error handling * format * refactor: integrate landscape cutout settings into VideoChat layout for improved responsiveness * refactor: implement app lifecycle handling in VideoChat and enhance stream info update logic in VideoStore * refactor: update landscape cutout conditionals in VideoChat layout for improved responsiveness * update AGENTS.md * add scrollbar to search * fix scrolling exception * update CLAUDE.md * 5 auth reconnect attemps then log out * increase reply max lines to 2 * simplify and improve reply formatting * add prime icon * better draggable divider * support draggable divider in fullscreen overlay chat * add text shadow in fullscreen chat overlay mode * format * add landscape checks * video store optimization attempts * Dispose WebViewController and remove JavaScript channels properly * Track and cleanup all MutationObservers to prevent accumulation * Throttle latency updates to once per 5 seconds (reduces CPU load) * Add timeout protection and null checks for robustness * Prevent duplicate event listeners on page reloads * double tap divider to reset * Revert "video store optimization attempts" This reverts commit b1df7b0de473543283211a489dca698d9d241857. * optimize video store attempt 2 * Revert "double tap divider to reset" This reverts commit aeb26a433500ec71f822794835e927018ee59e1e. * optimize latency listener to open the menu and check every 20 secconds * more optimizations * hard refresh * abbreviate latency * fix lint * improve hide default overlay * fix chat no longer reconnecting with chat delay * refine chat alerts * fix historical message missing badges and emotes on initial connection * parallelize * revert * add reconnect button inline action * refactor: replace Scrollbar with FrostyScrollbar across chat and settings screens for consistent styling * tweak chat details menu * add scrollbar to release notes, renames for consistency * fix duplicate message case * fix chat delay alerts in auto sync mode * add regex for numeric strings and enhance display name formatting logic * exterminate borders * refactor: simplify active chat modes display in chat details screen * feat: enhance chat input button with delay notification and disable state * fix: wrap chat in SafeArea to prevent UI overflow issues * refactor: remove divider line from video chat and update draggable divider visibility logic * persist overlay in pip mode * fix: update chat delay handling and notifications in chat bottom bar * fix: update chat overlay visibility logic to respect fullscreen settings * tap to show deleted message * fix: prevent accidental chat scrolling when accessing system UI in landscape mode * show latency in portrait * fix: enhance chat delay notifications with dynamic delay time * docs: update CLAUDE.md for improved environment variable instructions and architecture overview * fix: improve chat delay countdown management and message handling * add preliminary release notes * remove agents.md * update lockfile * add initial multi chat feature * add option to persist multi chat tabs * add remove confirmation dialog * improve add chat design * lazy-load tabs * create global assets store to dedupe global asset fetching * improve tab design/styles * update notes * use frosty dialog * update claude md * tweak * add ability to reorder tabs * resolve conflict * merge cleanup * format * update release notes * add chat delay sync completion tracking to prevent countdown re-appearance * add tests * fix * update release notes * bump
2026-01-01 22:28:17 -05:00
import 'package:dio/dio.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
v5 (#463) * migrate to dio * ignore folders * simplify twitch api headers handling * clean up main * simplify logs * optimize profile picture fetching fixes refetches on tab switch * update claude md * refactor irc.dart * update copilot instructions with essential commands and project structure details * implement message sending state management and UI updates * refactor notification handling and add copy-paste functionality in chat * refactor AlertMessage to support vertical layout and optional padding * refactor error messages for consistency and clarity across various components * refactor chat layout to use draggable divider and improve chat width settings * refactor Uptime widget to use SharedTimerService for synchronized updates * refactor search results components to handle null future states gracefully * refactor loading indicators to use skeleton loaders for improved user experience * refactor UI components for improved layout and responsiveness, enhance skeleton loaders, and streamline padding adjustments * refactor: replace manual blur effects with BlurredContainer for consistency and reusability * refactor: enhance JavaScript execution and error handling in WebView components * refactor: replace app bar with blurred container for improved UI consistency across screens * refactor: streamline video chat layout and enhance PiP drag gesture functionality * revert some app bar changes * refactor: implement Picture-in-Picture drag functionality in VideoChat * refactor: pass currentChannelId to IRCMessage and ChatMessage for improved context * fix large thubmnail width * chore: update Gradle and Kotlin plugin versions for improved compatibility * changes from v4.10.0 branch * feat: integrate AnimatedScrollBorder for improved UI responsiveness across various screens * refactor: update SectionHeader styling and improve theme management * feat: add pinned section to StreamsList and enhance skeleton loader padding * feat: add repository guidelines for project structure, coding style, testing, and security * feat: enhance StreamCard UI with BlurredContainer and adjust border width in theme * feat: implement unfocusInput and safeRequestFocus methods to manage text field focus behavior * feat: enhance Picture-in-Picture drag interactions with haptic feedback and smooth animations * refactor: improve code formatting and readability across multiple files * feat: implement picture-in-picture mode toggle and state management for video playback * feat: reset PiP mode state when pausing video playback * feat: add custom app bar with profile picture and stream info for video chat * feat: convert multiple settings screens to use StatefulWidget and add animated scroll borders * feat: update blur configuration for adaptive alpha based on theme * fix: adjust default font size in SectionHeader widget * feat: enhance PiP mode with drag overlay instruction and UI improvements * fix: improve badge rendering with consistent margin and border for current channel * refactor: replace BackdropFilter with BlurredContainer for improved clarity and maintainability * fix: reduce background transparency in Uptime widget for better visibility * feat: enhance photo view dialog with full resolution toggle and blurred background * fix: reset chat delay to 0 when auto sync is enabled and update settings title for clarity * fix: adjust border width in theme to improve consistency * feat: add forceDarkMode option to BlurredContainer for improved theme adaptability * feat: implement offline followed channels feature with UI integration and settings option * fix: increase font size and weight for offline status text for better readability * feat: remove offline pinned channels feature and update related UI components * feat: optimize offline channels loading behavior based on expansion state * fix: improve clarity and consistency in repository guidelines formatting * feat: update full resolution URL handling and button visibility logic * feat: replace app bar with blurred version in chat-only mode and add animated scroll border * feat: refactor video chat layout for improved chat and video display in landscape mode * feat: remove bottom bar visibility setting and adjust chat layout accordingly * fix: simplify condition for displaying offline channels section in following tab * feat: enhance reply thread display with indentation and reply icon * feat: implement showModalBottomSheetWithProperFocus for improved focus handling * feat: add gradient direction support to BlurredContainer for enhanced visual effects * feat: enhance NavigationBar and Theme settings for improved visual consistency * feat: add gradient direction support to BlurredContainer in VideoChat for enhanced visual effects * chore: update .gitignore to include .cursor file for better environment management * fix: update PiP drag gesture conditions to include video paused state for better user experience * refactor: replace ScrollController with SettingsPageLayout in settings screens for improved layout management * refactor: centralize orientation handling by introducing OrientationUtils for improved readability and maintainability * refactor: replace OrientationUtils with ContextExtensions for streamlined context-based access to theme, layout, and API dependencies * refactor: improve video chat UI by adjusting title layout and adding stream info tooltips for better user experience * refactor: adjust titleSpacing in theme and navigation components for improved layout consistency * refactor: update stream info timer handling and overlay management for improved UI responsiveness * refactor: enhance stream info timer logic and overlay visibility management for chat-only mode * refactor: enhance input decoration theme in FrostyThemes for improved visual consistency and responsiveness * refactor: adjust inputDecorationTheme padding in FrostyThemes for improved visual consistency * refactor: enhance video overlay management by including video preview overlay in hideElements for improved UI consistency * refactor: improve chat bottom bar padding and video chat layout for enhanced UI consistency * refactor: adjust chat padding to account for device bottom insets for improved layout consistency * refactor: update text styles in FrostyThemes for improved visual consistency across UI components * refactor: update iOS minimum deployment target to 13.0 for improved compatibility * refactor: adjust chat bottom padding based on emote menu visibility for improved layout consistency * refactor: adjust padding values in StreamsList for improved layout consistency * refactor: replace Padding with AnimatedPadding in Chat for smoother layout transitions refactor: replace Container with AnimatedContainer in BlurredContainer for smoother animations * refactor: remove unnecessary radius property from ProfilePicture in OfflineChannelCard for cleaner code * refactor: enhance chat bottom bar suffix icon to display message delay with tooltip for improved user experience * refactor: update hint text and tooltips in chat bottom bar and search for improved clarity * refactor: simplify notification display logic and enhance chat input behavior for improved user experience * refactor: enhance layout consistency by adjusting spacing in various components across the channel and home screens * refactor: introduce LiveIndicator widget and adjust spacing in channel and video components for improved layout consistency * refactor: remove monospace font family from chat bottom bar for improved text rendering * refactor: reduce notification animation duration and change dismiss direction for improved user experience * refactor: replace VideoBar with StreamInfoBar in video components for improved layout and consistency * refactor: adjust font sizes and spacing in StreamInfoBar for improved layout consistency * refactor: standardize font sizes and update gradient stops in video components for improved visual consistency * refactor: update tooltip padding and background color in theme for improved visual consistency * refactor: enhance tooltip behavior and standardize font sizes in StreamInfoBar and related components for improved visual consistency * refactor: add showThumbnail option to LargeStreamCardSkeletonLoader for improved layout flexibility * refactor: add StreamInfoBarSkeletonLoader for improved layout consistency in stream components * refactor: add shadow effects to icons and text in StreamInfoBar and VideoOverlay for improved visual depth * refactor: update defaultOverlayOpacity to 0.0 for improved overlay behavior * fix: correct stream info text color on overlay * refactor: implement a new color picker dialog with random color generation for enhanced user experience * refactor: adjust gradient colors and stops in VideoOverlay for improved visual consistency * refactor: refine gradient colors and stops in VideoOverlay for enhanced visual clarity * refactor: add isCompact parameter to StreamInfoBar for responsive text sizing * fix: update tooltip background color to use surface color for better contrast * feat: add shared chat mode support in chat store and update StreamInfoBar for visual indication * refactor: disable debug print for IRC messages to reduce log clutter * feat: implement chat color selection feature with user color management in chat settings * refactor: replace color adjustment logic with new contrast-aware utility for chat names * refactor: simplify chat details UI by replacing list tiles with action cards and removing unused clear dialog * refactor: enhance chat details UI by improving time formatting and adding label styling to action cards * refactor: update chat color terminology to 'Username color' for clarity in UI * refactor: enhance chat details UI by introducing active chat modes display and improving layout structure * refactor: improve chat details layout by replacing ListTile with Padding and adding a Divider for better visual separation * refactor: remove chat notifications positioning setting and adjust notification alignment in video chat * refactor: streamline StreamInfoBar component by consolidating offline handling and improving layout for better readability * refactor: enhance StreamInfoBar by adding tooltip for streamer name and improving text overflow handling * refactor: adjust tooltip display duration in StreamInfoBar and update theme configuration * refactor: adjust margin and padding in StreamCard for improved layout consistency * chore: update dependencies in pubspec.yaml and pubspec.lock for Firebase and other packages * template * chore: update iOS platform version to 15.0 and Firebase dependencies to 12.2.0 * refactor: simplify StreamInfoBar layout by reducing nested widgets and improving text color handling * format * feat: enhance Channel model and StreamInfoBar to support offline channel details * feat: add offline indicator and improve StreamInfoBar layout for better offline channel display * fix: adjust icon color opacity in StreamInfoBar for improved visibility * feat: enhance dismissal animation in FrostyPhotoViewDialog to track swipe direction * docs: update copilot instructions for clarity and additional error handling details * refactor: optimize latency tooltip layout and improve offline indicator styling in VideoOverlay * feat: implement shared chat asset fetching and participant management in ChatAssetsStore * refactor: replace Observer with Builder for improved widget rebuilding in VideoOverlay * refactor: update StreamInfoBar border styling and adjust layout in VideoOverlay for improved visual consistency * feat: add showTextShadows property to StreamInfoBar for customizable text shadow display * refactor: adjust layout in VideoOverlay by adding padding to improve spacing and visual consistency * refactor: enhance VideoOverlay gradients and layout for improved visual hierarchy and user experience * refactor: reduce vertical padding in VideoOverlay for improved layout consistency * refactor: remove overlay opacity settings from VideoSettings and SettingsStore for simplification * refactor: improve text overlay transition in VideoChat for better user experience * Revert "refactor: improve text overlay transition in VideoChat for better user experience" This reverts commit fd16ff5ec30ec266157e5c8a9d4a6090c91717f6. * refactor: wrap videoOverlay in ColoredBox for improved layout handling * refactor: optimize animation duration and transition curves in VideoChat for smoother interactions * refactor: dispose searchScrollController in HomeStoreBase to prevent memory leaks * refactor: simplify gradient definitions in VideoOverlay for improved readability and maintainability * refactor: remove 'Offline' text overlay from VideoOverlay for cleaner UI * refactor: add refresh functionality for assets in ChatDetails with loading indicators * refactor: update visibility conditions for uptime, viewer count, and category display in StreamInfoBar * refactor: replace AlertDialog with FrostyDialog for consistent dialog styling across the application * refactor: enhance layout handling in FrostyPageView to prevent overflow during height transitions * refactor: replace ColorPickerDialog with AccentColorPickerDialog for improved color selection experience * refactor: replace theme and accent color settings with dedicated components for improved modularity and readability * refactor: replace ElevatedButton with TextButton for consistent button styling across dialogs * refactor: integrate MobX Observer for reactive state management in settings widgets * refactor: update theme and dialog components for improved styling and consistency * refactor: enhance dialog styling with rounded corners and border in theme configuration * refactor: improve dialog messages for unauthorized access handling * refactor: update bodyLarge text style in theme configuration to include font weight * refactor: standardize Divider usage and adjust theme styles for improved consistency * refactor: adjust Divider properties and theme styles for enhanced visual consistency * chore: remove GEMINI.md file as it is no longer needed for project documentation * refactor: enhance token validation and reconnect logic in AuthBase for improved error handling * format * refactor: integrate landscape cutout settings into VideoChat layout for improved responsiveness * refactor: implement app lifecycle handling in VideoChat and enhance stream info update logic in VideoStore * refactor: update landscape cutout conditionals in VideoChat layout for improved responsiveness * update AGENTS.md * add scrollbar to search * fix scrolling exception * update CLAUDE.md * 5 auth reconnect attemps then log out * increase reply max lines to 2 * simplify and improve reply formatting * add prime icon * better draggable divider * support draggable divider in fullscreen overlay chat * add text shadow in fullscreen chat overlay mode * format * add landscape checks * video store optimization attempts * Dispose WebViewController and remove JavaScript channels properly * Track and cleanup all MutationObservers to prevent accumulation * Throttle latency updates to once per 5 seconds (reduces CPU load) * Add timeout protection and null checks for robustness * Prevent duplicate event listeners on page reloads * double tap divider to reset * Revert "video store optimization attempts" This reverts commit b1df7b0de473543283211a489dca698d9d241857. * optimize video store attempt 2 * Revert "double tap divider to reset" This reverts commit aeb26a433500ec71f822794835e927018ee59e1e. * optimize latency listener to open the menu and check every 20 secconds * more optimizations * hard refresh * abbreviate latency * fix lint * improve hide default overlay * fix chat no longer reconnecting with chat delay * refine chat alerts * fix historical message missing badges and emotes on initial connection * parallelize * revert * add reconnect button inline action * refactor: replace Scrollbar with FrostyScrollbar across chat and settings screens for consistent styling * tweak chat details menu * add scrollbar to release notes, renames for consistency * fix duplicate message case * fix chat delay alerts in auto sync mode * add regex for numeric strings and enhance display name formatting logic * exterminate borders * refactor: simplify active chat modes display in chat details screen * feat: enhance chat input button with delay notification and disable state * fix: wrap chat in SafeArea to prevent UI overflow issues * refactor: remove divider line from video chat and update draggable divider visibility logic * persist overlay in pip mode * fix: update chat delay handling and notifications in chat bottom bar * fix: update chat overlay visibility logic to respect fullscreen settings * tap to show deleted message * fix: prevent accidental chat scrolling when accessing system UI in landscape mode * show latency in portrait * fix: enhance chat delay notifications with dynamic delay time * docs: update CLAUDE.md for improved environment variable instructions and architecture overview * fix: improve chat delay countdown management and message handling * add preliminary release notes * remove agents.md * update lockfile * add initial multi chat feature * add option to persist multi chat tabs * add remove confirmation dialog * improve add chat design * lazy-load tabs * create global assets store to dedupe global asset fetching * improve tab design/styles * update notes * use frosty dialog * update claude md * tweak * add ability to reorder tabs * resolve conflict * merge cleanup * format * update release notes * add chat delay sync completion tracking to prevent countdown re-appearance * add tests * fix * update release notes * bump
2026-01-01 22:28:17 -05:00
/// Common type aliases to reduce repetition
typedef JsonMap = Map<String, dynamic>;
typedef JsonList = List<dynamic>;
typedef QueryParams = Map<String, dynamic>;
typedef ApiHeaders = Map<String, String>;
/// Custom API exceptions for better error handling
class ApiException implements Exception {
final String message;
final int? statusCode;
final DioExceptionType? type;
const ApiException(this.message, [this.statusCode, this.type]);
@override
String toString() => 'ApiException: $message';
}
class NetworkException extends ApiException {
const NetworkException(String message)
: super(message, null, DioExceptionType.connectionError);
}
class TimeoutException extends ApiException {
const TimeoutException(String message)
: super(message, null, DioExceptionType.connectionTimeout);
}
class ServerException extends ApiException {
const ServerException(String message, int statusCode)
: super(message, statusCode, DioExceptionType.badResponse);
}
class NotFoundException extends ApiException {
const NotFoundException(String message)
: super(message, 404, DioExceptionType.badResponse);
}
class UnauthorizedException extends ApiException {
const UnauthorizedException(String message)
: super(message, 401, DioExceptionType.badResponse);
}
/// Base API client to eliminate code duplication across API services
abstract class BaseApiClient {
final Dio _dio;
final String baseUrl;
const BaseApiClient(this._dio, this.baseUrl);
/// Builds the full URL, handling both relative endpoints and full URLs
String _buildUrl(String endpoint) {
// If endpoint is already a full URL (starts with http:// or https://), use it as-is
if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {
return endpoint;
}
// Otherwise, concatenate with base URL
return '$baseUrl$endpoint';
}
/// Generic GET request with common error handling
Future<T> get<T>(
String endpoint, {
QueryParams? queryParameters,
ApiHeaders? headers,
CancelToken? cancelToken,
}) async {
try {
final url = _buildUrl(endpoint);
final response = await _dio.get(
url,
queryParameters: queryParameters,
options: Options(headers: headers),
cancelToken: cancelToken,
);
return response.data as T;
} on DioException catch (e) {
throw _handleError(e);
}
}
/// Generic POST request with common error handling
Future<T> post<T>(
String endpoint, {
dynamic data,
QueryParams? queryParameters,
ApiHeaders? headers,
CancelToken? cancelToken,
}) async {
try {
final url = _buildUrl(endpoint);
final response = await _dio.post(
url,
data: data,
queryParameters: queryParameters,
options: Options(headers: headers),
cancelToken: cancelToken,
);
return response.data as T;
} on DioException catch (e) {
throw _handleError(e);
}
}
/// Generic PUT request with common error handling
Future<T> put<T>(
String endpoint, {
dynamic data,
QueryParams? queryParameters,
ApiHeaders? headers,
CancelToken? cancelToken,
}) async {
try {
final url = _buildUrl(endpoint);
final response = await _dio.put(
url,
data: data,
queryParameters: queryParameters,
options: Options(headers: headers),
cancelToken: cancelToken,
);
return response.data as T;
} on DioException catch (e) {
throw _handleError(e);
}
}
/// Generic DELETE request with common error handling
Future<T> delete<T>(
String endpoint, {
QueryParams? queryParameters,
ApiHeaders? headers,
CancelToken? cancelToken,
}) async {
try {
final url = _buildUrl(endpoint);
final response = await _dio.delete(
url,
queryParameters: queryParameters,
options: Options(headers: headers),
cancelToken: cancelToken,
);
return response.data as T;
} on DioException catch (e) {
throw _handleError(e);
}
}
/// Check if response indicates success (useful for status-only operations)
bool isSuccessResponse(Response response) {
return response.statusCode != null &&
response.statusCode! >= 200 &&
response.statusCode! < 300;
}
/// Converts DioException to appropriate ApiException subtype
ApiException _handleError(DioException error) {
final exception = switch (error.type) {
DioExceptionType.connectionTimeout ||
DioExceptionType.sendTimeout ||
DioExceptionType.receiveTimeout ||
DioExceptionType.transformTimeout =>
TimeoutException(_getTimeoutMessage(error.type)),
DioExceptionType.connectionError => NetworkException(
'No internet connection. Please check your network.',
),
DioExceptionType.badResponse => _handleHttpError(error),
DioExceptionType.cancel => ApiException('Request was cancelled'),
DioExceptionType.badCertificate =>
ApiException('Security certificate error'),
DioExceptionType.unknown =>
ApiException(error.message ?? 'An unexpected error occurred'),
};
// Record server errors and unexpected failures to Crashlytics.
// Skip timeouts, network errors (normal offline conditions), 401s, and cancellations.
if (exception is ServerException ||
error.type == DioExceptionType.unknown ||
error.type == DioExceptionType.badCertificate) {
try {
FirebaseCrashlytics.instance.recordError(
exception,
error.stackTrace,
reason: '${error.requestOptions.method} ${error.requestOptions.uri}',
);
} catch (_) {
// Firebase may not be initialized (e.g., in tests).
}
v5 (#463) * migrate to dio * ignore folders * simplify twitch api headers handling * clean up main * simplify logs * optimize profile picture fetching fixes refetches on tab switch * update claude md * refactor irc.dart * update copilot instructions with essential commands and project structure details * implement message sending state management and UI updates * refactor notification handling and add copy-paste functionality in chat * refactor AlertMessage to support vertical layout and optional padding * refactor error messages for consistency and clarity across various components * refactor chat layout to use draggable divider and improve chat width settings * refactor Uptime widget to use SharedTimerService for synchronized updates * refactor search results components to handle null future states gracefully * refactor loading indicators to use skeleton loaders for improved user experience * refactor UI components for improved layout and responsiveness, enhance skeleton loaders, and streamline padding adjustments * refactor: replace manual blur effects with BlurredContainer for consistency and reusability * refactor: enhance JavaScript execution and error handling in WebView components * refactor: replace app bar with blurred container for improved UI consistency across screens * refactor: streamline video chat layout and enhance PiP drag gesture functionality * revert some app bar changes * refactor: implement Picture-in-Picture drag functionality in VideoChat * refactor: pass currentChannelId to IRCMessage and ChatMessage for improved context * fix large thubmnail width * chore: update Gradle and Kotlin plugin versions for improved compatibility * changes from v4.10.0 branch * feat: integrate AnimatedScrollBorder for improved UI responsiveness across various screens * refactor: update SectionHeader styling and improve theme management * feat: add pinned section to StreamsList and enhance skeleton loader padding * feat: add repository guidelines for project structure, coding style, testing, and security * feat: enhance StreamCard UI with BlurredContainer and adjust border width in theme * feat: implement unfocusInput and safeRequestFocus methods to manage text field focus behavior * feat: enhance Picture-in-Picture drag interactions with haptic feedback and smooth animations * refactor: improve code formatting and readability across multiple files * feat: implement picture-in-picture mode toggle and state management for video playback * feat: reset PiP mode state when pausing video playback * feat: add custom app bar with profile picture and stream info for video chat * feat: convert multiple settings screens to use StatefulWidget and add animated scroll borders * feat: update blur configuration for adaptive alpha based on theme * fix: adjust default font size in SectionHeader widget * feat: enhance PiP mode with drag overlay instruction and UI improvements * fix: improve badge rendering with consistent margin and border for current channel * refactor: replace BackdropFilter with BlurredContainer for improved clarity and maintainability * fix: reduce background transparency in Uptime widget for better visibility * feat: enhance photo view dialog with full resolution toggle and blurred background * fix: reset chat delay to 0 when auto sync is enabled and update settings title for clarity * fix: adjust border width in theme to improve consistency * feat: add forceDarkMode option to BlurredContainer for improved theme adaptability * feat: implement offline followed channels feature with UI integration and settings option * fix: increase font size and weight for offline status text for better readability * feat: remove offline pinned channels feature and update related UI components * feat: optimize offline channels loading behavior based on expansion state * fix: improve clarity and consistency in repository guidelines formatting * feat: update full resolution URL handling and button visibility logic * feat: replace app bar with blurred version in chat-only mode and add animated scroll border * feat: refactor video chat layout for improved chat and video display in landscape mode * feat: remove bottom bar visibility setting and adjust chat layout accordingly * fix: simplify condition for displaying offline channels section in following tab * feat: enhance reply thread display with indentation and reply icon * feat: implement showModalBottomSheetWithProperFocus for improved focus handling * feat: add gradient direction support to BlurredContainer for enhanced visual effects * feat: enhance NavigationBar and Theme settings for improved visual consistency * feat: add gradient direction support to BlurredContainer in VideoChat for enhanced visual effects * chore: update .gitignore to include .cursor file for better environment management * fix: update PiP drag gesture conditions to include video paused state for better user experience * refactor: replace ScrollController with SettingsPageLayout in settings screens for improved layout management * refactor: centralize orientation handling by introducing OrientationUtils for improved readability and maintainability * refactor: replace OrientationUtils with ContextExtensions for streamlined context-based access to theme, layout, and API dependencies * refactor: improve video chat UI by adjusting title layout and adding stream info tooltips for better user experience * refactor: adjust titleSpacing in theme and navigation components for improved layout consistency * refactor: update stream info timer handling and overlay management for improved UI responsiveness * refactor: enhance stream info timer logic and overlay visibility management for chat-only mode * refactor: enhance input decoration theme in FrostyThemes for improved visual consistency and responsiveness * refactor: adjust inputDecorationTheme padding in FrostyThemes for improved visual consistency * refactor: enhance video overlay management by including video preview overlay in hideElements for improved UI consistency * refactor: improve chat bottom bar padding and video chat layout for enhanced UI consistency * refactor: adjust chat padding to account for device bottom insets for improved layout consistency * refactor: update text styles in FrostyThemes for improved visual consistency across UI components * refactor: update iOS minimum deployment target to 13.0 for improved compatibility * refactor: adjust chat bottom padding based on emote menu visibility for improved layout consistency * refactor: adjust padding values in StreamsList for improved layout consistency * refactor: replace Padding with AnimatedPadding in Chat for smoother layout transitions refactor: replace Container with AnimatedContainer in BlurredContainer for smoother animations * refactor: remove unnecessary radius property from ProfilePicture in OfflineChannelCard for cleaner code * refactor: enhance chat bottom bar suffix icon to display message delay with tooltip for improved user experience * refactor: update hint text and tooltips in chat bottom bar and search for improved clarity * refactor: simplify notification display logic and enhance chat input behavior for improved user experience * refactor: enhance layout consistency by adjusting spacing in various components across the channel and home screens * refactor: introduce LiveIndicator widget and adjust spacing in channel and video components for improved layout consistency * refactor: remove monospace font family from chat bottom bar for improved text rendering * refactor: reduce notification animation duration and change dismiss direction for improved user experience * refactor: replace VideoBar with StreamInfoBar in video components for improved layout and consistency * refactor: adjust font sizes and spacing in StreamInfoBar for improved layout consistency * refactor: standardize font sizes and update gradient stops in video components for improved visual consistency * refactor: update tooltip padding and background color in theme for improved visual consistency * refactor: enhance tooltip behavior and standardize font sizes in StreamInfoBar and related components for improved visual consistency * refactor: add showThumbnail option to LargeStreamCardSkeletonLoader for improved layout flexibility * refactor: add StreamInfoBarSkeletonLoader for improved layout consistency in stream components * refactor: add shadow effects to icons and text in StreamInfoBar and VideoOverlay for improved visual depth * refactor: update defaultOverlayOpacity to 0.0 for improved overlay behavior * fix: correct stream info text color on overlay * refactor: implement a new color picker dialog with random color generation for enhanced user experience * refactor: adjust gradient colors and stops in VideoOverlay for improved visual consistency * refactor: refine gradient colors and stops in VideoOverlay for enhanced visual clarity * refactor: add isCompact parameter to StreamInfoBar for responsive text sizing * fix: update tooltip background color to use surface color for better contrast * feat: add shared chat mode support in chat store and update StreamInfoBar for visual indication * refactor: disable debug print for IRC messages to reduce log clutter * feat: implement chat color selection feature with user color management in chat settings * refactor: replace color adjustment logic with new contrast-aware utility for chat names * refactor: simplify chat details UI by replacing list tiles with action cards and removing unused clear dialog * refactor: enhance chat details UI by improving time formatting and adding label styling to action cards * refactor: update chat color terminology to 'Username color' for clarity in UI * refactor: enhance chat details UI by introducing active chat modes display and improving layout structure * refactor: improve chat details layout by replacing ListTile with Padding and adding a Divider for better visual separation * refactor: remove chat notifications positioning setting and adjust notification alignment in video chat * refactor: streamline StreamInfoBar component by consolidating offline handling and improving layout for better readability * refactor: enhance StreamInfoBar by adding tooltip for streamer name and improving text overflow handling * refactor: adjust tooltip display duration in StreamInfoBar and update theme configuration * refactor: adjust margin and padding in StreamCard for improved layout consistency * chore: update dependencies in pubspec.yaml and pubspec.lock for Firebase and other packages * template * chore: update iOS platform version to 15.0 and Firebase dependencies to 12.2.0 * refactor: simplify StreamInfoBar layout by reducing nested widgets and improving text color handling * format * feat: enhance Channel model and StreamInfoBar to support offline channel details * feat: add offline indicator and improve StreamInfoBar layout for better offline channel display * fix: adjust icon color opacity in StreamInfoBar for improved visibility * feat: enhance dismissal animation in FrostyPhotoViewDialog to track swipe direction * docs: update copilot instructions for clarity and additional error handling details * refactor: optimize latency tooltip layout and improve offline indicator styling in VideoOverlay * feat: implement shared chat asset fetching and participant management in ChatAssetsStore * refactor: replace Observer with Builder for improved widget rebuilding in VideoOverlay * refactor: update StreamInfoBar border styling and adjust layout in VideoOverlay for improved visual consistency * feat: add showTextShadows property to StreamInfoBar for customizable text shadow display * refactor: adjust layout in VideoOverlay by adding padding to improve spacing and visual consistency * refactor: enhance VideoOverlay gradients and layout for improved visual hierarchy and user experience * refactor: reduce vertical padding in VideoOverlay for improved layout consistency * refactor: remove overlay opacity settings from VideoSettings and SettingsStore for simplification * refactor: improve text overlay transition in VideoChat for better user experience * Revert "refactor: improve text overlay transition in VideoChat for better user experience" This reverts commit fd16ff5ec30ec266157e5c8a9d4a6090c91717f6. * refactor: wrap videoOverlay in ColoredBox for improved layout handling * refactor: optimize animation duration and transition curves in VideoChat for smoother interactions * refactor: dispose searchScrollController in HomeStoreBase to prevent memory leaks * refactor: simplify gradient definitions in VideoOverlay for improved readability and maintainability * refactor: remove 'Offline' text overlay from VideoOverlay for cleaner UI * refactor: add refresh functionality for assets in ChatDetails with loading indicators * refactor: update visibility conditions for uptime, viewer count, and category display in StreamInfoBar * refactor: replace AlertDialog with FrostyDialog for consistent dialog styling across the application * refactor: enhance layout handling in FrostyPageView to prevent overflow during height transitions * refactor: replace ColorPickerDialog with AccentColorPickerDialog for improved color selection experience * refactor: replace theme and accent color settings with dedicated components for improved modularity and readability * refactor: replace ElevatedButton with TextButton for consistent button styling across dialogs * refactor: integrate MobX Observer for reactive state management in settings widgets * refactor: update theme and dialog components for improved styling and consistency * refactor: enhance dialog styling with rounded corners and border in theme configuration * refactor: improve dialog messages for unauthorized access handling * refactor: update bodyLarge text style in theme configuration to include font weight * refactor: standardize Divider usage and adjust theme styles for improved consistency * refactor: adjust Divider properties and theme styles for enhanced visual consistency * chore: remove GEMINI.md file as it is no longer needed for project documentation * refactor: enhance token validation and reconnect logic in AuthBase for improved error handling * format * refactor: integrate landscape cutout settings into VideoChat layout for improved responsiveness * refactor: implement app lifecycle handling in VideoChat and enhance stream info update logic in VideoStore * refactor: update landscape cutout conditionals in VideoChat layout for improved responsiveness * update AGENTS.md * add scrollbar to search * fix scrolling exception * update CLAUDE.md * 5 auth reconnect attemps then log out * increase reply max lines to 2 * simplify and improve reply formatting * add prime icon * better draggable divider * support draggable divider in fullscreen overlay chat * add text shadow in fullscreen chat overlay mode * format * add landscape checks * video store optimization attempts * Dispose WebViewController and remove JavaScript channels properly * Track and cleanup all MutationObservers to prevent accumulation * Throttle latency updates to once per 5 seconds (reduces CPU load) * Add timeout protection and null checks for robustness * Prevent duplicate event listeners on page reloads * double tap divider to reset * Revert "video store optimization attempts" This reverts commit b1df7b0de473543283211a489dca698d9d241857. * optimize video store attempt 2 * Revert "double tap divider to reset" This reverts commit aeb26a433500ec71f822794835e927018ee59e1e. * optimize latency listener to open the menu and check every 20 secconds * more optimizations * hard refresh * abbreviate latency * fix lint * improve hide default overlay * fix chat no longer reconnecting with chat delay * refine chat alerts * fix historical message missing badges and emotes on initial connection * parallelize * revert * add reconnect button inline action * refactor: replace Scrollbar with FrostyScrollbar across chat and settings screens for consistent styling * tweak chat details menu * add scrollbar to release notes, renames for consistency * fix duplicate message case * fix chat delay alerts in auto sync mode * add regex for numeric strings and enhance display name formatting logic * exterminate borders * refactor: simplify active chat modes display in chat details screen * feat: enhance chat input button with delay notification and disable state * fix: wrap chat in SafeArea to prevent UI overflow issues * refactor: remove divider line from video chat and update draggable divider visibility logic * persist overlay in pip mode * fix: update chat delay handling and notifications in chat bottom bar * fix: update chat overlay visibility logic to respect fullscreen settings * tap to show deleted message * fix: prevent accidental chat scrolling when accessing system UI in landscape mode * show latency in portrait * fix: enhance chat delay notifications with dynamic delay time * docs: update CLAUDE.md for improved environment variable instructions and architecture overview * fix: improve chat delay countdown management and message handling * add preliminary release notes * remove agents.md * update lockfile * add initial multi chat feature * add option to persist multi chat tabs * add remove confirmation dialog * improve add chat design * lazy-load tabs * create global assets store to dedupe global asset fetching * improve tab design/styles * update notes * use frosty dialog * update claude md * tweak * add ability to reorder tabs * resolve conflict * merge cleanup * format * update release notes * add chat delay sync completion tracking to prevent countdown re-appearance * add tests * fix * update release notes * bump
2026-01-01 22:28:17 -05:00
}
return exception;
v5 (#463) * migrate to dio * ignore folders * simplify twitch api headers handling * clean up main * simplify logs * optimize profile picture fetching fixes refetches on tab switch * update claude md * refactor irc.dart * update copilot instructions with essential commands and project structure details * implement message sending state management and UI updates * refactor notification handling and add copy-paste functionality in chat * refactor AlertMessage to support vertical layout and optional padding * refactor error messages for consistency and clarity across various components * refactor chat layout to use draggable divider and improve chat width settings * refactor Uptime widget to use SharedTimerService for synchronized updates * refactor search results components to handle null future states gracefully * refactor loading indicators to use skeleton loaders for improved user experience * refactor UI components for improved layout and responsiveness, enhance skeleton loaders, and streamline padding adjustments * refactor: replace manual blur effects with BlurredContainer for consistency and reusability * refactor: enhance JavaScript execution and error handling in WebView components * refactor: replace app bar with blurred container for improved UI consistency across screens * refactor: streamline video chat layout and enhance PiP drag gesture functionality * revert some app bar changes * refactor: implement Picture-in-Picture drag functionality in VideoChat * refactor: pass currentChannelId to IRCMessage and ChatMessage for improved context * fix large thubmnail width * chore: update Gradle and Kotlin plugin versions for improved compatibility * changes from v4.10.0 branch * feat: integrate AnimatedScrollBorder for improved UI responsiveness across various screens * refactor: update SectionHeader styling and improve theme management * feat: add pinned section to StreamsList and enhance skeleton loader padding * feat: add repository guidelines for project structure, coding style, testing, and security * feat: enhance StreamCard UI with BlurredContainer and adjust border width in theme * feat: implement unfocusInput and safeRequestFocus methods to manage text field focus behavior * feat: enhance Picture-in-Picture drag interactions with haptic feedback and smooth animations * refactor: improve code formatting and readability across multiple files * feat: implement picture-in-picture mode toggle and state management for video playback * feat: reset PiP mode state when pausing video playback * feat: add custom app bar with profile picture and stream info for video chat * feat: convert multiple settings screens to use StatefulWidget and add animated scroll borders * feat: update blur configuration for adaptive alpha based on theme * fix: adjust default font size in SectionHeader widget * feat: enhance PiP mode with drag overlay instruction and UI improvements * fix: improve badge rendering with consistent margin and border for current channel * refactor: replace BackdropFilter with BlurredContainer for improved clarity and maintainability * fix: reduce background transparency in Uptime widget for better visibility * feat: enhance photo view dialog with full resolution toggle and blurred background * fix: reset chat delay to 0 when auto sync is enabled and update settings title for clarity * fix: adjust border width in theme to improve consistency * feat: add forceDarkMode option to BlurredContainer for improved theme adaptability * feat: implement offline followed channels feature with UI integration and settings option * fix: increase font size and weight for offline status text for better readability * feat: remove offline pinned channels feature and update related UI components * feat: optimize offline channels loading behavior based on expansion state * fix: improve clarity and consistency in repository guidelines formatting * feat: update full resolution URL handling and button visibility logic * feat: replace app bar with blurred version in chat-only mode and add animated scroll border * feat: refactor video chat layout for improved chat and video display in landscape mode * feat: remove bottom bar visibility setting and adjust chat layout accordingly * fix: simplify condition for displaying offline channels section in following tab * feat: enhance reply thread display with indentation and reply icon * feat: implement showModalBottomSheetWithProperFocus for improved focus handling * feat: add gradient direction support to BlurredContainer for enhanced visual effects * feat: enhance NavigationBar and Theme settings for improved visual consistency * feat: add gradient direction support to BlurredContainer in VideoChat for enhanced visual effects * chore: update .gitignore to include .cursor file for better environment management * fix: update PiP drag gesture conditions to include video paused state for better user experience * refactor: replace ScrollController with SettingsPageLayout in settings screens for improved layout management * refactor: centralize orientation handling by introducing OrientationUtils for improved readability and maintainability * refactor: replace OrientationUtils with ContextExtensions for streamlined context-based access to theme, layout, and API dependencies * refactor: improve video chat UI by adjusting title layout and adding stream info tooltips for better user experience * refactor: adjust titleSpacing in theme and navigation components for improved layout consistency * refactor: update stream info timer handling and overlay management for improved UI responsiveness * refactor: enhance stream info timer logic and overlay visibility management for chat-only mode * refactor: enhance input decoration theme in FrostyThemes for improved visual consistency and responsiveness * refactor: adjust inputDecorationTheme padding in FrostyThemes for improved visual consistency * refactor: enhance video overlay management by including video preview overlay in hideElements for improved UI consistency * refactor: improve chat bottom bar padding and video chat layout for enhanced UI consistency * refactor: adjust chat padding to account for device bottom insets for improved layout consistency * refactor: update text styles in FrostyThemes for improved visual consistency across UI components * refactor: update iOS minimum deployment target to 13.0 for improved compatibility * refactor: adjust chat bottom padding based on emote menu visibility for improved layout consistency * refactor: adjust padding values in StreamsList for improved layout consistency * refactor: replace Padding with AnimatedPadding in Chat for smoother layout transitions refactor: replace Container with AnimatedContainer in BlurredContainer for smoother animations * refactor: remove unnecessary radius property from ProfilePicture in OfflineChannelCard for cleaner code * refactor: enhance chat bottom bar suffix icon to display message delay with tooltip for improved user experience * refactor: update hint text and tooltips in chat bottom bar and search for improved clarity * refactor: simplify notification display logic and enhance chat input behavior for improved user experience * refactor: enhance layout consistency by adjusting spacing in various components across the channel and home screens * refactor: introduce LiveIndicator widget and adjust spacing in channel and video components for improved layout consistency * refactor: remove monospace font family from chat bottom bar for improved text rendering * refactor: reduce notification animation duration and change dismiss direction for improved user experience * refactor: replace VideoBar with StreamInfoBar in video components for improved layout and consistency * refactor: adjust font sizes and spacing in StreamInfoBar for improved layout consistency * refactor: standardize font sizes and update gradient stops in video components for improved visual consistency * refactor: update tooltip padding and background color in theme for improved visual consistency * refactor: enhance tooltip behavior and standardize font sizes in StreamInfoBar and related components for improved visual consistency * refactor: add showThumbnail option to LargeStreamCardSkeletonLoader for improved layout flexibility * refactor: add StreamInfoBarSkeletonLoader for improved layout consistency in stream components * refactor: add shadow effects to icons and text in StreamInfoBar and VideoOverlay for improved visual depth * refactor: update defaultOverlayOpacity to 0.0 for improved overlay behavior * fix: correct stream info text color on overlay * refactor: implement a new color picker dialog with random color generation for enhanced user experience * refactor: adjust gradient colors and stops in VideoOverlay for improved visual consistency * refactor: refine gradient colors and stops in VideoOverlay for enhanced visual clarity * refactor: add isCompact parameter to StreamInfoBar for responsive text sizing * fix: update tooltip background color to use surface color for better contrast * feat: add shared chat mode support in chat store and update StreamInfoBar for visual indication * refactor: disable debug print for IRC messages to reduce log clutter * feat: implement chat color selection feature with user color management in chat settings * refactor: replace color adjustment logic with new contrast-aware utility for chat names * refactor: simplify chat details UI by replacing list tiles with action cards and removing unused clear dialog * refactor: enhance chat details UI by improving time formatting and adding label styling to action cards * refactor: update chat color terminology to 'Username color' for clarity in UI * refactor: enhance chat details UI by introducing active chat modes display and improving layout structure * refactor: improve chat details layout by replacing ListTile with Padding and adding a Divider for better visual separation * refactor: remove chat notifications positioning setting and adjust notification alignment in video chat * refactor: streamline StreamInfoBar component by consolidating offline handling and improving layout for better readability * refactor: enhance StreamInfoBar by adding tooltip for streamer name and improving text overflow handling * refactor: adjust tooltip display duration in StreamInfoBar and update theme configuration * refactor: adjust margin and padding in StreamCard for improved layout consistency * chore: update dependencies in pubspec.yaml and pubspec.lock for Firebase and other packages * template * chore: update iOS platform version to 15.0 and Firebase dependencies to 12.2.0 * refactor: simplify StreamInfoBar layout by reducing nested widgets and improving text color handling * format * feat: enhance Channel model and StreamInfoBar to support offline channel details * feat: add offline indicator and improve StreamInfoBar layout for better offline channel display * fix: adjust icon color opacity in StreamInfoBar for improved visibility * feat: enhance dismissal animation in FrostyPhotoViewDialog to track swipe direction * docs: update copilot instructions for clarity and additional error handling details * refactor: optimize latency tooltip layout and improve offline indicator styling in VideoOverlay * feat: implement shared chat asset fetching and participant management in ChatAssetsStore * refactor: replace Observer with Builder for improved widget rebuilding in VideoOverlay * refactor: update StreamInfoBar border styling and adjust layout in VideoOverlay for improved visual consistency * feat: add showTextShadows property to StreamInfoBar for customizable text shadow display * refactor: adjust layout in VideoOverlay by adding padding to improve spacing and visual consistency * refactor: enhance VideoOverlay gradients and layout for improved visual hierarchy and user experience * refactor: reduce vertical padding in VideoOverlay for improved layout consistency * refactor: remove overlay opacity settings from VideoSettings and SettingsStore for simplification * refactor: improve text overlay transition in VideoChat for better user experience * Revert "refactor: improve text overlay transition in VideoChat for better user experience" This reverts commit fd16ff5ec30ec266157e5c8a9d4a6090c91717f6. * refactor: wrap videoOverlay in ColoredBox for improved layout handling * refactor: optimize animation duration and transition curves in VideoChat for smoother interactions * refactor: dispose searchScrollController in HomeStoreBase to prevent memory leaks * refactor: simplify gradient definitions in VideoOverlay for improved readability and maintainability * refactor: remove 'Offline' text overlay from VideoOverlay for cleaner UI * refactor: add refresh functionality for assets in ChatDetails with loading indicators * refactor: update visibility conditions for uptime, viewer count, and category display in StreamInfoBar * refactor: replace AlertDialog with FrostyDialog for consistent dialog styling across the application * refactor: enhance layout handling in FrostyPageView to prevent overflow during height transitions * refactor: replace ColorPickerDialog with AccentColorPickerDialog for improved color selection experience * refactor: replace theme and accent color settings with dedicated components for improved modularity and readability * refactor: replace ElevatedButton with TextButton for consistent button styling across dialogs * refactor: integrate MobX Observer for reactive state management in settings widgets * refactor: update theme and dialog components for improved styling and consistency * refactor: enhance dialog styling with rounded corners and border in theme configuration * refactor: improve dialog messages for unauthorized access handling * refactor: update bodyLarge text style in theme configuration to include font weight * refactor: standardize Divider usage and adjust theme styles for improved consistency * refactor: adjust Divider properties and theme styles for enhanced visual consistency * chore: remove GEMINI.md file as it is no longer needed for project documentation * refactor: enhance token validation and reconnect logic in AuthBase for improved error handling * format * refactor: integrate landscape cutout settings into VideoChat layout for improved responsiveness * refactor: implement app lifecycle handling in VideoChat and enhance stream info update logic in VideoStore * refactor: update landscape cutout conditionals in VideoChat layout for improved responsiveness * update AGENTS.md * add scrollbar to search * fix scrolling exception * update CLAUDE.md * 5 auth reconnect attemps then log out * increase reply max lines to 2 * simplify and improve reply formatting * add prime icon * better draggable divider * support draggable divider in fullscreen overlay chat * add text shadow in fullscreen chat overlay mode * format * add landscape checks * video store optimization attempts * Dispose WebViewController and remove JavaScript channels properly * Track and cleanup all MutationObservers to prevent accumulation * Throttle latency updates to once per 5 seconds (reduces CPU load) * Add timeout protection and null checks for robustness * Prevent duplicate event listeners on page reloads * double tap divider to reset * Revert "video store optimization attempts" This reverts commit b1df7b0de473543283211a489dca698d9d241857. * optimize video store attempt 2 * Revert "double tap divider to reset" This reverts commit aeb26a433500ec71f822794835e927018ee59e1e. * optimize latency listener to open the menu and check every 20 secconds * more optimizations * hard refresh * abbreviate latency * fix lint * improve hide default overlay * fix chat no longer reconnecting with chat delay * refine chat alerts * fix historical message missing badges and emotes on initial connection * parallelize * revert * add reconnect button inline action * refactor: replace Scrollbar with FrostyScrollbar across chat and settings screens for consistent styling * tweak chat details menu * add scrollbar to release notes, renames for consistency * fix duplicate message case * fix chat delay alerts in auto sync mode * add regex for numeric strings and enhance display name formatting logic * exterminate borders * refactor: simplify active chat modes display in chat details screen * feat: enhance chat input button with delay notification and disable state * fix: wrap chat in SafeArea to prevent UI overflow issues * refactor: remove divider line from video chat and update draggable divider visibility logic * persist overlay in pip mode * fix: update chat delay handling and notifications in chat bottom bar * fix: update chat overlay visibility logic to respect fullscreen settings * tap to show deleted message * fix: prevent accidental chat scrolling when accessing system UI in landscape mode * show latency in portrait * fix: enhance chat delay notifications with dynamic delay time * docs: update CLAUDE.md for improved environment variable instructions and architecture overview * fix: improve chat delay countdown management and message handling * add preliminary release notes * remove agents.md * update lockfile * add initial multi chat feature * add option to persist multi chat tabs * add remove confirmation dialog * improve add chat design * lazy-load tabs * create global assets store to dedupe global asset fetching * improve tab design/styles * update notes * use frosty dialog * update claude md * tweak * add ability to reorder tabs * resolve conflict * merge cleanup * format * update release notes * add chat delay sync completion tracking to prevent countdown re-appearance * add tests * fix * update release notes * bump
2026-01-01 22:28:17 -05:00
}
/// Gets specific timeout message based on timeout type
String _getTimeoutMessage(DioExceptionType type) {
switch (type) {
case DioExceptionType.connectionTimeout:
return 'Connection timeout. Please try again.';
case DioExceptionType.sendTimeout:
return 'Upload timeout. Please try again.';
case DioExceptionType.receiveTimeout:
return 'Server response timeout. Please try again.';
case DioExceptionType.transformTimeout:
return 'Response processing timeout. Please try again.';
v5 (#463) * migrate to dio * ignore folders * simplify twitch api headers handling * clean up main * simplify logs * optimize profile picture fetching fixes refetches on tab switch * update claude md * refactor irc.dart * update copilot instructions with essential commands and project structure details * implement message sending state management and UI updates * refactor notification handling and add copy-paste functionality in chat * refactor AlertMessage to support vertical layout and optional padding * refactor error messages for consistency and clarity across various components * refactor chat layout to use draggable divider and improve chat width settings * refactor Uptime widget to use SharedTimerService for synchronized updates * refactor search results components to handle null future states gracefully * refactor loading indicators to use skeleton loaders for improved user experience * refactor UI components for improved layout and responsiveness, enhance skeleton loaders, and streamline padding adjustments * refactor: replace manual blur effects with BlurredContainer for consistency and reusability * refactor: enhance JavaScript execution and error handling in WebView components * refactor: replace app bar with blurred container for improved UI consistency across screens * refactor: streamline video chat layout and enhance PiP drag gesture functionality * revert some app bar changes * refactor: implement Picture-in-Picture drag functionality in VideoChat * refactor: pass currentChannelId to IRCMessage and ChatMessage for improved context * fix large thubmnail width * chore: update Gradle and Kotlin plugin versions for improved compatibility * changes from v4.10.0 branch * feat: integrate AnimatedScrollBorder for improved UI responsiveness across various screens * refactor: update SectionHeader styling and improve theme management * feat: add pinned section to StreamsList and enhance skeleton loader padding * feat: add repository guidelines for project structure, coding style, testing, and security * feat: enhance StreamCard UI with BlurredContainer and adjust border width in theme * feat: implement unfocusInput and safeRequestFocus methods to manage text field focus behavior * feat: enhance Picture-in-Picture drag interactions with haptic feedback and smooth animations * refactor: improve code formatting and readability across multiple files * feat: implement picture-in-picture mode toggle and state management for video playback * feat: reset PiP mode state when pausing video playback * feat: add custom app bar with profile picture and stream info for video chat * feat: convert multiple settings screens to use StatefulWidget and add animated scroll borders * feat: update blur configuration for adaptive alpha based on theme * fix: adjust default font size in SectionHeader widget * feat: enhance PiP mode with drag overlay instruction and UI improvements * fix: improve badge rendering with consistent margin and border for current channel * refactor: replace BackdropFilter with BlurredContainer for improved clarity and maintainability * fix: reduce background transparency in Uptime widget for better visibility * feat: enhance photo view dialog with full resolution toggle and blurred background * fix: reset chat delay to 0 when auto sync is enabled and update settings title for clarity * fix: adjust border width in theme to improve consistency * feat: add forceDarkMode option to BlurredContainer for improved theme adaptability * feat: implement offline followed channels feature with UI integration and settings option * fix: increase font size and weight for offline status text for better readability * feat: remove offline pinned channels feature and update related UI components * feat: optimize offline channels loading behavior based on expansion state * fix: improve clarity and consistency in repository guidelines formatting * feat: update full resolution URL handling and button visibility logic * feat: replace app bar with blurred version in chat-only mode and add animated scroll border * feat: refactor video chat layout for improved chat and video display in landscape mode * feat: remove bottom bar visibility setting and adjust chat layout accordingly * fix: simplify condition for displaying offline channels section in following tab * feat: enhance reply thread display with indentation and reply icon * feat: implement showModalBottomSheetWithProperFocus for improved focus handling * feat: add gradient direction support to BlurredContainer for enhanced visual effects * feat: enhance NavigationBar and Theme settings for improved visual consistency * feat: add gradient direction support to BlurredContainer in VideoChat for enhanced visual effects * chore: update .gitignore to include .cursor file for better environment management * fix: update PiP drag gesture conditions to include video paused state for better user experience * refactor: replace ScrollController with SettingsPageLayout in settings screens for improved layout management * refactor: centralize orientation handling by introducing OrientationUtils for improved readability and maintainability * refactor: replace OrientationUtils with ContextExtensions for streamlined context-based access to theme, layout, and API dependencies * refactor: improve video chat UI by adjusting title layout and adding stream info tooltips for better user experience * refactor: adjust titleSpacing in theme and navigation components for improved layout consistency * refactor: update stream info timer handling and overlay management for improved UI responsiveness * refactor: enhance stream info timer logic and overlay visibility management for chat-only mode * refactor: enhance input decoration theme in FrostyThemes for improved visual consistency and responsiveness * refactor: adjust inputDecorationTheme padding in FrostyThemes for improved visual consistency * refactor: enhance video overlay management by including video preview overlay in hideElements for improved UI consistency * refactor: improve chat bottom bar padding and video chat layout for enhanced UI consistency * refactor: adjust chat padding to account for device bottom insets for improved layout consistency * refactor: update text styles in FrostyThemes for improved visual consistency across UI components * refactor: update iOS minimum deployment target to 13.0 for improved compatibility * refactor: adjust chat bottom padding based on emote menu visibility for improved layout consistency * refactor: adjust padding values in StreamsList for improved layout consistency * refactor: replace Padding with AnimatedPadding in Chat for smoother layout transitions refactor: replace Container with AnimatedContainer in BlurredContainer for smoother animations * refactor: remove unnecessary radius property from ProfilePicture in OfflineChannelCard for cleaner code * refactor: enhance chat bottom bar suffix icon to display message delay with tooltip for improved user experience * refactor: update hint text and tooltips in chat bottom bar and search for improved clarity * refactor: simplify notification display logic and enhance chat input behavior for improved user experience * refactor: enhance layout consistency by adjusting spacing in various components across the channel and home screens * refactor: introduce LiveIndicator widget and adjust spacing in channel and video components for improved layout consistency * refactor: remove monospace font family from chat bottom bar for improved text rendering * refactor: reduce notification animation duration and change dismiss direction for improved user experience * refactor: replace VideoBar with StreamInfoBar in video components for improved layout and consistency * refactor: adjust font sizes and spacing in StreamInfoBar for improved layout consistency * refactor: standardize font sizes and update gradient stops in video components for improved visual consistency * refactor: update tooltip padding and background color in theme for improved visual consistency * refactor: enhance tooltip behavior and standardize font sizes in StreamInfoBar and related components for improved visual consistency * refactor: add showThumbnail option to LargeStreamCardSkeletonLoader for improved layout flexibility * refactor: add StreamInfoBarSkeletonLoader for improved layout consistency in stream components * refactor: add shadow effects to icons and text in StreamInfoBar and VideoOverlay for improved visual depth * refactor: update defaultOverlayOpacity to 0.0 for improved overlay behavior * fix: correct stream info text color on overlay * refactor: implement a new color picker dialog with random color generation for enhanced user experience * refactor: adjust gradient colors and stops in VideoOverlay for improved visual consistency * refactor: refine gradient colors and stops in VideoOverlay for enhanced visual clarity * refactor: add isCompact parameter to StreamInfoBar for responsive text sizing * fix: update tooltip background color to use surface color for better contrast * feat: add shared chat mode support in chat store and update StreamInfoBar for visual indication * refactor: disable debug print for IRC messages to reduce log clutter * feat: implement chat color selection feature with user color management in chat settings * refactor: replace color adjustment logic with new contrast-aware utility for chat names * refactor: simplify chat details UI by replacing list tiles with action cards and removing unused clear dialog * refactor: enhance chat details UI by improving time formatting and adding label styling to action cards * refactor: update chat color terminology to 'Username color' for clarity in UI * refactor: enhance chat details UI by introducing active chat modes display and improving layout structure * refactor: improve chat details layout by replacing ListTile with Padding and adding a Divider for better visual separation * refactor: remove chat notifications positioning setting and adjust notification alignment in video chat * refactor: streamline StreamInfoBar component by consolidating offline handling and improving layout for better readability * refactor: enhance StreamInfoBar by adding tooltip for streamer name and improving text overflow handling * refactor: adjust tooltip display duration in StreamInfoBar and update theme configuration * refactor: adjust margin and padding in StreamCard for improved layout consistency * chore: update dependencies in pubspec.yaml and pubspec.lock for Firebase and other packages * template * chore: update iOS platform version to 15.0 and Firebase dependencies to 12.2.0 * refactor: simplify StreamInfoBar layout by reducing nested widgets and improving text color handling * format * feat: enhance Channel model and StreamInfoBar to support offline channel details * feat: add offline indicator and improve StreamInfoBar layout for better offline channel display * fix: adjust icon color opacity in StreamInfoBar for improved visibility * feat: enhance dismissal animation in FrostyPhotoViewDialog to track swipe direction * docs: update copilot instructions for clarity and additional error handling details * refactor: optimize latency tooltip layout and improve offline indicator styling in VideoOverlay * feat: implement shared chat asset fetching and participant management in ChatAssetsStore * refactor: replace Observer with Builder for improved widget rebuilding in VideoOverlay * refactor: update StreamInfoBar border styling and adjust layout in VideoOverlay for improved visual consistency * feat: add showTextShadows property to StreamInfoBar for customizable text shadow display * refactor: adjust layout in VideoOverlay by adding padding to improve spacing and visual consistency * refactor: enhance VideoOverlay gradients and layout for improved visual hierarchy and user experience * refactor: reduce vertical padding in VideoOverlay for improved layout consistency * refactor: remove overlay opacity settings from VideoSettings and SettingsStore for simplification * refactor: improve text overlay transition in VideoChat for better user experience * Revert "refactor: improve text overlay transition in VideoChat for better user experience" This reverts commit fd16ff5ec30ec266157e5c8a9d4a6090c91717f6. * refactor: wrap videoOverlay in ColoredBox for improved layout handling * refactor: optimize animation duration and transition curves in VideoChat for smoother interactions * refactor: dispose searchScrollController in HomeStoreBase to prevent memory leaks * refactor: simplify gradient definitions in VideoOverlay for improved readability and maintainability * refactor: remove 'Offline' text overlay from VideoOverlay for cleaner UI * refactor: add refresh functionality for assets in ChatDetails with loading indicators * refactor: update visibility conditions for uptime, viewer count, and category display in StreamInfoBar * refactor: replace AlertDialog with FrostyDialog for consistent dialog styling across the application * refactor: enhance layout handling in FrostyPageView to prevent overflow during height transitions * refactor: replace ColorPickerDialog with AccentColorPickerDialog for improved color selection experience * refactor: replace theme and accent color settings with dedicated components for improved modularity and readability * refactor: replace ElevatedButton with TextButton for consistent button styling across dialogs * refactor: integrate MobX Observer for reactive state management in settings widgets * refactor: update theme and dialog components for improved styling and consistency * refactor: enhance dialog styling with rounded corners and border in theme configuration * refactor: improve dialog messages for unauthorized access handling * refactor: update bodyLarge text style in theme configuration to include font weight * refactor: standardize Divider usage and adjust theme styles for improved consistency * refactor: adjust Divider properties and theme styles for enhanced visual consistency * chore: remove GEMINI.md file as it is no longer needed for project documentation * refactor: enhance token validation and reconnect logic in AuthBase for improved error handling * format * refactor: integrate landscape cutout settings into VideoChat layout for improved responsiveness * refactor: implement app lifecycle handling in VideoChat and enhance stream info update logic in VideoStore * refactor: update landscape cutout conditionals in VideoChat layout for improved responsiveness * update AGENTS.md * add scrollbar to search * fix scrolling exception * update CLAUDE.md * 5 auth reconnect attemps then log out * increase reply max lines to 2 * simplify and improve reply formatting * add prime icon * better draggable divider * support draggable divider in fullscreen overlay chat * add text shadow in fullscreen chat overlay mode * format * add landscape checks * video store optimization attempts * Dispose WebViewController and remove JavaScript channels properly * Track and cleanup all MutationObservers to prevent accumulation * Throttle latency updates to once per 5 seconds (reduces CPU load) * Add timeout protection and null checks for robustness * Prevent duplicate event listeners on page reloads * double tap divider to reset * Revert "video store optimization attempts" This reverts commit b1df7b0de473543283211a489dca698d9d241857. * optimize video store attempt 2 * Revert "double tap divider to reset" This reverts commit aeb26a433500ec71f822794835e927018ee59e1e. * optimize latency listener to open the menu and check every 20 secconds * more optimizations * hard refresh * abbreviate latency * fix lint * improve hide default overlay * fix chat no longer reconnecting with chat delay * refine chat alerts * fix historical message missing badges and emotes on initial connection * parallelize * revert * add reconnect button inline action * refactor: replace Scrollbar with FrostyScrollbar across chat and settings screens for consistent styling * tweak chat details menu * add scrollbar to release notes, renames for consistency * fix duplicate message case * fix chat delay alerts in auto sync mode * add regex for numeric strings and enhance display name formatting logic * exterminate borders * refactor: simplify active chat modes display in chat details screen * feat: enhance chat input button with delay notification and disable state * fix: wrap chat in SafeArea to prevent UI overflow issues * refactor: remove divider line from video chat and update draggable divider visibility logic * persist overlay in pip mode * fix: update chat delay handling and notifications in chat bottom bar * fix: update chat overlay visibility logic to respect fullscreen settings * tap to show deleted message * fix: prevent accidental chat scrolling when accessing system UI in landscape mode * show latency in portrait * fix: enhance chat delay notifications with dynamic delay time * docs: update CLAUDE.md for improved environment variable instructions and architecture overview * fix: improve chat delay countdown management and message handling * add preliminary release notes * remove agents.md * update lockfile * add initial multi chat feature * add option to persist multi chat tabs * add remove confirmation dialog * improve add chat design * lazy-load tabs * create global assets store to dedupe global asset fetching * improve tab design/styles * update notes * use frosty dialog * update claude md * tweak * add ability to reorder tabs * resolve conflict * merge cleanup * format * update release notes * add chat delay sync completion tracking to prevent countdown re-appearance * add tests * fix * update release notes * bump
2026-01-01 22:28:17 -05:00
default:
return 'Request timeout. Please try again.';
}
}
/// Handles HTTP status code errors with specific exception types
ApiException _handleHttpError(DioException error) {
final statusCode = error.response?.statusCode;
final responseData = error.response?.data;
// Extract error message from server response
String? serverMessage;
if (responseData is JsonMap) {
serverMessage =
responseData['message'] as String? ??
responseData['error'] as String? ??
responseData['error_description'] as String?;
}
switch (statusCode) {
case 400:
return ApiException(serverMessage ?? 'Invalid request data');
case 401:
return UnauthorizedException('Please log in to continue');
case 403:
return ApiException('Access denied. Insufficient permissions');
case 404:
return NotFoundException(serverMessage ?? 'Resource not found');
case 409:
return ApiException('Conflict with current state. Please refresh');
case 422:
return ApiException(serverMessage ?? 'Invalid data provided');
case 429:
return ApiException(
'Rate limit exceeded. Please wait before trying again',
);
case 500:
return ServerException('Server error. Please try again later', 500);
case 502:
return ServerException('Service temporarily unavailable', 502);
case 503:
return ServerException(
'Service maintenance. Please try again later',
503,
);
case 504:
return ServerException('Server timeout. Please try again', 504);
default:
return ServerException(
serverMessage ?? 'HTTP Error $statusCode occurred',
statusCode ?? 500,
);
}
}
}