Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ Optional local persistence using Drift (SQLite). Implements `ChatPersistenceClie
## Code Style

- Line length: **120 characters** (configured in `analysis_options.yaml`)
- Imports: always use package imports (`always_use_package_imports`), not relative imports
- Imports: inside a package's own `lib/`, use relative imports (`prefer_relative_imports`); use
`package:` imports for anything from another package
- All public APIs **must** have doc comments (`public_member_api_docs`)
- Sort constructors first, unnamed constructors before named
- Prefer `const` constructors, `final` locals, single quotes
Expand Down
2 changes: 1 addition & 1 deletion STYLE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ document; the section link is provided.

- Line width: **120 characters** (configured in `analysis_options.yaml`). Comments and
docs follow the same limit.
- Single quotes, package imports (never relative), trailing commas preserved, `const`
- Single quotes, relative imports within a package's own `lib/`, trailing commas preserved, `const`
wherever possible, `final` for locals that aren't reassigned. These are enforced by
the linter β€” do not disable them.
- Prefer named parameters for booleans (`avoid_positional_boolean_parameters`). A
Expand Down
2 changes: 1 addition & 1 deletion analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ linter:
# these rules are documented on and in the same order as
# the Dart Lint rules page to make maintenance easier
# https://github.com/dart-lang/linter/blob/master/example/all.yaml
- always_use_package_imports
- avoid_empty_else
- avoid_relative_lib_imports
- avoid_slow_async_io
Expand Down Expand Up @@ -100,6 +99,7 @@ linter:
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_null_aware_operators
- prefer_relative_imports
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
Expand Down
7 changes: 4 additions & 3 deletions packages/stream_chat/lib/src/client/channel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import 'dart:math' as math;

import 'package:collection/collection.dart';
import 'package:rxdart/rxdart.dart';
import 'package:stream_chat/src/client/retry_queue.dart';
import 'package:stream_chat/src/core/util/utils.dart';
import 'package:stream_chat/stream_chat.dart';
import 'package:synchronized/synchronized.dart';

import '../../stream_chat.dart';
import '../core/util/utils.dart';
import 'retry_queue.dart';

/// The maximum time the incoming [Event.typingStart] event is valid before a
/// [Event.typingStop] event is emitted automatically.
const incomingTypingStartEventTimeout = 7;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import 'package:logging/logging.dart';
import 'package:rate_limiter/rate_limiter.dart';
import 'package:stream_chat/src/client/channel.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:stream_chat/src/core/models/message_delivery.dart';
import 'package:stream_chat/src/core/util/message_rules.dart';
import 'package:synchronized/synchronized.dart';

import '../core/models/message.dart';
import '../core/models/message_delivery.dart';
import '../core/util/message_rules.dart';
import 'channel.dart';

/// A callback that sends delivery receipts for multiple channels.
///
/// Each [MessageDeliveryInfo] represents an acknowledgment that the current
Expand Down
105 changes: 53 additions & 52 deletions packages/stream_chat/lib/src/client/client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,60 +5,61 @@ import 'package:dio/dio.dart';
import 'package:logging/logging.dart';
import 'package:meta/meta.dart';
import 'package:rxdart/rxdart.dart';
import 'package:stream_chat/src/client/channel.dart';
import 'package:stream_chat/src/client/channel_delivery_reporter.dart';
import 'package:stream_chat/src/client/event_resolvers.dart' as event_resolvers;
import 'package:stream_chat/src/client/query_channels_result.dart';
import 'package:stream_chat/src/client/retry_policy.dart';
import 'package:stream_chat/src/core/api/attachment_file_uploader.dart';
import 'package:stream_chat/src/core/api/requests.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/api/sort_order.dart';
import 'package:stream_chat/src/core/api/stream_chat_api.dart';
import 'package:stream_chat/src/core/error/error.dart';
import 'package:stream_chat/src/core/http/app_settings_manager.dart';
import 'package:stream_chat/src/core/http/connection_id_manager.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/http/system_environment_manager.dart';
import 'package:stream_chat/src/core/http/token.dart';
import 'package:stream_chat/src/core/http/token_manager.dart';
import 'package:stream_chat/src/core/models/app_settings.dart';
import 'package:stream_chat/src/core/models/attachment_file.dart';
import 'package:stream_chat/src/core/models/banned_user.dart';
import 'package:stream_chat/src/core/models/channel_state.dart';
import 'package:stream_chat/src/core/models/draft.dart';
import 'package:stream_chat/src/core/models/draft_message.dart';
import 'package:stream_chat/src/core/models/event.dart';
import 'package:stream_chat/src/core/models/filter.dart';
import 'package:stream_chat/src/core/models/location.dart';
import 'package:stream_chat/src/core/models/location_coordinates.dart';
import 'package:stream_chat/src/core/models/member.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:stream_chat/src/core/models/message_delivery.dart';
import 'package:stream_chat/src/core/models/message_reminder.dart';
import 'package:stream_chat/src/core/models/own_user.dart';
import 'package:stream_chat/src/core/models/poll.dart';
import 'package:stream_chat/src/core/models/poll_option.dart';
import 'package:stream_chat/src/core/models/poll_vote.dart';
import 'package:stream_chat/src/core/models/push_preference.dart';
import 'package:stream_chat/src/core/models/reaction.dart';
import 'package:stream_chat/src/core/models/role.dart';
import 'package:stream_chat/src/core/models/thread.dart';
import 'package:stream_chat/src/core/models/user.dart';
import 'package:stream_chat/src/core/util/event_controller.dart';
import 'package:stream_chat/src/core/util/extension.dart';
import 'package:stream_chat/src/core/util/immutable_collection_subjects.dart';
import 'package:stream_chat/src/core/util/in_flight_cache.dart';
import 'package:stream_chat/src/core/util/list_extensions.dart';
import 'package:stream_chat/src/core/util/utils.dart';
import 'package:stream_chat/src/db/chat_persistence_client.dart';
import 'package:stream_chat/src/event_type.dart';
import 'package:stream_chat/src/system_environment.dart';
import 'package:stream_chat/src/ws/connection_status.dart';
import 'package:stream_chat/src/ws/websocket.dart';
import 'package:stream_chat/version.dart';
import 'package:synchronized/synchronized.dart';

import '../../version.dart';
import '../core/api/attachment_file_uploader.dart';
import '../core/api/requests.dart';
import '../core/api/responses.dart';
import '../core/api/sort_order.dart';
import '../core/api/stream_chat_api.dart';
import '../core/error/error.dart';
import '../core/http/app_settings_manager.dart';
import '../core/http/connection_id_manager.dart';
import '../core/http/stream_http_client.dart';
import '../core/http/system_environment_manager.dart';
import '../core/http/token.dart';
import '../core/http/token_manager.dart';
import '../core/models/app_settings.dart';
import '../core/models/attachment_file.dart';
import '../core/models/banned_user.dart';
import '../core/models/channel_state.dart';
import '../core/models/draft.dart';
import '../core/models/draft_message.dart';
import '../core/models/event.dart';
import '../core/models/filter.dart';
import '../core/models/location.dart';
import '../core/models/location_coordinates.dart';
import '../core/models/member.dart';
import '../core/models/message.dart';
import '../core/models/message_delivery.dart';
import '../core/models/message_reminder.dart';
import '../core/models/own_user.dart';
import '../core/models/poll.dart';
import '../core/models/poll_option.dart';
import '../core/models/poll_vote.dart';
import '../core/models/push_preference.dart';
import '../core/models/reaction.dart';
import '../core/models/role.dart';
import '../core/models/thread.dart';
import '../core/models/user.dart';
import '../core/util/event_controller.dart';
import '../core/util/extension.dart';
import '../core/util/immutable_collection_subjects.dart';
import '../core/util/in_flight_cache.dart';
import '../core/util/list_extensions.dart';
import '../core/util/utils.dart';
import '../db/chat_persistence_client.dart';
import '../event_type.dart';
import '../system_environment.dart';
import '../ws/connection_status.dart';
import '../ws/websocket.dart';
import 'channel.dart';
import 'channel_delivery_reporter.dart';
import 'event_resolvers.dart' as event_resolvers;
import 'query_channels_result.dart';
import 'retry_policy.dart';

/// Handler function used for logging records. Function requires a single
/// [LogRecord] as the only parameter.
typedef LogHandlerFunction = void Function(LogRecord record);
Expand Down
4 changes: 2 additions & 2 deletions packages/stream_chat/lib/src/client/event_resolvers.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:stream_chat/src/core/models/event.dart';
import 'package:stream_chat/src/event_type.dart';
import '../core/models/event.dart';
import '../event_type.dart';

/// Resolves message new events into more specific `pollCreated` events
/// for easier downstream state handling.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:stream_chat/src/client/channel.dart';
import 'package:stream_chat/src/core/models/predefined_filter.dart';
import '../core/models/predefined_filter.dart';
import 'channel.dart';

/// The result of a `queryChannelsWithResult` call on [StreamChatClient].
///
Expand Down
4 changes: 2 additions & 2 deletions packages/stream_chat/lib/src/client/retry_policy.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:async';

import 'package:stream_chat/src/client/client.dart';
import 'package:stream_chat/src/core/error/error.dart';
import '../core/error/error.dart';
import 'client.dart';

/// The retry policy associated to a client.
///
Expand Down
2 changes: 1 addition & 1 deletion packages/stream_chat/lib/src/client/retry_queue.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:async';

import 'package:collection/collection.dart';
import 'package:rxdart/rxdart.dart';
import 'package:stream_chat/stream_chat.dart';
import '../../stream_chat.dart';

/// The retry queue associated to a channel.
class RetryQueue {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'package:dio/dio.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/attachment_file.dart';

import '../http/stream_http_client.dart';
import '../models/attachment_file.dart';
import 'responses.dart';

/// Signature for a function which provides instance of [AttachmentFileUploader]
typedef AttachmentFileUploaderProvider =
Expand Down
18 changes: 9 additions & 9 deletions packages/stream_chat/lib/src/core/api/channel_api.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import 'dart:convert';

import 'package:stream_chat/src/core/api/requests.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/api/sort_order.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/channel_state.dart';
import 'package:stream_chat/src/core/models/event.dart';
import 'package:stream_chat/src/core/models/filter.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:stream_chat/src/core/models/message_delivery.dart';
import '../http/stream_http_client.dart';
import '../models/channel_state.dart';
import '../models/event.dart';
import '../models/filter.dart';
import '../models/message.dart';
import '../models/message_delivery.dart';
import 'requests.dart';
import 'responses.dart';
import 'sort_order.dart';

/// Defines the api dedicated to channel operations
class ChannelApi {
Expand Down
6 changes: 3 additions & 3 deletions packages/stream_chat/lib/src/core/api/device_api.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'dart:convert';

import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/push_preference.dart';
import '../http/stream_http_client.dart';
import '../models/push_preference.dart';
import 'responses.dart';

/// Provider used to send push notifications.
enum PushProvider {
Expand Down
12 changes: 6 additions & 6 deletions packages/stream_chat/lib/src/core/api/general_api.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'dart:convert';

import 'package:stream_chat/src/core/api/requests.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/api/sort_order.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/filter.dart';
import 'package:stream_chat/src/core/models/member.dart';
import '../http/stream_http_client.dart';
import '../models/filter.dart';
import '../models/member.dart';
import 'requests.dart';
import 'responses.dart';
import 'sort_order.dart';

/// Defines the api dedicated to general operations
class GeneralApi {
Expand Down
6 changes: 3 additions & 3 deletions packages/stream_chat/lib/src/core/api/guest_api.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/user.dart';
import '../http/stream_http_client.dart';
import '../models/user.dart';
import 'responses.dart';

/// Defines the api dedicated to guest users operations
class GuestApi {
Expand Down
18 changes: 9 additions & 9 deletions packages/stream_chat/lib/src/core/api/message_api.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import 'dart:convert';

import 'package:stream_chat/src/core/api/requests.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/api/sort_order.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/draft.dart';
import 'package:stream_chat/src/core/models/draft_message.dart';
import 'package:stream_chat/src/core/models/filter.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:stream_chat/src/core/models/reaction.dart';
import '../http/stream_http_client.dart';
import '../models/draft.dart';
import '../models/draft_message.dart';
import '../models/filter.dart';
import '../models/message.dart';
import '../models/reaction.dart';
import 'requests.dart';
import 'responses.dart';
import 'sort_order.dart';

/// Defines the api dedicated to messages operations
class MessageApi {
Expand Down
2 changes: 1 addition & 1 deletion packages/stream_chat/lib/src/core/api/moderation_api.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'dart:convert';

import 'package:stream_chat/stream_chat.dart';
import '../../../stream_chat.dart';

/// Defines the api dedicated to moderation operations
class ModerationApi {
Expand Down
16 changes: 8 additions & 8 deletions packages/stream_chat/lib/src/core/api/polls_api.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import 'dart:convert';

import 'package:stream_chat/src/core/api/requests.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/api/sort_order.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/filter.dart';
import 'package:stream_chat/src/core/models/poll.dart';
import 'package:stream_chat/src/core/models/poll_option.dart';
import 'package:stream_chat/src/core/models/poll_vote.dart';
import '../http/stream_http_client.dart';
import '../models/filter.dart';
import '../models/poll.dart';
import '../models/poll_option.dart';
import '../models/poll_vote.dart';
import 'requests.dart';
import 'responses.dart';
import 'sort_order.dart';

/// Defines the api dedicated to polls operations
class PollsApi {
Expand Down
12 changes: 6 additions & 6 deletions packages/stream_chat/lib/src/core/api/reminders_api.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'dart:convert';

import 'package:stream_chat/src/core/api/requests.dart';
import 'package:stream_chat/src/core/api/responses.dart';
import 'package:stream_chat/src/core/api/sort_order.dart';
import 'package:stream_chat/src/core/http/stream_http_client.dart';
import 'package:stream_chat/src/core/models/filter.dart';
import 'package:stream_chat/src/core/models/message_reminder.dart';
import '../http/stream_http_client.dart';
import '../models/filter.dart';
import '../models/message_reminder.dart';
import 'requests.dart';
import 'responses.dart';
import 'sort_order.dart';

/// Defines the api dedicated to message reminders operations
class RemindersApi {
Expand Down
Loading
Loading