diff --git a/analysis_options.yaml b/analysis_options.yaml index b72b7307..0fd9432c 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -14,7 +14,7 @@ analyzer: todo: ignore exclude: # exclude all the generated files - - packages/*/lib/**/*.*.dart + # - packages/*/lib/**/*.*.dart linter: rules: diff --git a/packages/stream_feeds/lib/generated/api/api/default_api.g.dart b/packages/stream_feeds/lib/generated/api/api/default_api.g.dart deleted file mode 100644 index abf6c9f0..00000000 --- a/packages/stream_feeds/lib/generated/api/api/default_api.g.dart +++ /dev/null @@ -1,58 +0,0 @@ -// -// AUTO-GENERATED FILE, DO NOT MODIFY! -// - -// ignore_for_file: unused_element, unused_import -// ignore_for_file: use_string_in_part_of_directives -// ignore_for_file: always_put_required_named_parameters_first -// ignore_for_file: constant_identifier_names -// ignore_for_file: lines_longer_than_80_chars -// ignore_for_file: prefer_final_locals -// ignore_for_file: prefer_single_quotes -// ignore_for_file: unnecessary_raw_strings -// ignore_for_file: public_member_api_docs - -part of openapi.api; - -class DefaultApi { - DefaultApi([ApiClient? apiClient]) - : apiClient = apiClient ?? defaultApiClient; - - final ApiClient apiClient; - - Future invokeAPI( - String path, - String method, - List queryParams, - Object? body, - Map headerParams, - Map formParams, - String? contentType, - String returnType, - ) async { - final response = await apiClient.invokeAPI( - path, - method, - queryParams, - body, - headerParams, - formParams, - contentType, - ); - if (response.statusCode >= HttpStatus.badRequest) { - throw ApiException(response.statusCode, await _decodeBodyBytes(response)); - } - // When a remote server returns no body with a status of 204, we shall not decode it. - // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" - // FormatException when trying to decode an empty string. - if (returnType != 'void' && - response.body.isNotEmpty && - response.statusCode != HttpStatus.noContent) { - return await apiClient.deserializeAsync( - await _decodeBodyBytes(response), - returnType, - ) as T; - } - return null; - } -} diff --git a/packages/stream_feeds/lib/src/feeds_client.dart b/packages/stream_feeds/lib/src/feeds_client.dart new file mode 100644 index 00000000..8599ca59 --- /dev/null +++ b/packages/stream_feeds/lib/src/feeds_client.dart @@ -0,0 +1,190 @@ +import 'dart:async'; + +import 'package:rxdart/rxdart.dart'; +import 'package:stream_core/stream_core.dart'; +import 'package:uuid/uuid.dart'; + +import '../stream_feeds.dart'; +import 'generated/api/api.g.dart' as api; +import 'repositories.dart'; +import 'utils/endpoint_config.dart'; +import 'ws/feeds_ws_event.dart'; + +class FeedsClient { + FeedsClient({ + required this.apiKey, + required this.user, + required this.userToken, + this.config = const FeedsConfig(), + this.userTokenProvider, + this.networkMonitor, + }) { + apiClient = api.DefaultApi( + api.ApiClient( + basePath: endpointConfig.baseFeedsUrl, + authentication: _Authentication( + apiKey: apiKey, + user: user, + getToken: () async => userToken, + getConnectionId: () => webSocketClient.connectionId, + ), + ), + ); + final websocketUri = Uri.parse(endpointConfig.wsEndpoint).replace( + queryParameters: { + 'api_key': apiKey, + 'stream-auth-type': 'jwt', + 'X-Stream-Client': 'stream-feeds-dart', + }, + ); + + webSocketClient = WebSocketClient( + url: websocketUri.toString(), + eventDecoder: FeedsWsEvent.fromEventObject, + onConnectionEstablished: _authenticate, + ); + + feedsRepository = FeedsRepository(apiClient: apiClient); + } + + final String apiKey; + final User user; + final String userToken; + final FeedsConfig config; + final UserTokenProvider? userTokenProvider; + final NetworkMonitor? networkMonitor; + + late final api.DefaultApi apiClient; + late final FeedsRepository feedsRepository; + + static final endpointConfig = EndpointConfig.production; + late final WebSocketClient webSocketClient; + ConnectionRecoveryHandler? connectionRecoveryHandler; + Stream get feedsEvents => + webSocketClient.events.asStream().whereType(); + + Completer? _connectionCompleter; + StreamSubscription? _connectionSubscription; + + /// Connects to the feeds websocket. + /// Future will complete when the connection is established and the user is authenticated. + /// If the authentication fails, the future will complete with an error. + Future connect() async { + webSocketClient.connect(); + + _connectionSubscription = + webSocketClient.connectionStateStream.listen(_onConnectionStateChanged); + + connectionRecoveryHandler = DefaultConnectionRecoveryHandler( + client: webSocketClient, + networkMonitor: networkMonitor, + ); + + _connectionCompleter = Completer(); + return _connectionCompleter!.future; + } + + /// Disconnects from the feeds websocket. + /// The FeedsClient should no longer be used after calling this method. + void disconnect() { + connectionRecoveryHandler?.dispose(); + webSocketClient.disconnect(); + _connectionSubscription?.cancel(); + _connectionCompleter?.complete(); + _connectionCompleter = null; + } + + void dispose() { + if (webSocketClient.connectionState is Connected) { + disconnect(); + } + webSocketClient.dispose(); + } + + void _onConnectionStateChanged(WebSocketConnectionState state) { + if (_connectionCompleter != null) { + if (state is Connected) { + _connectionCompleter!.complete(); + _connectionCompleter = null; + } + if (state is Disconnected) { + _connectionCompleter!.completeError(Exception('Connection failed')); + _connectionCompleter = null; + } + } + } + + void _authenticate() { + final connectUserRequest = WsAuthMessageRequest( + products: ['feeds'], + token: userToken, + userDetails: ConnectUserDetailsRequest( + id: user.id, + name: user.originalName, + image: user.imageUrl, + customData: user.customData, + ), + ); + + webSocketClient.send(connectUserRequest); + } + + /// Creates a feed instance based on the provided query. + /// + /// This method creates a [Feed] object using a [FeedQuery] that can include additional + /// configuration such as activity filters, limits, and feed data for creation. + /// + /// - Parameter query: The feed query containing the feed identifier and optional configuration + /// - Returns: A [Feed] instance that can be used to interact with the specified feed + Feed feed({required FeedQuery query}) { + return Feed(query: query, client: this); + } +} + +class FeedsConfig { + const FeedsConfig(); + // TODO: Add config for feeds +} + +typedef ConnectionIdProvider = String? Function(); +typedef UserTokenProvider = Future Function(); + +// TODO: Migrate the API to dio for authentication and refresh of user tokens +class _Authentication extends api.Authentication { + _Authentication({ + required this.apiKey, + required this.user, + required this.getToken, + required this.getConnectionId, + }); + + final String apiKey; + final User user; + final UserTokenProvider getToken; + final ConnectionIdProvider getConnectionId; + + @override + Future applyToParams( + List queryParams, + Map headerParams, + ) async { + queryParams.add(api.QueryParam('api_key', apiKey)); + final connectionId = getConnectionId(); + final userToken = await getToken(); + switch (user.type) { + case UserAuthType.regular || UserAuthType.guest: + if (connectionId != null) { + queryParams.add(api.QueryParam('connection_id', connectionId)); + } + headerParams['stream-auth-type'] = 'jwt'; + headerParams['Authorization'] = userToken; + case UserAuthType.anonymous: + headerParams['stream-auth-type'] = 'anonymous'; + if (userToken.isNotEmpty) { + headerParams['Authorization'] = userToken; + } + } + headerParams['X-Stream-Client'] = 'stream-feeds-dart'; + headerParams['x-client-request-id'] = const Uuid().v4(); + } +} diff --git a/packages/stream_feeds/lib/generated/api/api.g.dart b/packages/stream_feeds/lib/src/generated/api/api.g.dart similarity index 55% rename from packages/stream_feeds/lib/generated/api/api.g.dart rename to packages/stream_feeds/lib/src/generated/api/api.g.dart index e7c247ac..4a634e98 100644 --- a/packages/stream_feeds/lib/generated/api/api.g.dart +++ b/packages/stream_feeds/lib/src/generated/api/api.g.dart @@ -30,19 +30,37 @@ part 'auth/http_bearer_auth.g.dart'; part 'api/default_api.g.dart'; part 'model/api_error.g.dart'; +part 'model/accept_feed_member_invite_response.g.dart'; +part 'model/accept_follow_request.g.dart'; +part 'model/accept_follow_response.g.dart'; part 'model/action.g.dart'; part 'model/activity_added_event.g.dart'; part 'model/activity_deleted_event.g.dart'; part 'model/activity_location.g.dart'; part 'model/activity_mark_event.g.dart'; +part 'model/activity_pin_response.g.dart'; part 'model/activity_pinned_event.g.dart'; part 'model/activity_reaction_added_event.g.dart'; part 'model/activity_reaction_deleted_event.g.dart'; part 'model/activity_reaction_updated_event.g.dart'; part 'model/activity_removed_from_feed_event.g.dart'; +part 'model/activity_request.g.dart'; part 'model/activity_response.g.dart'; part 'model/activity_unpinned_event.g.dart'; part 'model/activity_updated_event.g.dart'; +part 'model/add_activity_request.g.dart'; +part 'model/add_activity_response.g.dart'; +part 'model/add_bookmark_request.g.dart'; +part 'model/add_bookmark_response.g.dart'; +part 'model/add_comment_reaction_request.g.dart'; +part 'model/add_comment_reaction_response.g.dart'; +part 'model/add_comment_request.g.dart'; +part 'model/add_comment_response.g.dart'; +part 'model/add_comments_batch_request.g.dart'; +part 'model/add_comments_batch_response.g.dart'; +part 'model/add_folder_request.g.dart'; +part 'model/add_reaction_request.g.dart'; +part 'model/add_reaction_response.g.dart'; part 'model/aggregated_activity_response.g.dart'; part 'model/app_event_response.g.dart'; part 'model/app_updated_event.g.dart'; @@ -55,6 +73,7 @@ part 'model/bookmark_folder_response.g.dart'; part 'model/bookmark_folder_updated_event.g.dart'; part 'model/bookmark_response.g.dart'; part 'model/bookmark_updated_event.g.dart'; +part 'model/cast_poll_vote_request.g.dart'; part 'model/channel_config_with_info.g.dart'; part 'model/channel_member.g.dart'; part 'model/channel_mute.g.dart'; @@ -68,34 +87,63 @@ part 'model/comment_reaction_deleted_event.g.dart'; part 'model/comment_reaction_updated_event.g.dart'; part 'model/comment_response.g.dart'; part 'model/comment_updated_event.g.dart'; +part 'model/create_feeds_batch_request.g.dart'; +part 'model/create_feeds_batch_response.g.dart'; +part 'model/delete_activities_request.g.dart'; +part 'model/delete_activities_response.g.dart'; +part 'model/delete_activity_reaction_response.g.dart'; +part 'model/delete_activity_response.g.dart'; +part 'model/delete_bookmark_folder_response.g.dart'; +part 'model/delete_bookmark_response.g.dart'; +part 'model/delete_comment_reaction_response.g.dart'; +part 'model/delete_comment_response.g.dart'; +part 'model/delete_feed_response.g.dart'; part 'model/device_response.g.dart'; +part 'model/duration_response.g.dart'; part 'model/feed_created_event.g.dart'; part 'model/feed_deleted_event.g.dart'; part 'model/feed_group.g.dart'; part 'model/feed_group_changed_event.g.dart'; part 'model/feed_group_deleted_event.g.dart'; +part 'model/feed_input.g.dart'; part 'model/feed_member_added_event.g.dart'; part 'model/feed_member_removed_event.g.dart'; +part 'model/feed_member_request.g.dart'; part 'model/feed_member_response.g.dart'; part 'model/feed_member_updated_event.g.dart'; +part 'model/feed_own_capability.g.dart'; +part 'model/feed_request.g.dart'; part 'model/feed_response.g.dart'; part 'model/feed_updated_event.g.dart'; part 'model/feeds_reaction_response.g.dart'; part 'model/field.g.dart'; part 'model/file_upload_config.g.dart'; +part 'model/follow_batch_request.g.dart'; +part 'model/follow_batch_response.g.dart'; part 'model/follow_created_event.g.dart'; part 'model/follow_deleted_event.g.dart'; +part 'model/follow_request.g.dart'; part 'model/follow_response.g.dart'; part 'model/follow_updated_event.g.dart'; +part 'model/get_activity_response.g.dart'; +part 'model/get_comment_replies_response.g.dart'; +part 'model/get_comment_response.g.dart'; +part 'model/get_comments_response.g.dart'; +part 'model/get_follow_suggestions_response.g.dart'; +part 'model/get_or_create_feed_request.g.dart'; +part 'model/get_or_create_feed_response.g.dart'; part 'model/health_check_event.g.dart'; part 'model/image_data.g.dart'; part 'model/images.g.dart'; part 'model/label_thresholds.g.dart'; +part 'model/mark_activity_request.g.dart'; part 'model/moderation_v2_response.g.dart'; part 'model/notification_config.g.dart'; part 'model/notification_feed_updated_event.g.dart'; part 'model/notification_status_response.g.dart'; part 'model/own_user_response.g.dart'; +part 'model/pager_request.g.dart'; +part 'model/pager_response.g.dart'; part 'model/pin_activity_response.g.dart'; part 'model/poll_closed_feed_event.g.dart'; part 'model/poll_deleted_feed_event.g.dart'; @@ -105,17 +153,64 @@ part 'model/poll_updated_feed_event.g.dart'; part 'model/poll_vote_casted_feed_event.g.dart'; part 'model/poll_vote_changed_feed_event.g.dart'; part 'model/poll_vote_removed_feed_event.g.dart'; +part 'model/poll_vote_response.g.dart'; part 'model/poll_vote_response_data.g.dart'; part 'model/privacy_settings.g.dart'; part 'model/privacy_settings_response.g.dart'; part 'model/push_preferences.g.dart'; +part 'model/query_activities_request.g.dart'; +part 'model/query_activities_response.g.dart'; +part 'model/query_activity_reactions_request.g.dart'; +part 'model/query_activity_reactions_response.g.dart'; +part 'model/query_bookmark_folders_request.g.dart'; +part 'model/query_bookmark_folders_response.g.dart'; +part 'model/query_bookmarks_request.g.dart'; +part 'model/query_bookmarks_response.g.dart'; +part 'model/query_comment_reactions_request.g.dart'; +part 'model/query_comment_reactions_response.g.dart'; +part 'model/query_comments_request.g.dart'; +part 'model/query_comments_response.g.dart'; +part 'model/query_feed_members_request.g.dart'; +part 'model/query_feed_members_response.g.dart'; +part 'model/query_feeds_request.g.dart'; +part 'model/query_feeds_response.g.dart'; +part 'model/query_follows_request.g.dart'; +part 'model/query_follows_response.g.dart'; part 'model/reaction_group_response.g.dart'; part 'model/read_receipts.g.dart'; part 'model/read_receipts_response.g.dart'; +part 'model/reject_feed_member_invite_response.g.dart'; +part 'model/reject_follow_request.g.dart'; +part 'model/reject_follow_response.g.dart'; +part 'model/replies_meta.g.dart'; +part 'model/single_follow_request.g.dart'; +part 'model/single_follow_response.g.dart'; +part 'model/sort_param_request.g.dart'; part 'model/stories_config.g.dart'; +part 'model/threaded_comment_response.g.dart'; part 'model/thresholds.g.dart'; part 'model/typing_indicators.g.dart'; part 'model/typing_indicators_response.g.dart'; +part 'model/unfollow_response.g.dart'; +part 'model/unpin_activity_response.g.dart'; +part 'model/update_activity_partial_request.g.dart'; +part 'model/update_activity_partial_response.g.dart'; +part 'model/update_activity_request.g.dart'; +part 'model/update_activity_response.g.dart'; +part 'model/update_bookmark_folder_request.g.dart'; +part 'model/update_bookmark_folder_response.g.dart'; +part 'model/update_bookmark_request.g.dart'; +part 'model/update_bookmark_response.g.dart'; +part 'model/update_comment_request.g.dart'; +part 'model/update_comment_response.g.dart'; +part 'model/update_feed_members_request.g.dart'; +part 'model/update_feed_members_response.g.dart'; +part 'model/update_feed_request.g.dart'; +part 'model/update_feed_response.g.dart'; +part 'model/update_follow_request.g.dart'; +part 'model/update_follow_response.g.dart'; +part 'model/upsert_activities_request.g.dart'; +part 'model/upsert_activities_response.g.dart'; part 'model/user.g.dart'; part 'model/user_banned_event.g.dart'; part 'model/user_deactivated_event.g.dart'; @@ -126,6 +221,7 @@ part 'model/user_response.g.dart'; part 'model/user_response_common_fields.g.dart'; part 'model/user_response_privacy_fields.g.dart'; part 'model/user_updated_event.g.dart'; +part 'model/vote_data.g.dart'; part 'model/ws_client_event.g.dart'; part 'model/ws_event.g.dart'; diff --git a/packages/stream_feeds/lib/src/generated/api/api/default_api.g.dart b/packages/stream_feeds/lib/src/generated/api/api/default_api.g.dart new file mode 100644 index 00000000..a527749f --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/api/default_api.g.dart @@ -0,0 +1,1376 @@ +// +// AUTO-GENERATED FILE, DO NOT MODIFY! +// + +// ignore_for_file: unused_element, unused_import +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: always_put_required_named_parameters_first +// ignore_for_file: constant_identifier_names +// ignore_for_file: lines_longer_than_80_chars +// ignore_for_file: prefer_final_locals +// ignore_for_file: prefer_single_quotes +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: public_member_api_docs + +part of openapi.api; + +class DefaultApi { + DefaultApi([ApiClient? apiClient]) + : apiClient = apiClient ?? defaultApiClient; + + final ApiClient apiClient; + + Future invokeAPI( + String path, + String method, + List queryParams, + Object? body, + Map headerParams, + Map formParams, + String? contentType, + String returnType, + ) async { + final response = await apiClient.invokeAPI( + path, + method, + queryParams, + body, + headerParams, + formParams, + contentType, + ); + if (response.statusCode >= HttpStatus.badRequest) { + throw ApiException(response.statusCode, await _decodeBodyBytes(response)); + } + // When a remote server returns no body with a status of 204, we shall not decode it. + // At the time of writing this, `dart:convert` will throw an "Unexpected end of input" + // FormatException when trying to decode an empty string. + if (returnType != 'void' && + response.body.isNotEmpty && + response.statusCode != HttpStatus.noContent) { + return await apiClient.deserializeAsync( + await _decodeBodyBytes(response), + returnType, + ) as T; + } + return null; + } + + Future acceptFeedMemberInvite( + String feedId, + String feedGroupId, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/accept" + .replaceAll('{feed_id}', feedId) + .replaceAll('{feed_group_id}', feedGroupId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AcceptFeedMemberInviteResponse', + ); + } + + Future acceptFollow( + AcceptFollowRequest acceptFollowRequest, + ) async { + const path = r"/api/v2/feeds/follows/accept"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + acceptFollowRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AcceptFollowResponse', + ); + } + + Future addActivity( + AddActivityRequest addActivityRequest, + ) async { + const path = r"/api/v2/feeds/activities"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + addActivityRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AddActivityResponse', + ); + } + + Future addBookmark( + String activityId, + AddBookmarkRequest? addBookmarkRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/bookmarks" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + addBookmarkRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AddBookmarkResponse', + ); + } + + Future addComment( + AddCommentRequest addCommentRequest, + ) async { + const path = r"/api/v2/feeds/comments"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + addCommentRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AddCommentResponse', + ); + } + + Future addCommentReaction( + String commentId, + AddCommentReactionRequest addCommentReactionRequest, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}/reactions" + .replaceAll('{comment_id}', commentId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + addCommentReactionRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AddCommentReactionResponse', + ); + } + + Future addCommentsBatch( + AddCommentsBatchRequest addCommentsBatchRequest, + ) async { + const path = r"/api/v2/feeds/comments/batch"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + addCommentsBatchRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AddCommentsBatchResponse', + ); + } + + Future addReaction( + String activityId, + AddReactionRequest addReactionRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/reactions" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + addReactionRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'AddReactionResponse', + ); + } + + Future castPollVote( + String activityId, + String pollId, + CastPollVoteRequest? castPollVoteRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote" + .replaceAll('{activity_id}', activityId) + .replaceAll('{poll_id}', pollId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + castPollVoteRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'PollVoteResponse', + ); + } + + Future createFeedsBatch( + CreateFeedsBatchRequest createFeedsBatchRequest, + ) async { + const path = r"/api/v2/feeds/feeds/batch"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + createFeedsBatchRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'CreateFeedsBatchResponse', + ); + } + + Future deleteActivities( + DeleteActivitiesRequest deleteActivitiesRequest, + ) async { + const path = r"/api/v2/feeds/activities/delete"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + deleteActivitiesRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteActivitiesResponse', + ); + } + + Future deleteActivity( + String activityId, + bool? hardDelete, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + if (hardDelete != null) { + queryParams.addAll(_queryParams('', 'hard_delete', hardDelete)); + } + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteActivityResponse', + ); + } + + Future deleteActivityReaction( + String activityId, + String type, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/reactions/{type}" + .replaceAll('{activity_id}', activityId) + .replaceAll('{type}', type); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteActivityReactionResponse', + ); + } + + Future deleteBookmark( + String activityId, + String? folderId, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/bookmarks" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + if (folderId != null) { + queryParams.addAll(_queryParams('', 'folder_id', folderId)); + } + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteBookmarkResponse', + ); + } + + Future deleteBookmarkFolder( + String folderId, + ) async { + var path = r"/api/v2/feeds/bookmark_folders/{folder_id}" + .replaceAll('{folder_id}', folderId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteBookmarkFolderResponse', + ); + } + + Future deleteComment( + String commentId, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}" + .replaceAll('{comment_id}', commentId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteCommentResponse', + ); + } + + Future deleteCommentReaction( + String commentId, + String type, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}/reactions/{type}" + .replaceAll('{comment_id}', commentId) + .replaceAll('{type}', type); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteCommentReactionResponse', + ); + } + + Future deleteFeed( + String feedGroupId, + String feedId, + bool? hardDelete, + ) async { + var path = r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + if (hardDelete != null) { + queryParams.addAll(_queryParams('', 'hard_delete', hardDelete)); + } + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DeleteFeedResponse', + ); + } + + Future deletePollVote( + String activityId, + String pollId, + String voteId, + String? userId, + ) async { + var path = + r"/api/v2/feeds/activities/{activity_id}/polls/{poll_id}/vote/{vote_id}" + .replaceAll('{activity_id}', activityId) + .replaceAll('{poll_id}', pollId) + .replaceAll('{vote_id}', voteId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + if (userId != null) { + queryParams.addAll(_queryParams('', 'user_id', userId)); + } + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'PollVoteResponse', + ); + } + + Future feedsQueryFeeds( + QueryFeedsRequest? queryFeedsRequest, + ) async { + const path = r"/api/v2/feeds/feeds/query"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryFeedsRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryFeedsResponse', + ); + } + + Future follow( + SingleFollowRequest singleFollowRequest, + ) async { + const path = r"/api/v2/feeds/follows"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + singleFollowRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'SingleFollowResponse', + ); + } + + Future followBatch( + FollowBatchRequest followBatchRequest, + ) async { + const path = r"/api/v2/feeds/follows/batch"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + followBatchRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'FollowBatchResponse', + ); + } + + Future getActivity( + String activityId, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'GET', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'GetActivityResponse', + ); + } + + Future getComment( + String commentId, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}" + .replaceAll('{comment_id}', commentId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'GET', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'GetCommentResponse', + ); + } + + Future getCommentReplies( + String commentId, + int? depth, + String? sort, + int? repliesLimit, + int? limit, + String? prev, + String? next, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}/replies" + .replaceAll('{comment_id}', commentId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + if (depth != null) { + queryParams.addAll(_queryParams('', 'depth', depth)); + } + if (sort != null) { + queryParams.addAll(_queryParams('', 'sort', sort)); + } + if (repliesLimit != null) { + queryParams.addAll(_queryParams('', 'replies_limit', repliesLimit)); + } + if (limit != null) { + queryParams.addAll(_queryParams('', 'limit', limit)); + } + if (prev != null) { + queryParams.addAll(_queryParams('', 'prev', prev)); + } + if (next != null) { + queryParams.addAll(_queryParams('', 'next', next)); + } + + return invokeAPI( + path, + 'GET', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'GetCommentRepliesResponse', + ); + } + + Future getComments( + String objectId, + String objectType, + int? depth, + String? sort, + int? repliesLimit, + int? limit, + String? prev, + String? next, + ) async { + const path = r"/api/v2/feeds/comments"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + queryParams.addAll(_queryParams('', 'object_id', objectId)); + queryParams.addAll(_queryParams('', 'object_type', objectType)); + if (depth != null) { + queryParams.addAll(_queryParams('', 'depth', depth)); + } + if (sort != null) { + queryParams.addAll(_queryParams('', 'sort', sort)); + } + if (repliesLimit != null) { + queryParams.addAll(_queryParams('', 'replies_limit', repliesLimit)); + } + if (limit != null) { + queryParams.addAll(_queryParams('', 'limit', limit)); + } + if (prev != null) { + queryParams.addAll(_queryParams('', 'prev', prev)); + } + if (next != null) { + queryParams.addAll(_queryParams('', 'next', next)); + } + + return invokeAPI( + path, + 'GET', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'GetCommentsResponse', + ); + } + + Future getFollowSuggestions( + String feedGroupId, + int? limit, + ) async { + var path = r"/api/v2/feeds/feed_groups/{feed_group_id}/follow_suggestions" + .replaceAll('{feed_group_id}', feedGroupId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + if (limit != null) { + queryParams.addAll(_queryParams('', 'limit', limit)); + } + + return invokeAPI( + path, + 'GET', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'GetFollowSuggestionsResponse', + ); + } + + Future getOrCreateFeed( + String feedGroupId, + String feedId, + GetOrCreateFeedRequest? getOrCreateFeedRequest, + ) async { + var path = r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + getOrCreateFeedRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'GetOrCreateFeedResponse', + ); + } + + Future markActivity( + String feedGroupId, + String feedId, + MarkActivityRequest? markActivityRequest, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/mark/batch" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + markActivityRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DurationResponse', + ); + } + + Future pinActivity( + String feedGroupId, + String feedId, + String activityId, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId) + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'PinActivityResponse', + ); + } + + Future queryActivities( + QueryActivitiesRequest? queryActivitiesRequest, + ) async { + const path = r"/api/v2/feeds/activities/query"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryActivitiesRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryActivitiesResponse', + ); + } + + Future queryActivityReactions( + String activityId, + QueryActivityReactionsRequest? queryActivityReactionsRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/reactions/query" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryActivityReactionsRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryActivityReactionsResponse', + ); + } + + Future queryBookmarkFolders( + QueryBookmarkFoldersRequest? queryBookmarkFoldersRequest, + ) async { + const path = r"/api/v2/feeds/bookmark_folders/query"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryBookmarkFoldersRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryBookmarkFoldersResponse', + ); + } + + Future queryBookmarks( + QueryBookmarksRequest? queryBookmarksRequest, + ) async { + const path = r"/api/v2/feeds/bookmarks/query"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryBookmarksRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryBookmarksResponse', + ); + } + + Future queryCommentReactions( + String commentId, + QueryCommentReactionsRequest? queryCommentReactionsRequest, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}/reactions/query" + .replaceAll('{comment_id}', commentId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryCommentReactionsRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryCommentReactionsResponse', + ); + } + + Future queryComments( + QueryCommentsRequest queryCommentsRequest, + ) async { + const path = r"/api/v2/feeds/comments/query"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryCommentsRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryCommentsResponse', + ); + } + + Future queryFeedMembers( + String feedGroupId, + String feedId, + QueryFeedMembersRequest? queryFeedMembersRequest, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/query" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryFeedMembersRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryFeedMembersResponse', + ); + } + + Future queryFollows( + QueryFollowsRequest? queryFollowsRequest, + ) async { + const path = r"/api/v2/feeds/follows/query"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + queryFollowsRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'QueryFollowsResponse', + ); + } + + Future rejectFeedMemberInvite( + String feedGroupId, + String feedId, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members/reject" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'RejectFeedMemberInviteResponse', + ); + } + + Future rejectFollow( + RejectFollowRequest rejectFollowRequest, + ) async { + const path = r"/api/v2/feeds/follows/reject"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + rejectFollowRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'RejectFollowResponse', + ); + } + + Future stopWatchingFeed( + String feedGroupId, + String feedId, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/watch" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'DurationResponse', + ); + } + + Future unfollow( + String source, + String target, + ) async { + var path = r"/api/v2/feeds/follows/{source}/{target}" + .replaceAll('{source}', source) + .replaceAll('{target}', target); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UnfollowResponse', + ); + } + + Future unpinActivity( + String feedGroupId, + String feedId, + String activityId, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/activities/{activity_id}/pin" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId) + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'DELETE', + queryParams, + null, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UnpinActivityResponse', + ); + } + + Future updateActivity( + String activityId, + UpdateActivityRequest? updateActivityRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PUT', + queryParams, + updateActivityRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateActivityResponse', + ); + } + + Future updateActivityPartial( + String activityId, + UpdateActivityPartialRequest? updateActivityPartialRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PATCH', + queryParams, + updateActivityPartialRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateActivityPartialResponse', + ); + } + + Future updateBookmark( + String activityId, + UpdateBookmarkRequest? updateBookmarkRequest, + ) async { + var path = r"/api/v2/feeds/activities/{activity_id}/bookmarks" + .replaceAll('{activity_id}', activityId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PATCH', + queryParams, + updateBookmarkRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateBookmarkResponse', + ); + } + + Future updateBookmarkFolder( + String folderId, + UpdateBookmarkFolderRequest? updateBookmarkFolderRequest, + ) async { + var path = r"/api/v2/feeds/bookmark_folders/{folder_id}" + .replaceAll('{folder_id}', folderId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PATCH', + queryParams, + updateBookmarkFolderRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateBookmarkFolderResponse', + ); + } + + Future updateComment( + String commentId, + UpdateCommentRequest? updateCommentRequest, + ) async { + var path = r"/api/v2/feeds/comments/{comment_id}" + .replaceAll('{comment_id}', commentId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PATCH', + queryParams, + updateCommentRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateCommentResponse', + ); + } + + Future updateFeed( + String feedGroupId, + String feedId, + UpdateFeedRequest? updateFeedRequest, + ) async { + var path = r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PUT', + queryParams, + updateFeedRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateFeedResponse', + ); + } + + Future updateFeedMembers( + String feedGroupId, + String feedId, + UpdateFeedMembersRequest updateFeedMembersRequest, + ) async { + var path = + r"/api/v2/feeds/feed_groups/{feed_group_id}/feeds/{feed_id}/members" + .replaceAll('{feed_group_id}', feedGroupId) + .replaceAll('{feed_id}', feedId); + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PATCH', + queryParams, + updateFeedMembersRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateFeedMembersResponse', + ); + } + + Future updateFollow( + UpdateFollowRequest updateFollowRequest, + ) async { + const path = r"/api/v2/feeds/follows"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'PATCH', + queryParams, + updateFollowRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpdateFollowResponse', + ); + } + + Future upsertActivities( + UpsertActivitiesRequest upsertActivitiesRequest, + ) async { + const path = r"/api/v2/feeds/activities/batch"; + + final queryParams = []; + final headerParams = {}; + final formParams = {}; + const contentTypes = []; + + return invokeAPI( + path, + 'POST', + queryParams, + upsertActivitiesRequest, + headerParams, + formParams, + contentTypes.isEmpty ? null : contentTypes.first, + 'UpsertActivitiesResponse', + ); + } +} diff --git a/packages/stream_feeds/lib/generated/api/api_client.g.dart b/packages/stream_feeds/lib/src/generated/api/api_client.g.dart similarity index 67% rename from packages/stream_feeds/lib/generated/api/api_client.g.dart rename to packages/stream_feeds/lib/src/generated/api/api_client.g.dart index 23d8b392..34169a06 100644 --- a/packages/stream_feeds/lib/generated/api/api_client.g.dart +++ b/packages/stream_feeds/lib/src/generated/api/api_client.g.dart @@ -234,6 +234,12 @@ class ApiClient { return value is DateTime ? value : DateTime.tryParse(value); case 'APIError': return APIError.fromJson(value); + case 'AcceptFeedMemberInviteResponse': + return AcceptFeedMemberInviteResponse.fromJson(value); + case 'AcceptFollowRequest': + return AcceptFollowRequest.fromJson(value); + case 'AcceptFollowResponse': + return AcceptFollowResponse.fromJson(value); case 'Action': return Action.fromJson(value); case 'ActivityAddedEvent': @@ -244,6 +250,8 @@ class ApiClient { return ActivityLocation.fromJson(value); case 'ActivityMarkEvent': return ActivityMarkEvent.fromJson(value); + case 'ActivityPinResponse': + return ActivityPinResponse.fromJson(value); case 'ActivityPinnedEvent': return ActivityPinnedEvent.fromJson(value); case 'ActivityReactionAddedEvent': @@ -254,12 +262,40 @@ class ApiClient { return ActivityReactionUpdatedEvent.fromJson(value); case 'ActivityRemovedFromFeedEvent': return ActivityRemovedFromFeedEvent.fromJson(value); + case 'ActivityRequest': + return ActivityRequest.fromJson(value); case 'ActivityResponse': return ActivityResponse.fromJson(value); case 'ActivityUnpinnedEvent': return ActivityUnpinnedEvent.fromJson(value); case 'ActivityUpdatedEvent': return ActivityUpdatedEvent.fromJson(value); + case 'AddActivityRequest': + return AddActivityRequest.fromJson(value); + case 'AddActivityResponse': + return AddActivityResponse.fromJson(value); + case 'AddBookmarkRequest': + return AddBookmarkRequest.fromJson(value); + case 'AddBookmarkResponse': + return AddBookmarkResponse.fromJson(value); + case 'AddCommentReactionRequest': + return AddCommentReactionRequest.fromJson(value); + case 'AddCommentReactionResponse': + return AddCommentReactionResponse.fromJson(value); + case 'AddCommentRequest': + return AddCommentRequest.fromJson(value); + case 'AddCommentResponse': + return AddCommentResponse.fromJson(value); + case 'AddCommentsBatchRequest': + return AddCommentsBatchRequest.fromJson(value); + case 'AddCommentsBatchResponse': + return AddCommentsBatchResponse.fromJson(value); + case 'AddFolderRequest': + return AddFolderRequest.fromJson(value); + case 'AddReactionRequest': + return AddReactionRequest.fromJson(value); + case 'AddReactionResponse': + return AddReactionResponse.fromJson(value); case 'AggregatedActivityResponse': return AggregatedActivityResponse.fromJson(value); case 'AppEventResponse': @@ -284,6 +320,8 @@ class ApiClient { return BookmarkResponse.fromJson(value); case 'BookmarkUpdatedEvent': return BookmarkUpdatedEvent.fromJson(value); + case 'CastPollVoteRequest': + return CastPollVoteRequest.fromJson(value); case 'ChannelConfigWithInfo': return ChannelConfigWithInfo.fromJson(value); case 'ChannelMember': @@ -310,8 +348,32 @@ class ApiClient { return CommentResponse.fromJson(value); case 'CommentUpdatedEvent': return CommentUpdatedEvent.fromJson(value); + case 'CreateFeedsBatchRequest': + return CreateFeedsBatchRequest.fromJson(value); + case 'CreateFeedsBatchResponse': + return CreateFeedsBatchResponse.fromJson(value); + case 'DeleteActivitiesRequest': + return DeleteActivitiesRequest.fromJson(value); + case 'DeleteActivitiesResponse': + return DeleteActivitiesResponse.fromJson(value); + case 'DeleteActivityReactionResponse': + return DeleteActivityReactionResponse.fromJson(value); + case 'DeleteActivityResponse': + return DeleteActivityResponse.fromJson(value); + case 'DeleteBookmarkFolderResponse': + return DeleteBookmarkFolderResponse.fromJson(value); + case 'DeleteBookmarkResponse': + return DeleteBookmarkResponse.fromJson(value); + case 'DeleteCommentReactionResponse': + return DeleteCommentReactionResponse.fromJson(value); + case 'DeleteCommentResponse': + return DeleteCommentResponse.fromJson(value); + case 'DeleteFeedResponse': + return DeleteFeedResponse.fromJson(value); case 'DeviceResponse': return DeviceResponse.fromJson(value); + case 'DurationResponse': + return DurationResponse.fromJson(value); case 'FeedCreatedEvent': return FeedCreatedEvent.fromJson(value); case 'FeedDeletedEvent': @@ -322,14 +384,22 @@ class ApiClient { return FeedGroupChangedEvent.fromJson(value); case 'FeedGroupDeletedEvent': return FeedGroupDeletedEvent.fromJson(value); + case 'FeedInput': + return FeedInput.fromJson(value); case 'FeedMemberAddedEvent': return FeedMemberAddedEvent.fromJson(value); case 'FeedMemberRemovedEvent': return FeedMemberRemovedEvent.fromJson(value); + case 'FeedMemberRequest': + return FeedMemberRequest.fromJson(value); case 'FeedMemberResponse': return FeedMemberResponse.fromJson(value); case 'FeedMemberUpdatedEvent': return FeedMemberUpdatedEvent.fromJson(value); + case 'FeedOwnCapability': + return FeedOwnCapability.fromJson(value); + case 'FeedRequest': + return FeedRequest.fromJson(value); case 'FeedResponse': return FeedResponse.fromJson(value); case 'FeedUpdatedEvent': @@ -340,14 +410,34 @@ class ApiClient { return Field.fromJson(value); case 'FileUploadConfig': return FileUploadConfig.fromJson(value); + case 'FollowBatchRequest': + return FollowBatchRequest.fromJson(value); + case 'FollowBatchResponse': + return FollowBatchResponse.fromJson(value); case 'FollowCreatedEvent': return FollowCreatedEvent.fromJson(value); case 'FollowDeletedEvent': return FollowDeletedEvent.fromJson(value); + case 'FollowRequest': + return FollowRequest.fromJson(value); case 'FollowResponse': return FollowResponse.fromJson(value); case 'FollowUpdatedEvent': return FollowUpdatedEvent.fromJson(value); + case 'GetActivityResponse': + return GetActivityResponse.fromJson(value); + case 'GetCommentRepliesResponse': + return GetCommentRepliesResponse.fromJson(value); + case 'GetCommentResponse': + return GetCommentResponse.fromJson(value); + case 'GetCommentsResponse': + return GetCommentsResponse.fromJson(value); + case 'GetFollowSuggestionsResponse': + return GetFollowSuggestionsResponse.fromJson(value); + case 'GetOrCreateFeedRequest': + return GetOrCreateFeedRequest.fromJson(value); + case 'GetOrCreateFeedResponse': + return GetOrCreateFeedResponse.fromJson(value); case 'HealthCheckEvent': return HealthCheckEvent.fromJson(value); case 'ImageData': @@ -356,6 +446,8 @@ class ApiClient { return Images.fromJson(value); case 'LabelThresholds': return LabelThresholds.fromJson(value); + case 'MarkActivityRequest': + return MarkActivityRequest.fromJson(value); case 'ModerationV2Response': return ModerationV2Response.fromJson(value); case 'NotificationConfig': @@ -366,6 +458,10 @@ class ApiClient { return NotificationStatusResponse.fromJson(value); case 'OwnUserResponse': return OwnUserResponse.fromJson(value); + case 'PagerRequest': + return PagerRequest.fromJson(value); + case 'PagerResponse': + return PagerResponse.fromJson(value); case 'PinActivityResponse': return PinActivityResponse.fromJson(value); case 'PollClosedFeedEvent': @@ -384,6 +480,8 @@ class ApiClient { return PollVoteChangedFeedEvent.fromJson(value); case 'PollVoteRemovedFeedEvent': return PollVoteRemovedFeedEvent.fromJson(value); + case 'PollVoteResponse': + return PollVoteResponse.fromJson(value); case 'PollVoteResponseData': return PollVoteResponseData.fromJson(value); case 'PrivacySettings': @@ -392,20 +490,112 @@ class ApiClient { return PrivacySettingsResponse.fromJson(value); case 'PushPreferences': return PushPreferences.fromJson(value); + case 'QueryActivitiesRequest': + return QueryActivitiesRequest.fromJson(value); + case 'QueryActivitiesResponse': + return QueryActivitiesResponse.fromJson(value); + case 'QueryActivityReactionsRequest': + return QueryActivityReactionsRequest.fromJson(value); + case 'QueryActivityReactionsResponse': + return QueryActivityReactionsResponse.fromJson(value); + case 'QueryBookmarkFoldersRequest': + return QueryBookmarkFoldersRequest.fromJson(value); + case 'QueryBookmarkFoldersResponse': + return QueryBookmarkFoldersResponse.fromJson(value); + case 'QueryBookmarksRequest': + return QueryBookmarksRequest.fromJson(value); + case 'QueryBookmarksResponse': + return QueryBookmarksResponse.fromJson(value); + case 'QueryCommentReactionsRequest': + return QueryCommentReactionsRequest.fromJson(value); + case 'QueryCommentReactionsResponse': + return QueryCommentReactionsResponse.fromJson(value); + case 'QueryCommentsRequest': + return QueryCommentsRequest.fromJson(value); + case 'QueryCommentsResponse': + return QueryCommentsResponse.fromJson(value); + case 'QueryFeedMembersRequest': + return QueryFeedMembersRequest.fromJson(value); + case 'QueryFeedMembersResponse': + return QueryFeedMembersResponse.fromJson(value); + case 'QueryFeedsRequest': + return QueryFeedsRequest.fromJson(value); + case 'QueryFeedsResponse': + return QueryFeedsResponse.fromJson(value); + case 'QueryFollowsRequest': + return QueryFollowsRequest.fromJson(value); + case 'QueryFollowsResponse': + return QueryFollowsResponse.fromJson(value); case 'ReactionGroupResponse': return ReactionGroupResponse.fromJson(value); case 'ReadReceipts': return ReadReceipts.fromJson(value); case 'ReadReceiptsResponse': return ReadReceiptsResponse.fromJson(value); + case 'RejectFeedMemberInviteResponse': + return RejectFeedMemberInviteResponse.fromJson(value); + case 'RejectFollowRequest': + return RejectFollowRequest.fromJson(value); + case 'RejectFollowResponse': + return RejectFollowResponse.fromJson(value); + case 'RepliesMeta': + return RepliesMeta.fromJson(value); + case 'SingleFollowRequest': + return SingleFollowRequest.fromJson(value); + case 'SingleFollowResponse': + return SingleFollowResponse.fromJson(value); + case 'SortParamRequest': + return SortParamRequest.fromJson(value); case 'StoriesConfig': return StoriesConfig.fromJson(value); + case 'ThreadedCommentResponse': + return ThreadedCommentResponse.fromJson(value); case 'Thresholds': return Thresholds.fromJson(value); case 'TypingIndicators': return TypingIndicators.fromJson(value); case 'TypingIndicatorsResponse': return TypingIndicatorsResponse.fromJson(value); + case 'UnfollowResponse': + return UnfollowResponse.fromJson(value); + case 'UnpinActivityResponse': + return UnpinActivityResponse.fromJson(value); + case 'UpdateActivityPartialRequest': + return UpdateActivityPartialRequest.fromJson(value); + case 'UpdateActivityPartialResponse': + return UpdateActivityPartialResponse.fromJson(value); + case 'UpdateActivityRequest': + return UpdateActivityRequest.fromJson(value); + case 'UpdateActivityResponse': + return UpdateActivityResponse.fromJson(value); + case 'UpdateBookmarkFolderRequest': + return UpdateBookmarkFolderRequest.fromJson(value); + case 'UpdateBookmarkFolderResponse': + return UpdateBookmarkFolderResponse.fromJson(value); + case 'UpdateBookmarkRequest': + return UpdateBookmarkRequest.fromJson(value); + case 'UpdateBookmarkResponse': + return UpdateBookmarkResponse.fromJson(value); + case 'UpdateCommentRequest': + return UpdateCommentRequest.fromJson(value); + case 'UpdateCommentResponse': + return UpdateCommentResponse.fromJson(value); + case 'UpdateFeedMembersRequest': + return UpdateFeedMembersRequest.fromJson(value); + case 'UpdateFeedMembersResponse': + return UpdateFeedMembersResponse.fromJson(value); + case 'UpdateFeedRequest': + return UpdateFeedRequest.fromJson(value); + case 'UpdateFeedResponse': + return UpdateFeedResponse.fromJson(value); + case 'UpdateFollowRequest': + return UpdateFollowRequest.fromJson(value); + case 'UpdateFollowResponse': + return UpdateFollowResponse.fromJson(value); + case 'UpsertActivitiesRequest': + return UpsertActivitiesRequest.fromJson(value); + case 'UpsertActivitiesResponse': + return UpsertActivitiesResponse.fromJson(value); case 'User': return User.fromJson(value); case 'UserBannedEvent': @@ -426,6 +616,8 @@ class ApiClient { return UserResponsePrivacyFields.fromJson(value); case 'UserUpdatedEvent': return UserUpdatedEvent.fromJson(value); + case 'VoteData': + return VoteData.fromJson(value); case 'WSClientEvent': return WSClientEvent.fromJson(value); case 'WSEvent': diff --git a/packages/stream_feeds/lib/generated/api/api_exception.g.dart b/packages/stream_feeds/lib/src/generated/api/api_exception.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/api_exception.g.dart rename to packages/stream_feeds/lib/src/generated/api/api_exception.g.dart diff --git a/packages/stream_feeds/lib/generated/api/api_helper.g.dart b/packages/stream_feeds/lib/src/generated/api/api_helper.g.dart similarity index 89% rename from packages/stream_feeds/lib/generated/api/api_helper.g.dart rename to packages/stream_feeds/lib/src/generated/api/api_helper.g.dart index 109ad0ef..67090f07 100644 --- a/packages/stream_feeds/lib/generated/api/api_helper.g.dart +++ b/packages/stream_feeds/lib/src/generated/api/api_helper.g.dart @@ -96,6 +96,15 @@ T? mapValueOfType(dynamic map, String key, [T? defaultValue]) { /// Returns a valid Map found at the specified Map [key], null otherwise. Map? mapCastOfType(dynamic map, String key) { final dynamic value = map is Map ? map[key] : null; + if (value is! Map) { + return null; + } + // TODO: use json_serializable for json mapping + if (V == ReactionGroupResponse) { + return value.map( + (key, value) => MapEntry(key, ReactionGroupResponse.fromJson(value) as V), + ); + } return value is Map ? value.cast() : null; } @@ -103,18 +112,21 @@ Map? mapCastOfType(dynamic map, String key) { DateTime? mapDateTime(dynamic map, String key, [String? pattern]) { final dynamic value = map is Map ? map[key] : null; if (value != null) { - int? millis; + int? nanos; if (value is int) { - millis = value; + nanos = value; } else if (value is String) { if (_isEpochMarker(pattern)) { - millis = int.tryParse(value); + nanos = int.tryParse(value); } else { return DateTime.tryParse(value); } } - if (millis != null) { - return DateTime.fromMillisecondsSinceEpoch(millis, isUtc: true); + if (nanos != null) { + return DateTime.fromMicrosecondsSinceEpoch( + nanos ~/ 1000, + isUtc: true, + ); } } return null; diff --git a/packages/stream_feeds/lib/generated/api/auth/api_key_auth.g.dart b/packages/stream_feeds/lib/src/generated/api/auth/api_key_auth.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/auth/api_key_auth.g.dart rename to packages/stream_feeds/lib/src/generated/api/auth/api_key_auth.g.dart diff --git a/packages/stream_feeds/lib/generated/api/auth/authentication.g.dart b/packages/stream_feeds/lib/src/generated/api/auth/authentication.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/auth/authentication.g.dart rename to packages/stream_feeds/lib/src/generated/api/auth/authentication.g.dart diff --git a/packages/stream_feeds/lib/generated/api/auth/http_basic_auth.g.dart b/packages/stream_feeds/lib/src/generated/api/auth/http_basic_auth.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/auth/http_basic_auth.g.dart rename to packages/stream_feeds/lib/src/generated/api/auth/http_basic_auth.g.dart diff --git a/packages/stream_feeds/lib/generated/api/auth/http_bearer_auth.g.dart b/packages/stream_feeds/lib/src/generated/api/auth/http_bearer_auth.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/auth/http_bearer_auth.g.dart rename to packages/stream_feeds/lib/src/generated/api/auth/http_bearer_auth.g.dart diff --git a/packages/stream_feeds/lib/generated/api/auth/oauth.g.dart b/packages/stream_feeds/lib/src/generated/api/auth/oauth.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/auth/oauth.g.dart rename to packages/stream_feeds/lib/src/generated/api/auth/oauth.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/accept_feed_member_invite_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/accept_feed_member_invite_response.g.dart new file mode 100644 index 00000000..6e2bab01 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/accept_feed_member_invite_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AcceptFeedMemberInviteResponse { + const AcceptFeedMemberInviteResponse({ + required this.duration, + required this.member, + }); + + final String duration; + + final FeedMemberResponse member; + + Map toJson() { + return { + 'duration': duration, + 'member': member, + }; + } + + static AcceptFeedMemberInviteResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AcceptFeedMemberInviteResponse( + duration: mapValueOfType(json, r'duration')!, + member: FeedMemberResponse.fromJson(json[r'member'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AcceptFeedMemberInviteResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AcceptFeedMemberInviteResponse(' + 'duration: $duration, ' + 'member: $member, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AcceptFeedMemberInviteResponse && + other.duration == duration && + other.member == member; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + member, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/accept_follow_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/accept_follow_request.g.dart new file mode 100644 index 00000000..3287996c --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/accept_follow_request.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AcceptFollowRequest { + const AcceptFollowRequest({ + this.followerRole, + required this.sourceFid, + required this.targetFid, + }); + + final String? followerRole; + + final String sourceFid; + + final String targetFid; + + Map toJson() { + return { + 'follower_role': followerRole, + 'source_fid': sourceFid, + 'target_fid': targetFid, + }; + } + + static AcceptFollowRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AcceptFollowRequest( + followerRole: mapValueOfType(json, r'follower_role', null), + sourceFid: mapValueOfType(json, r'source_fid')!, + targetFid: mapValueOfType(json, r'target_fid')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AcceptFollowRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AcceptFollowRequest(' + 'followerRole: $followerRole, ' + 'sourceFid: $sourceFid, ' + 'targetFid: $targetFid, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AcceptFollowRequest && + other.followerRole == followerRole && + other.sourceFid == sourceFid && + other.targetFid == targetFid; + } + + @override + int get hashCode { + return Object.hashAll([ + followerRole, + sourceFid, + targetFid, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/accept_follow_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/accept_follow_response.g.dart new file mode 100644 index 00000000..e82aff4e --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/accept_follow_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AcceptFollowResponse { + const AcceptFollowResponse({ + required this.duration, + required this.follow, + }); + + final String duration; + + final FollowResponse follow; + + Map toJson() { + return { + 'duration': duration, + 'follow': follow, + }; + } + + static AcceptFollowResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AcceptFollowResponse( + duration: mapValueOfType(json, r'duration')!, + follow: FollowResponse.fromJson(json[r'follow'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AcceptFollowResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AcceptFollowResponse(' + 'duration: $duration, ' + 'follow: $follow, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AcceptFollowResponse && + other.duration == duration && + other.follow == follow; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + follow, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/action.g.dart b/packages/stream_feeds/lib/src/generated/api/model/action.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/action.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/action.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_added_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_added_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_added_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_added_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_location.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_location.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_location.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_location.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_mark_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_mark_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_mark_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_mark_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/activity_pin_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_pin_response.g.dart new file mode 100644 index 00000000..3e92d096 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/activity_pin_response.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class ActivityPinResponse { + const ActivityPinResponse({ + required this.activity, + required this.createdAt, + required this.feed, + required this.updatedAt, + required this.user, + }); + + final ActivityResponse activity; + + final DateTime createdAt; + + final String feed; + + final DateTime updatedAt; + + final UserResponse user; + + Map toJson() { + return { + 'activity': activity, + 'created_at': createdAt, + 'feed': feed, + 'updated_at': updatedAt, + 'user': user, + }; + } + + static ActivityPinResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return ActivityPinResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + createdAt: mapValueOfType(json, r'created_at')!, + feed: mapValueOfType(json, r'feed')!, + updatedAt: mapValueOfType(json, r'updated_at')!, + user: UserResponse.fromJson(json[r'user'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = ActivityPinResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'ActivityPinResponse(' + 'activity: $activity, ' + 'createdAt: $createdAt, ' + 'feed: $feed, ' + 'updatedAt: $updatedAt, ' + 'user: $user, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is ActivityPinResponse && + other.activity == activity && + other.createdAt == createdAt && + other.feed == feed && + other.updatedAt == updatedAt && + other.user == user; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + createdAt, + feed, + updatedAt, + user, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/activity_pinned_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_pinned_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_pinned_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_pinned_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_reaction_added_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_reaction_added_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_reaction_added_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_reaction_added_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_reaction_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_reaction_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_reaction_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_reaction_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_reaction_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_reaction_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_reaction_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_reaction_updated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_removed_from_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_removed_from_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_removed_from_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_removed_from_feed_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/activity_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_request.g.dart new file mode 100644 index 00000000..db2b8fbb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/activity_request.g.dart @@ -0,0 +1,233 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum ActivityRequestVisibilityEnum { + private('private'), + public('public'), + tag('tag'), + unknown('_unknown'); + + const ActivityRequestVisibilityEnum(this.value); + final String value; + + static ActivityRequestVisibilityEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'private': + return ActivityRequestVisibilityEnum.private; + case 'public': + return ActivityRequestVisibilityEnum.public; + case 'tag': + return ActivityRequestVisibilityEnum.tag; + default: + return ActivityRequestVisibilityEnum.unknown; + } + } +} + +@immutable +class ActivityRequest { + const ActivityRequest({ + this.attachments, + this.custom, + this.expiresAt, + required this.fids, + this.filterTags, + this.id, + this.interestTags, + this.location, + this.mentionedUserIds, + this.parentId, + this.pollId, + this.searchData, + this.text, + required this.type, + this.visibility, + this.visibilityTag, + }); + + final List? attachments; + + final Map? custom; + + final String? expiresAt; + + final List fids; + + final List? filterTags; + + final String? id; + + final List? interestTags; + + final ActivityLocation? location; + + final List? mentionedUserIds; + + final String? parentId; + + final String? pollId; + + final Map? searchData; + + final String? text; + + final String type; + + final ActivityRequestVisibilityEnum? visibility; + + final String? visibilityTag; + + Map toJson() { + return { + 'attachments': attachments, + 'custom': custom, + 'expires_at': expiresAt, + 'fids': fids, + 'filter_tags': filterTags, + 'id': id, + 'interest_tags': interestTags, + 'location': location, + 'mentioned_user_ids': mentionedUserIds, + 'parent_id': parentId, + 'poll_id': pollId, + 'search_data': searchData, + 'text': text, + 'type': type, + 'visibility': visibility, + 'visibility_tag': visibilityTag, + }; + } + + static ActivityRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return ActivityRequest( + attachments: Attachment.listFromJson(json[r'attachments']), + custom: mapCastOfType(json, r'custom'), + expiresAt: mapValueOfType(json, r'expires_at', null), + fids: json[r'fids'] is Iterable + ? (json[r'fids'] as Iterable).cast().toList(growable: false) + : const [], + filterTags: json[r'filter_tags'] is Iterable + ? (json[r'filter_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + id: mapValueOfType(json, r'id', null), + interestTags: json[r'interest_tags'] is Iterable + ? (json[r'interest_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + location: ActivityLocation.fromJson(json[r'location'] ?? null), + mentionedUserIds: json[r'mentioned_user_ids'] is Iterable + ? (json[r'mentioned_user_ids'] as Iterable) + .cast() + .toList(growable: false) + : const [], + parentId: mapValueOfType(json, r'parent_id', null), + pollId: mapValueOfType(json, r'poll_id', null), + searchData: mapCastOfType(json, r'search_data'), + text: mapValueOfType(json, r'text', null), + type: mapValueOfType(json, r'type')!, + visibility: ActivityRequestVisibilityEnum.fromValue(json['visibility']), + visibilityTag: mapValueOfType(json, r'visibility_tag', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = ActivityRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'ActivityRequest(' + 'attachments: $attachments, ' + 'custom: $custom, ' + 'expiresAt: $expiresAt, ' + 'fids: $fids, ' + 'filterTags: $filterTags, ' + 'id: $id, ' + 'interestTags: $interestTags, ' + 'location: $location, ' + 'mentionedUserIds: $mentionedUserIds, ' + 'parentId: $parentId, ' + 'pollId: $pollId, ' + 'searchData: $searchData, ' + 'text: $text, ' + 'type: $type, ' + 'visibility: $visibility, ' + 'visibilityTag: $visibilityTag, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is ActivityRequest && + other.attachments == attachments && + other.custom == custom && + other.expiresAt == expiresAt && + other.fids == fids && + other.filterTags == filterTags && + other.id == id && + other.interestTags == interestTags && + other.location == location && + other.mentionedUserIds == mentionedUserIds && + other.parentId == parentId && + other.pollId == pollId && + other.searchData == searchData && + other.text == text && + other.type == type && + other.visibility == visibility && + other.visibilityTag == visibilityTag; + } + + @override + int get hashCode { + return Object.hashAll([ + attachments, + custom, + expiresAt, + fids, + filterTags, + id, + interestTags, + location, + mentionedUserIds, + parentId, + pollId, + searchData, + text, + type, + visibility, + visibilityTag, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_unpinned_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_unpinned_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_unpinned_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_unpinned_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/activity_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/activity_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/activity_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/activity_updated_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_activity_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_activity_request.g.dart new file mode 100644 index 00000000..bf2b1c83 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_activity_request.g.dart @@ -0,0 +1,234 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum AddActivityRequestVisibilityEnum { + private('private'), + public('public'), + tag('tag'), + unknown('_unknown'); + + const AddActivityRequestVisibilityEnum(this.value); + final String value; + + static AddActivityRequestVisibilityEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'private': + return AddActivityRequestVisibilityEnum.private; + case 'public': + return AddActivityRequestVisibilityEnum.public; + case 'tag': + return AddActivityRequestVisibilityEnum.tag; + default: + return AddActivityRequestVisibilityEnum.unknown; + } + } +} + +@immutable +class AddActivityRequest { + const AddActivityRequest({ + this.attachments, + this.custom, + this.expiresAt, + required this.fids, + this.filterTags, + this.id, + this.interestTags, + this.location, + this.mentionedUserIds, + this.parentId, + this.pollId, + this.searchData, + this.text, + required this.type, + this.visibility, + this.visibilityTag, + }); + + final List? attachments; + + final Map? custom; + + final String? expiresAt; + + final List fids; + + final List? filterTags; + + final String? id; + + final List? interestTags; + + final ActivityLocation? location; + + final List? mentionedUserIds; + + final String? parentId; + + final String? pollId; + + final Map? searchData; + + final String? text; + + final String type; + + final AddActivityRequestVisibilityEnum? visibility; + + final String? visibilityTag; + + Map toJson() { + return { + 'attachments': attachments, + 'custom': custom, + 'expires_at': expiresAt, + 'fids': fids, + 'filter_tags': filterTags, + 'id': id, + 'interest_tags': interestTags, + 'location': location, + 'mentioned_user_ids': mentionedUserIds, + 'parent_id': parentId, + 'poll_id': pollId, + 'search_data': searchData, + 'text': text, + 'type': type, + 'visibility': visibility, + 'visibility_tag': visibilityTag, + }; + } + + static AddActivityRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddActivityRequest( + attachments: Attachment.listFromJson(json[r'attachments']), + custom: mapCastOfType(json, r'custom'), + expiresAt: mapValueOfType(json, r'expires_at', null), + fids: json[r'fids'] is Iterable + ? (json[r'fids'] as Iterable).cast().toList(growable: false) + : const [], + filterTags: json[r'filter_tags'] is Iterable + ? (json[r'filter_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + id: mapValueOfType(json, r'id', null), + interestTags: json[r'interest_tags'] is Iterable + ? (json[r'interest_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + location: ActivityLocation.fromJson(json[r'location'] ?? null), + mentionedUserIds: json[r'mentioned_user_ids'] is Iterable + ? (json[r'mentioned_user_ids'] as Iterable) + .cast() + .toList(growable: false) + : const [], + parentId: mapValueOfType(json, r'parent_id', null), + pollId: mapValueOfType(json, r'poll_id', null), + searchData: mapCastOfType(json, r'search_data'), + text: mapValueOfType(json, r'text', null), + type: mapValueOfType(json, r'type')!, + visibility: + AddActivityRequestVisibilityEnum.fromValue(json['visibility']), + visibilityTag: mapValueOfType(json, r'visibility_tag', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddActivityRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddActivityRequest(' + 'attachments: $attachments, ' + 'custom: $custom, ' + 'expiresAt: $expiresAt, ' + 'fids: $fids, ' + 'filterTags: $filterTags, ' + 'id: $id, ' + 'interestTags: $interestTags, ' + 'location: $location, ' + 'mentionedUserIds: $mentionedUserIds, ' + 'parentId: $parentId, ' + 'pollId: $pollId, ' + 'searchData: $searchData, ' + 'text: $text, ' + 'type: $type, ' + 'visibility: $visibility, ' + 'visibilityTag: $visibilityTag, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddActivityRequest && + other.attachments == attachments && + other.custom == custom && + other.expiresAt == expiresAt && + other.fids == fids && + other.filterTags == filterTags && + other.id == id && + other.interestTags == interestTags && + other.location == location && + other.mentionedUserIds == mentionedUserIds && + other.parentId == parentId && + other.pollId == pollId && + other.searchData == searchData && + other.text == text && + other.type == type && + other.visibility == visibility && + other.visibilityTag == visibilityTag; + } + + @override + int get hashCode { + return Object.hashAll([ + attachments, + custom, + expiresAt, + fids, + filterTags, + id, + interestTags, + location, + mentionedUserIds, + parentId, + pollId, + searchData, + text, + type, + visibility, + visibilityTag, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_activity_response.g.dart new file mode 100644 index 00000000..459aa1ff --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_activity_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddActivityResponse { + const AddActivityResponse({ + required this.activity, + required this.duration, + }); + + final ActivityResponse activity; + + final String duration; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + }; + } + + static AddActivityResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddActivityResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddActivityResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddActivityResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddActivityResponse && + other.activity == activity && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_bookmark_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_bookmark_request.g.dart new file mode 100644 index 00000000..232b4d94 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_bookmark_request.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddBookmarkRequest { + const AddBookmarkRequest({ + this.custom, + this.folderId, + this.newFolder, + }); + + final Map? custom; + + final String? folderId; + + final AddFolderRequest? newFolder; + + Map toJson() { + return { + 'custom': custom, + 'folder_id': folderId, + 'new_folder': newFolder, + }; + } + + static AddBookmarkRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddBookmarkRequest( + custom: mapCastOfType(json, r'custom'), + folderId: mapValueOfType(json, r'folder_id', null), + newFolder: AddFolderRequest.fromJson(json[r'new_folder'] ?? null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddBookmarkRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddBookmarkRequest(' + 'custom: $custom, ' + 'folderId: $folderId, ' + 'newFolder: $newFolder, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddBookmarkRequest && + other.custom == custom && + other.folderId == folderId && + other.newFolder == newFolder; + } + + @override + int get hashCode { + return Object.hashAll([ + custom, + folderId, + newFolder, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_bookmark_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_bookmark_response.g.dart new file mode 100644 index 00000000..aa74eecd --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_bookmark_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddBookmarkResponse { + const AddBookmarkResponse({ + required this.bookmark, + required this.duration, + }); + + final BookmarkResponse bookmark; + + final String duration; + + Map toJson() { + return { + 'bookmark': bookmark, + 'duration': duration, + }; + } + + static AddBookmarkResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddBookmarkResponse( + bookmark: BookmarkResponse.fromJson(json[r'bookmark'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddBookmarkResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddBookmarkResponse(' + 'bookmark: $bookmark, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddBookmarkResponse && + other.bookmark == bookmark && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + bookmark, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_comment_reaction_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_comment_reaction_request.g.dart new file mode 100644 index 00000000..d0153bef --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_comment_reaction_request.g.dart @@ -0,0 +1,91 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddCommentReactionRequest { + const AddCommentReactionRequest({ + this.createNotificationActivity, + this.custom, + required this.type, + }); + + final bool? createNotificationActivity; + + final Map? custom; + + final String type; + + Map toJson() { + return { + 'create_notification_activity': createNotificationActivity, + 'custom': custom, + 'type': type, + }; + } + + static AddCommentReactionRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddCommentReactionRequest( + createNotificationActivity: + mapValueOfType(json, r'create_notification_activity', null), + custom: mapCastOfType(json, r'custom'), + type: mapValueOfType(json, r'type')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddCommentReactionRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddCommentReactionRequest(' + 'createNotificationActivity: $createNotificationActivity, ' + 'custom: $custom, ' + 'type: $type, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddCommentReactionRequest && + other.createNotificationActivity == createNotificationActivity && + other.custom == custom && + other.type == type; + } + + @override + int get hashCode { + return Object.hashAll([ + createNotificationActivity, + custom, + type, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_comment_reaction_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_comment_reaction_response.g.dart new file mode 100644 index 00000000..0f62f3dc --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_comment_reaction_response.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddCommentReactionResponse { + const AddCommentReactionResponse({ + required this.comment, + required this.duration, + required this.reaction, + }); + + final CommentResponse comment; + + final String duration; + + final FeedsReactionResponse reaction; + + Map toJson() { + return { + 'comment': comment, + 'duration': duration, + 'reaction': reaction, + }; + } + + static AddCommentReactionResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddCommentReactionResponse( + comment: CommentResponse.fromJson(json[r'comment'])!, + duration: mapValueOfType(json, r'duration')!, + reaction: FeedsReactionResponse.fromJson(json[r'reaction'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddCommentReactionResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddCommentReactionResponse(' + 'comment: $comment, ' + 'duration: $duration, ' + 'reaction: $reaction, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddCommentReactionResponse && + other.comment == comment && + other.duration == duration && + other.reaction == reaction; + } + + @override + int get hashCode { + return Object.hashAll([ + comment, + duration, + reaction, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_comment_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_comment_request.g.dart new file mode 100644 index 00000000..8e0f1ad1 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_comment_request.g.dart @@ -0,0 +1,135 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddCommentRequest { + const AddCommentRequest({ + this.attachments, + required this.comment, + this.createNotificationActivity, + this.custom, + this.mentionedUserIds, + required this.objectId, + required this.objectType, + this.parentId, + }); + + final List? attachments; + + final String comment; + + final bool? createNotificationActivity; + + final Map? custom; + + final List? mentionedUserIds; + + final String objectId; + + final String objectType; + + final String? parentId; + + Map toJson() { + return { + 'attachments': attachments, + 'comment': comment, + 'create_notification_activity': createNotificationActivity, + 'custom': custom, + 'mentioned_user_ids': mentionedUserIds, + 'object_id': objectId, + 'object_type': objectType, + 'parent_id': parentId, + }; + } + + static AddCommentRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddCommentRequest( + attachments: Attachment.listFromJson(json[r'attachments']), + comment: mapValueOfType(json, r'comment')!, + createNotificationActivity: + mapValueOfType(json, r'create_notification_activity', null), + custom: mapCastOfType(json, r'custom'), + mentionedUserIds: json[r'mentioned_user_ids'] is Iterable + ? (json[r'mentioned_user_ids'] as Iterable) + .cast() + .toList(growable: false) + : const [], + objectId: mapValueOfType(json, r'object_id')!, + objectType: mapValueOfType(json, r'object_type')!, + parentId: mapValueOfType(json, r'parent_id', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddCommentRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddCommentRequest(' + 'attachments: $attachments, ' + 'comment: $comment, ' + 'createNotificationActivity: $createNotificationActivity, ' + 'custom: $custom, ' + 'mentionedUserIds: $mentionedUserIds, ' + 'objectId: $objectId, ' + 'objectType: $objectType, ' + 'parentId: $parentId, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddCommentRequest && + other.attachments == attachments && + other.comment == comment && + other.createNotificationActivity == createNotificationActivity && + other.custom == custom && + other.mentionedUserIds == mentionedUserIds && + other.objectId == objectId && + other.objectType == objectType && + other.parentId == parentId; + } + + @override + int get hashCode { + return Object.hashAll([ + attachments, + comment, + createNotificationActivity, + custom, + mentionedUserIds, + objectId, + objectType, + parentId, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_comment_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_comment_response.g.dart new file mode 100644 index 00000000..f6cdfe73 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_comment_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddCommentResponse { + const AddCommentResponse({ + required this.comment, + required this.duration, + }); + + final CommentResponse comment; + + final String duration; + + Map toJson() { + return { + 'comment': comment, + 'duration': duration, + }; + } + + static AddCommentResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddCommentResponse( + comment: CommentResponse.fromJson(json[r'comment'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddCommentResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddCommentResponse(' + 'comment: $comment, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddCommentResponse && + other.comment == comment && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + comment, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_comments_batch_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_comments_batch_request.g.dart new file mode 100644 index 00000000..968856d0 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_comments_batch_request.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddCommentsBatchRequest { + const AddCommentsBatchRequest({ + required this.comments, + }); + + final List comments; + + Map toJson() { + return { + 'comments': comments, + }; + } + + static AddCommentsBatchRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddCommentsBatchRequest( + comments: AddCommentRequest.listFromJson(json[r'comments']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddCommentsBatchRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddCommentsBatchRequest(' + 'comments: $comments, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddCommentsBatchRequest && other.comments == comments; + } + + @override + int get hashCode { + return Object.hashAll([ + comments, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_comments_batch_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_comments_batch_response.g.dart new file mode 100644 index 00000000..28a79a37 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_comments_batch_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddCommentsBatchResponse { + const AddCommentsBatchResponse({ + required this.comments, + required this.duration, + }); + + final List comments; + + final String duration; + + Map toJson() { + return { + 'comments': comments, + 'duration': duration, + }; + } + + static AddCommentsBatchResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddCommentsBatchResponse( + comments: CommentResponse.listFromJson(json[r'comments']), + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddCommentsBatchResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddCommentsBatchResponse(' + 'comments: $comments, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddCommentsBatchResponse && + other.comments == comments && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + comments, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_folder_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_folder_request.g.dart new file mode 100644 index 00000000..f6b4848a --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_folder_request.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddFolderRequest { + const AddFolderRequest({ + this.custom, + required this.name, + }); + + final Map? custom; + + final String name; + + Map toJson() { + return { + 'custom': custom, + 'name': name, + }; + } + + static AddFolderRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddFolderRequest( + custom: mapCastOfType(json, r'custom'), + name: mapValueOfType(json, r'name')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddFolderRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddFolderRequest(' + 'custom: $custom, ' + 'name: $name, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddFolderRequest && + other.custom == custom && + other.name == name; + } + + @override + int get hashCode { + return Object.hashAll([ + custom, + name, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_reaction_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_reaction_request.g.dart new file mode 100644 index 00000000..249446ab --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_reaction_request.g.dart @@ -0,0 +1,91 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddReactionRequest { + const AddReactionRequest({ + this.createNotificationActivity, + this.custom, + required this.type, + }); + + final bool? createNotificationActivity; + + final Map? custom; + + final String type; + + Map toJson() { + return { + 'create_notification_activity': createNotificationActivity, + 'custom': custom, + 'type': type, + }; + } + + static AddReactionRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddReactionRequest( + createNotificationActivity: + mapValueOfType(json, r'create_notification_activity', null), + custom: mapCastOfType(json, r'custom'), + type: mapValueOfType(json, r'type')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddReactionRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddReactionRequest(' + 'createNotificationActivity: $createNotificationActivity, ' + 'custom: $custom, ' + 'type: $type, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddReactionRequest && + other.createNotificationActivity == createNotificationActivity && + other.custom == custom && + other.type == type; + } + + @override + int get hashCode { + return Object.hashAll([ + createNotificationActivity, + custom, + type, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/add_reaction_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/add_reaction_response.g.dart new file mode 100644 index 00000000..4e26b814 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/add_reaction_response.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class AddReactionResponse { + const AddReactionResponse({ + required this.activity, + required this.duration, + required this.reaction, + }); + + final ActivityResponse activity; + + final String duration; + + final FeedsReactionResponse reaction; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + 'reaction': reaction, + }; + } + + static AddReactionResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return AddReactionResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + reaction: FeedsReactionResponse.fromJson(json[r'reaction'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = AddReactionResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'AddReactionResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + 'reaction: $reaction, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is AddReactionResponse && + other.activity == activity && + other.duration == duration && + other.reaction == reaction; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + reaction, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/aggregated_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/aggregated_activity_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/aggregated_activity_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/aggregated_activity_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/api_error.g.dart b/packages/stream_feeds/lib/src/generated/api/model/api_error.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/api_error.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/api_error.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/app_event_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/app_event_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/app_event_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/app_event_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/app_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/app_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/app_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/app_updated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/attachment.g.dart b/packages/stream_feeds/lib/src/generated/api/model/attachment.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/attachment.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/attachment.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/block_list_options.g.dart b/packages/stream_feeds/lib/src/generated/api/model/block_list_options.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/block_list_options.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/block_list_options.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_added_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_added_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_added_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_added_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_folder_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_folder_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_folder_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_folder_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_folder_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_folder_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_folder_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_folder_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_folder_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_folder_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_folder_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_folder_updated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/bookmark_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/bookmark_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/bookmark_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/bookmark_updated_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/cast_poll_vote_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/cast_poll_vote_request.g.dart new file mode 100644 index 00000000..6eae81bb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/cast_poll_vote_request.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class CastPollVoteRequest { + const CastPollVoteRequest({ + this.vote, + }); + + final VoteData? vote; + + Map toJson() { + return { + 'vote': vote, + }; + } + + static CastPollVoteRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return CastPollVoteRequest( + vote: VoteData.fromJson(json[r'vote'] ?? null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = CastPollVoteRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'CastPollVoteRequest(' + 'vote: $vote, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is CastPollVoteRequest && other.vote == vote; + } + + @override + int get hashCode { + return Object.hashAll([ + vote, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/channel_config_with_info.g.dart b/packages/stream_feeds/lib/src/generated/api/model/channel_config_with_info.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/channel_config_with_info.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/channel_config_with_info.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/channel_member.g.dart b/packages/stream_feeds/lib/src/generated/api/model/channel_member.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/channel_member.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/channel_member.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/channel_mute.g.dart b/packages/stream_feeds/lib/src/generated/api/model/channel_mute.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/channel_mute.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/channel_mute.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/channel_own_capability.g.dart b/packages/stream_feeds/lib/src/generated/api/model/channel_own_capability.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/channel_own_capability.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/channel_own_capability.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/channel_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/channel_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/channel_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/channel_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/command.g.dart b/packages/stream_feeds/lib/src/generated/api/model/command.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/command.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/command.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_added_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_added_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_added_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_added_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_reaction_added_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_reaction_added_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_reaction_added_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_reaction_added_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_reaction_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_reaction_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_reaction_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_reaction_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_reaction_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_reaction_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_reaction_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_reaction_updated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/comment_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/comment_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/comment_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/comment_updated_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/create_feeds_batch_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/create_feeds_batch_request.g.dart new file mode 100644 index 00000000..079a52cb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/create_feeds_batch_request.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class CreateFeedsBatchRequest { + const CreateFeedsBatchRequest({ + required this.feeds, + }); + + final List feeds; + + Map toJson() { + return { + 'feeds': feeds, + }; + } + + static CreateFeedsBatchRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return CreateFeedsBatchRequest( + feeds: FeedRequest.listFromJson(json[r'feeds']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = CreateFeedsBatchRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'CreateFeedsBatchRequest(' + 'feeds: $feeds, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is CreateFeedsBatchRequest && other.feeds == feeds; + } + + @override + int get hashCode { + return Object.hashAll([ + feeds, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/create_feeds_batch_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/create_feeds_batch_response.g.dart new file mode 100644 index 00000000..a8dc3af3 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/create_feeds_batch_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class CreateFeedsBatchResponse { + const CreateFeedsBatchResponse({ + required this.duration, + required this.feeds, + }); + + final String duration; + + final List feeds; + + Map toJson() { + return { + 'duration': duration, + 'feeds': feeds, + }; + } + + static CreateFeedsBatchResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return CreateFeedsBatchResponse( + duration: mapValueOfType(json, r'duration')!, + feeds: FeedResponse.listFromJson(json[r'feeds']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = CreateFeedsBatchResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'CreateFeedsBatchResponse(' + 'duration: $duration, ' + 'feeds: $feeds, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is CreateFeedsBatchResponse && + other.duration == duration && + other.feeds == feeds; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + feeds, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_activities_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_activities_request.g.dart new file mode 100644 index 00000000..ad80a4ca --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_activities_request.g.dart @@ -0,0 +1,86 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteActivitiesRequest { + const DeleteActivitiesRequest({ + required this.activityIds, + this.hardDelete, + }); + + final List activityIds; + + final bool? hardDelete; + + Map toJson() { + return { + 'activity_ids': activityIds, + 'hard_delete': hardDelete, + }; + } + + static DeleteActivitiesRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteActivitiesRequest( + activityIds: json[r'activity_ids'] is Iterable + ? (json[r'activity_ids'] as Iterable) + .cast() + .toList(growable: false) + : const [], + hardDelete: mapValueOfType(json, r'hard_delete', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteActivitiesRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteActivitiesRequest(' + 'activityIds: $activityIds, ' + 'hardDelete: $hardDelete, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteActivitiesRequest && + other.activityIds == activityIds && + other.hardDelete == hardDelete; + } + + @override + int get hashCode { + return Object.hashAll([ + activityIds, + hardDelete, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_activities_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_activities_response.g.dart new file mode 100644 index 00000000..07aad3b5 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_activities_response.g.dart @@ -0,0 +1,86 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteActivitiesResponse { + const DeleteActivitiesResponse({ + required this.deletedActivityIds, + required this.duration, + }); + + final List deletedActivityIds; + + final String duration; + + Map toJson() { + return { + 'deleted_activity_ids': deletedActivityIds, + 'duration': duration, + }; + } + + static DeleteActivitiesResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteActivitiesResponse( + deletedActivityIds: json[r'deleted_activity_ids'] is Iterable + ? (json[r'deleted_activity_ids'] as Iterable) + .cast() + .toList(growable: false) + : const [], + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteActivitiesResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteActivitiesResponse(' + 'deletedActivityIds: $deletedActivityIds, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteActivitiesResponse && + other.deletedActivityIds == deletedActivityIds && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + deletedActivityIds, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_activity_reaction_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_activity_reaction_response.g.dart new file mode 100644 index 00000000..14c89598 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_activity_reaction_response.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteActivityReactionResponse { + const DeleteActivityReactionResponse({ + required this.activity, + required this.duration, + required this.reaction, + }); + + final ActivityResponse activity; + + final String duration; + + final FeedsReactionResponse reaction; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + 'reaction': reaction, + }; + } + + static DeleteActivityReactionResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteActivityReactionResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + reaction: FeedsReactionResponse.fromJson(json[r'reaction'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteActivityReactionResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteActivityReactionResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + 'reaction: $reaction, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteActivityReactionResponse && + other.activity == activity && + other.duration == duration && + other.reaction == reaction; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + reaction, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_activity_response.g.dart new file mode 100644 index 00000000..3a5defce --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_activity_response.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteActivityResponse { + const DeleteActivityResponse({ + required this.duration, + }); + + final String duration; + + Map toJson() { + return { + 'duration': duration, + }; + } + + static DeleteActivityResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteActivityResponse( + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteActivityResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteActivityResponse(' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteActivityResponse && other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_bookmark_folder_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_bookmark_folder_response.g.dart new file mode 100644 index 00000000..a48df898 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_bookmark_folder_response.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteBookmarkFolderResponse { + const DeleteBookmarkFolderResponse({ + required this.duration, + }); + + final String duration; + + Map toJson() { + return { + 'duration': duration, + }; + } + + static DeleteBookmarkFolderResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteBookmarkFolderResponse( + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteBookmarkFolderResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteBookmarkFolderResponse(' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteBookmarkFolderResponse && other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_bookmark_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_bookmark_response.g.dart new file mode 100644 index 00000000..ba7e5a00 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_bookmark_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteBookmarkResponse { + const DeleteBookmarkResponse({ + required this.bookmark, + required this.duration, + }); + + final BookmarkResponse bookmark; + + final String duration; + + Map toJson() { + return { + 'bookmark': bookmark, + 'duration': duration, + }; + } + + static DeleteBookmarkResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteBookmarkResponse( + bookmark: BookmarkResponse.fromJson(json[r'bookmark'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteBookmarkResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteBookmarkResponse(' + 'bookmark: $bookmark, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteBookmarkResponse && + other.bookmark == bookmark && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + bookmark, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_comment_reaction_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_comment_reaction_response.g.dart new file mode 100644 index 00000000..9e87525a --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_comment_reaction_response.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteCommentReactionResponse { + const DeleteCommentReactionResponse({ + required this.comment, + required this.duration, + required this.reaction, + }); + + final CommentResponse comment; + + final String duration; + + final FeedsReactionResponse reaction; + + Map toJson() { + return { + 'comment': comment, + 'duration': duration, + 'reaction': reaction, + }; + } + + static DeleteCommentReactionResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteCommentReactionResponse( + comment: CommentResponse.fromJson(json[r'comment'])!, + duration: mapValueOfType(json, r'duration')!, + reaction: FeedsReactionResponse.fromJson(json[r'reaction'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteCommentReactionResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteCommentReactionResponse(' + 'comment: $comment, ' + 'duration: $duration, ' + 'reaction: $reaction, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteCommentReactionResponse && + other.comment == comment && + other.duration == duration && + other.reaction == reaction; + } + + @override + int get hashCode { + return Object.hashAll([ + comment, + duration, + reaction, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_comment_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_comment_response.g.dart new file mode 100644 index 00000000..819c8ed4 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_comment_response.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteCommentResponse { + const DeleteCommentResponse({ + required this.duration, + }); + + final String duration; + + Map toJson() { + return { + 'duration': duration, + }; + } + + static DeleteCommentResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteCommentResponse( + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteCommentResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteCommentResponse(' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteCommentResponse && other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/delete_feed_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/delete_feed_response.g.dart new file mode 100644 index 00000000..9e33ab88 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/delete_feed_response.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DeleteFeedResponse { + const DeleteFeedResponse({ + required this.duration, + }); + + final String duration; + + Map toJson() { + return { + 'duration': duration, + }; + } + + static DeleteFeedResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DeleteFeedResponse( + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DeleteFeedResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DeleteFeedResponse(' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DeleteFeedResponse && other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/device_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/device_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/device_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/device_response.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/duration_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/duration_response.g.dart new file mode 100644 index 00000000..7d5674fa --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/duration_response.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class DurationResponse { + const DurationResponse({ + required this.duration, + }); + + final String duration; + + Map toJson() { + return { + 'duration': duration, + }; + } + + static DurationResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return DurationResponse( + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = DurationResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'DurationResponse(' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is DurationResponse && other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/feed_created_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_created_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_created_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_created_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_group.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_group.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_group.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_group.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_group_changed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_group_changed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_group_changed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_group_changed_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_group_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_group_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_group_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_group_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/feed_input.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_input.g.dart new file mode 100644 index 00000000..f86d2522 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/feed_input.g.dart @@ -0,0 +1,149 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum FeedInputVisibilityEnum { + followers('followers'), + members('members'), + private('private'), + public('public'), + visible('visible'), + unknown('_unknown'); + + const FeedInputVisibilityEnum(this.value); + final String value; + + static FeedInputVisibilityEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'followers': + return FeedInputVisibilityEnum.followers; + case 'members': + return FeedInputVisibilityEnum.members; + case 'private': + return FeedInputVisibilityEnum.private; + case 'public': + return FeedInputVisibilityEnum.public; + case 'visible': + return FeedInputVisibilityEnum.visible; + default: + return FeedInputVisibilityEnum.unknown; + } + } +} + +@immutable +class FeedInput { + const FeedInput({ + this.custom, + this.description, + this.filterTags, + this.members, + this.name, + this.visibility, + }); + + final Map? custom; + + final String? description; + + final List? filterTags; + + final List? members; + + final String? name; + + final FeedInputVisibilityEnum? visibility; + + Map toJson() { + return { + 'custom': custom, + 'description': description, + 'filter_tags': filterTags, + 'members': members, + 'name': name, + 'visibility': visibility, + }; + } + + static FeedInput? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return FeedInput( + custom: mapCastOfType(json, r'custom'), + description: mapValueOfType(json, r'description', null), + filterTags: json[r'filter_tags'] is Iterable + ? (json[r'filter_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + members: FeedMemberRequest.listFromJson(json[r'members']), + name: mapValueOfType(json, r'name', null), + visibility: FeedInputVisibilityEnum.fromValue(json['visibility']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = FeedInput.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'FeedInput(' + 'custom: $custom, ' + 'description: $description, ' + 'filterTags: $filterTags, ' + 'members: $members, ' + 'name: $name, ' + 'visibility: $visibility, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is FeedInput && + other.custom == custom && + other.description == description && + other.filterTags == filterTags && + other.members == members && + other.name == name && + other.visibility == visibility; + } + + @override + int get hashCode { + return Object.hashAll([ + custom, + description, + filterTags, + members, + name, + visibility, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/feed_member_added_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_member_added_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_member_added_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_member_added_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_member_removed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_member_removed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_member_removed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_member_removed_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/feed_member_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_member_request.g.dart new file mode 100644 index 00000000..5fd892d6 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/feed_member_request.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class FeedMemberRequest { + const FeedMemberRequest({ + this.custom, + this.invite, + this.role, + required this.userId, + }); + + final Map? custom; + + final bool? invite; + + final String? role; + + final String userId; + + Map toJson() { + return { + 'custom': custom, + 'invite': invite, + 'role': role, + 'user_id': userId, + }; + } + + static FeedMemberRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return FeedMemberRequest( + custom: mapCastOfType(json, r'custom'), + invite: mapValueOfType(json, r'invite', null), + role: mapValueOfType(json, r'role', null), + userId: mapValueOfType(json, r'user_id')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = FeedMemberRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'FeedMemberRequest(' + 'custom: $custom, ' + 'invite: $invite, ' + 'role: $role, ' + 'userId: $userId, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is FeedMemberRequest && + other.custom == custom && + other.invite == invite && + other.role == role && + other.userId == userId; + } + + @override + int get hashCode { + return Object.hashAll([ + custom, + invite, + role, + userId, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/feed_member_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_member_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_member_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_member_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_member_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_member_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_member_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_member_updated_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/feed_own_capability.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_own_capability.g.dart new file mode 100644 index 00000000..cd6b067e --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/feed_own_capability.g.dart @@ -0,0 +1,134 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum FeedOwnCapability { + addActivity('add-activity'), + addActivityReaction('add-activity-reaction'), + addComment('add-comment'), + addCommentReaction('add-comment-reaction'), + bookmarkActivity('bookmark-activity'), + createFeed('create-feed'), + deleteBookmark('delete-bookmark'), + deleteComment('delete-comment'), + deleteFeed('delete-feed'), + editBookmark('edit-bookmark'), + follow('follow'), + inviteFeed('invite-feed'), + joinFeed('join-feed'), + leaveFeed('leave-feed'), + manageFeedGroup('manage-feed-group'), + markActivity('mark-activity'), + pinActivity('pin-activity'), + queryFeedMembers('query-feed-members'), + queryFollows('query-follows'), + readActivities('read-activities'), + readFeed('read-feed'), + removeActivity('remove-activity'), + removeActivityReaction('remove-activity-reaction'), + removeCommentReaction('remove-comment-reaction'), + unfollow('unfollow'), + updateActivity('update-activity'), + updateComment('update-comment'), + updateFeed('update-feed'), + updateFeedFollowers('update-feed-followers'), + updateFeedMembers('update-feed-members'), + ; + + const FeedOwnCapability(this.value); + final String value; + + static FeedOwnCapability fromJson(String json) { + switch (json) { + case 'add-activity': + return FeedOwnCapability.addActivity; + case 'add-activity-reaction': + return FeedOwnCapability.addActivityReaction; + case 'add-comment': + return FeedOwnCapability.addComment; + case 'add-comment-reaction': + return FeedOwnCapability.addCommentReaction; + case 'bookmark-activity': + return FeedOwnCapability.bookmarkActivity; + case 'create-feed': + return FeedOwnCapability.createFeed; + case 'delete-bookmark': + return FeedOwnCapability.deleteBookmark; + case 'delete-comment': + return FeedOwnCapability.deleteComment; + case 'delete-feed': + return FeedOwnCapability.deleteFeed; + case 'edit-bookmark': + return FeedOwnCapability.editBookmark; + case 'follow': + return FeedOwnCapability.follow; + case 'invite-feed': + return FeedOwnCapability.inviteFeed; + case 'join-feed': + return FeedOwnCapability.joinFeed; + case 'leave-feed': + return FeedOwnCapability.leaveFeed; + case 'manage-feed-group': + return FeedOwnCapability.manageFeedGroup; + case 'mark-activity': + return FeedOwnCapability.markActivity; + case 'pin-activity': + return FeedOwnCapability.pinActivity; + case 'query-feed-members': + return FeedOwnCapability.queryFeedMembers; + case 'query-follows': + return FeedOwnCapability.queryFollows; + case 'read-activities': + return FeedOwnCapability.readActivities; + case 'read-feed': + return FeedOwnCapability.readFeed; + case 'remove-activity': + return FeedOwnCapability.removeActivity; + case 'remove-activity-reaction': + return FeedOwnCapability.removeActivityReaction; + case 'remove-comment-reaction': + return FeedOwnCapability.removeCommentReaction; + case 'unfollow': + return FeedOwnCapability.unfollow; + case 'update-activity': + return FeedOwnCapability.updateActivity; + case 'update-comment': + return FeedOwnCapability.updateComment; + case 'update-feed': + return FeedOwnCapability.updateFeed; + case 'update-feed-followers': + return FeedOwnCapability.updateFeedFollowers; + case 'update-feed-members': + return FeedOwnCapability.updateFeedMembers; + + default: + throw ArgumentError('Unknown FeedOwnCapability value: $json'); + } + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + result.add(FeedOwnCapability.fromJson(row)); + } + } + return result.toList(growable: growable); + } + + String toJson() => value; + + @override + String toString() => value; +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/feed_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_request.g.dart new file mode 100644 index 00000000..c3b1ab9a --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/feed_request.g.dart @@ -0,0 +1,173 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum FeedRequestVisibilityEnum { + followers('followers'), + members('members'), + private('private'), + public('public'), + visible('visible'), + unknown('_unknown'); + + const FeedRequestVisibilityEnum(this.value); + final String value; + + static FeedRequestVisibilityEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'followers': + return FeedRequestVisibilityEnum.followers; + case 'members': + return FeedRequestVisibilityEnum.members; + case 'private': + return FeedRequestVisibilityEnum.private; + case 'public': + return FeedRequestVisibilityEnum.public; + case 'visible': + return FeedRequestVisibilityEnum.visible; + default: + return FeedRequestVisibilityEnum.unknown; + } + } +} + +@immutable +class FeedRequest { + const FeedRequest({ + this.createdById, + this.custom, + this.description, + required this.feedGroupId, + required this.feedId, + this.filterTags, + this.members, + this.name, + this.visibility, + }); + + final String? createdById; + + final Map? custom; + + final String? description; + + final String feedGroupId; + + final String feedId; + + final List? filterTags; + + final List? members; + + final String? name; + + final FeedRequestVisibilityEnum? visibility; + + Map toJson() { + return { + 'created_by_id': createdById, + 'custom': custom, + 'description': description, + 'feed_group_id': feedGroupId, + 'feed_id': feedId, + 'filter_tags': filterTags, + 'members': members, + 'name': name, + 'visibility': visibility, + }; + } + + static FeedRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return FeedRequest( + createdById: mapValueOfType(json, r'created_by_id', null), + custom: mapCastOfType(json, r'custom'), + description: mapValueOfType(json, r'description', null), + feedGroupId: mapValueOfType(json, r'feed_group_id')!, + feedId: mapValueOfType(json, r'feed_id')!, + filterTags: json[r'filter_tags'] is Iterable + ? (json[r'filter_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + members: FeedMemberRequest.listFromJson(json[r'members']), + name: mapValueOfType(json, r'name', null), + visibility: FeedRequestVisibilityEnum.fromValue(json['visibility']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = FeedRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'FeedRequest(' + 'createdById: $createdById, ' + 'custom: $custom, ' + 'description: $description, ' + 'feedGroupId: $feedGroupId, ' + 'feedId: $feedId, ' + 'filterTags: $filterTags, ' + 'members: $members, ' + 'name: $name, ' + 'visibility: $visibility, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is FeedRequest && + other.createdById == createdById && + other.custom == custom && + other.description == description && + other.feedGroupId == feedGroupId && + other.feedId == feedId && + other.filterTags == filterTags && + other.members == members && + other.name == name && + other.visibility == visibility; + } + + @override + int get hashCode { + return Object.hashAll([ + createdById, + custom, + description, + feedGroupId, + feedId, + filterTags, + members, + name, + visibility, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/feed_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feed_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feed_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feed_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feed_updated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/feeds_reaction_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/feeds_reaction_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/feeds_reaction_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/feeds_reaction_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/field.g.dart b/packages/stream_feeds/lib/src/generated/api/model/field.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/field.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/field.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/file_upload_config.g.dart b/packages/stream_feeds/lib/src/generated/api/model/file_upload_config.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/file_upload_config.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/file_upload_config.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/follow_batch_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_batch_request.g.dart new file mode 100644 index 00000000..902e88b3 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/follow_batch_request.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class FollowBatchRequest { + const FollowBatchRequest({ + required this.follows, + }); + + final List follows; + + Map toJson() { + return { + 'follows': follows, + }; + } + + static FollowBatchRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return FollowBatchRequest( + follows: FollowRequest.listFromJson(json[r'follows']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = FollowBatchRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'FollowBatchRequest(' + 'follows: $follows, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is FollowBatchRequest && other.follows == follows; + } + + @override + int get hashCode { + return Object.hashAll([ + follows, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/follow_batch_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_batch_response.g.dart new file mode 100644 index 00000000..d0ffc4f3 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/follow_batch_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class FollowBatchResponse { + const FollowBatchResponse({ + required this.duration, + required this.follows, + }); + + final String duration; + + final List follows; + + Map toJson() { + return { + 'duration': duration, + 'follows': follows, + }; + } + + static FollowBatchResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return FollowBatchResponse( + duration: mapValueOfType(json, r'duration')!, + follows: FollowResponse.listFromJson(json[r'follows']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = FollowBatchResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'FollowBatchResponse(' + 'duration: $duration, ' + 'follows: $follows, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is FollowBatchResponse && + other.duration == duration && + other.follows == follows; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + follows, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/follow_created_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_created_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/follow_created_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/follow_created_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/follow_deleted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_deleted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/follow_deleted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/follow_deleted_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/follow_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_request.g.dart new file mode 100644 index 00000000..49b9400b --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/follow_request.g.dart @@ -0,0 +1,130 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum FollowRequestPushPreferenceEnum { + all('all'), + none('none'), + unknown('_unknown'); + + const FollowRequestPushPreferenceEnum(this.value); + final String value; + + static FollowRequestPushPreferenceEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'all': + return FollowRequestPushPreferenceEnum.all; + case 'none': + return FollowRequestPushPreferenceEnum.none; + default: + return FollowRequestPushPreferenceEnum.unknown; + } + } +} + +@immutable +class FollowRequest { + const FollowRequest({ + this.createNotificationActivity, + this.custom, + this.pushPreference, + required this.source, + required this.target, + }); + + final bool? createNotificationActivity; + + final Map? custom; + + final FollowRequestPushPreferenceEnum? pushPreference; + + final String source; + + final String target; + + Map toJson() { + return { + 'create_notification_activity': createNotificationActivity, + 'custom': custom, + 'push_preference': pushPreference, + 'source': source, + 'target': target, + }; + } + + static FollowRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return FollowRequest( + createNotificationActivity: + mapValueOfType(json, r'create_notification_activity', null), + custom: mapCastOfType(json, r'custom'), + pushPreference: + FollowRequestPushPreferenceEnum.fromValue(json['push_preference']), + source: mapValueOfType(json, r'source')!, + target: mapValueOfType(json, r'target')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = FollowRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'FollowRequest(' + 'createNotificationActivity: $createNotificationActivity, ' + 'custom: $custom, ' + 'pushPreference: $pushPreference, ' + 'source: $source, ' + 'target: $target, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is FollowRequest && + other.createNotificationActivity == createNotificationActivity && + other.custom == custom && + other.pushPreference == pushPreference && + other.source == source && + other.target == target; + } + + @override + int get hashCode { + return Object.hashAll([ + createNotificationActivity, + custom, + pushPreference, + source, + target, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/follow_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/follow_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/follow_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/follow_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/follow_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/follow_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/follow_updated_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_activity_response.g.dart new file mode 100644 index 00000000..2a304bed --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_activity_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetActivityResponse { + const GetActivityResponse({ + required this.activity, + required this.duration, + }); + + final ActivityResponse activity; + + final String duration; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + }; + } + + static GetActivityResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetActivityResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetActivityResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetActivityResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetActivityResponse && + other.activity == activity && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_comment_replies_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_comment_replies_response.g.dart new file mode 100644 index 00000000..889ad340 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_comment_replies_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetCommentRepliesResponse { + const GetCommentRepliesResponse({ + required this.comments, + required this.duration, + this.next, + this.prev, + }); + + final List comments; + + final String duration; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'comments': comments, + 'duration': duration, + 'next': next, + 'prev': prev, + }; + } + + static GetCommentRepliesResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetCommentRepliesResponse( + comments: ThreadedCommentResponse.listFromJson(json[r'comments']), + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetCommentRepliesResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetCommentRepliesResponse(' + 'comments: $comments, ' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetCommentRepliesResponse && + other.comments == comments && + other.duration == duration && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + comments, + duration, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_comment_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_comment_response.g.dart new file mode 100644 index 00000000..c0fadd68 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_comment_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetCommentResponse { + const GetCommentResponse({ + required this.comment, + required this.duration, + }); + + final CommentResponse comment; + + final String duration; + + Map toJson() { + return { + 'comment': comment, + 'duration': duration, + }; + } + + static GetCommentResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetCommentResponse( + comment: CommentResponse.fromJson(json[r'comment'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetCommentResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetCommentResponse(' + 'comment: $comment, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetCommentResponse && + other.comment == comment && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + comment, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_comments_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_comments_response.g.dart new file mode 100644 index 00000000..338ae061 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_comments_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetCommentsResponse { + const GetCommentsResponse({ + required this.comments, + required this.duration, + this.next, + this.prev, + }); + + final List comments; + + final String duration; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'comments': comments, + 'duration': duration, + 'next': next, + 'prev': prev, + }; + } + + static GetCommentsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetCommentsResponse( + comments: ThreadedCommentResponse.listFromJson(json[r'comments']), + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetCommentsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetCommentsResponse(' + 'comments: $comments, ' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetCommentsResponse && + other.comments == comments && + other.duration == duration && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + comments, + duration, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_follow_suggestions_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_follow_suggestions_response.g.dart new file mode 100644 index 00000000..5d2aa636 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_follow_suggestions_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetFollowSuggestionsResponse { + const GetFollowSuggestionsResponse({ + required this.duration, + required this.suggestions, + }); + + final String duration; + + final List suggestions; + + Map toJson() { + return { + 'duration': duration, + 'suggestions': suggestions, + }; + } + + static GetFollowSuggestionsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetFollowSuggestionsResponse( + duration: mapValueOfType(json, r'duration')!, + suggestions: FeedResponse.listFromJson(json[r'suggestions']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetFollowSuggestionsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetFollowSuggestionsResponse(' + 'duration: $duration, ' + 'suggestions: $suggestions, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetFollowSuggestionsResponse && + other.duration == duration && + other.suggestions == suggestions; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + suggestions, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_or_create_feed_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_or_create_feed_request.g.dart new file mode 100644 index 00000000..69fecec2 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_or_create_feed_request.g.dart @@ -0,0 +1,175 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetOrCreateFeedRequest { + const GetOrCreateFeedRequest({ + this.activitySelectorOptions, + this.data, + this.externalRanking, + this.filter, + this.followersPagination, + this.followingPagination, + this.interestWeights, + this.limit, + this.memberPagination, + this.next, + this.prev, + this.view, + this.watch, + }); + + final Map? activitySelectorOptions; + + final FeedInput? data; + + final Map? externalRanking; + + final Map? filter; + + final PagerRequest? followersPagination; + + final PagerRequest? followingPagination; + + final Map? interestWeights; + + final int? limit; + + final PagerRequest? memberPagination; + + final String? next; + + final String? prev; + + final String? view; + + final bool? watch; + + Map toJson() { + return { + 'activity_selector_options': activitySelectorOptions, + 'data': data, + 'external_ranking': externalRanking, + 'filter': filter, + 'followers_pagination': followersPagination, + 'following_pagination': followingPagination, + 'interest_weights': interestWeights, + 'limit': limit, + 'member_pagination': memberPagination, + 'next': next, + 'prev': prev, + 'view': view, + 'watch': watch, + }; + } + + static GetOrCreateFeedRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetOrCreateFeedRequest( + activitySelectorOptions: + mapCastOfType(json, r'activity_selector_options'), + data: FeedInput.fromJson(json[r'data'] ?? null), + externalRanking: + mapCastOfType(json, r'external_ranking'), + filter: mapCastOfType(json, r'filter'), + followersPagination: + PagerRequest.fromJson(json[r'followers_pagination'] ?? null), + followingPagination: + PagerRequest.fromJson(json[r'following_pagination'] ?? null), + interestWeights: mapCastOfType(json, r'interest_weights'), + limit: mapValueOfType(json, r'limit', null), + memberPagination: + PagerRequest.fromJson(json[r'member_pagination'] ?? null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + view: mapValueOfType(json, r'view', null), + watch: mapValueOfType(json, r'watch', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetOrCreateFeedRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetOrCreateFeedRequest(' + 'activitySelectorOptions: $activitySelectorOptions, ' + 'data: $data, ' + 'externalRanking: $externalRanking, ' + 'filter: $filter, ' + 'followersPagination: $followersPagination, ' + 'followingPagination: $followingPagination, ' + 'interestWeights: $interestWeights, ' + 'limit: $limit, ' + 'memberPagination: $memberPagination, ' + 'next: $next, ' + 'prev: $prev, ' + 'view: $view, ' + 'watch: $watch, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetOrCreateFeedRequest && + other.activitySelectorOptions == activitySelectorOptions && + other.data == data && + other.externalRanking == externalRanking && + other.filter == filter && + other.followersPagination == followersPagination && + other.followingPagination == followingPagination && + other.interestWeights == interestWeights && + other.limit == limit && + other.memberPagination == memberPagination && + other.next == next && + other.prev == prev && + other.view == view && + other.watch == watch; + } + + @override + int get hashCode { + return Object.hashAll([ + activitySelectorOptions, + data, + externalRanking, + filter, + followersPagination, + followingPagination, + interestWeights, + limit, + memberPagination, + next, + prev, + view, + watch, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/get_or_create_feed_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/get_or_create_feed_response.g.dart new file mode 100644 index 00000000..e750a371 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/get_or_create_feed_response.g.dart @@ -0,0 +1,218 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class GetOrCreateFeedResponse { + const GetOrCreateFeedResponse({ + required this.activities, + required this.aggregatedActivities, + required this.created, + required this.duration, + required this.feed, + required this.followers, + this.followersPagination, + required this.following, + this.followingPagination, + this.memberPagination, + required this.members, + this.next, + this.notificationStatus, + required this.ownCapabilities, + this.ownFollows, + this.ownMembership, + required this.pinnedActivities, + this.prev, + }); + + final List activities; + + final List aggregatedActivities; + + final bool created; + + final String duration; + + final FeedResponse feed; + + final List followers; + + final PagerResponse? followersPagination; + + final List following; + + final PagerResponse? followingPagination; + + final PagerResponse? memberPagination; + + final List members; + + final String? next; + + final NotificationStatusResponse? notificationStatus; + + final List ownCapabilities; + + final List? ownFollows; + + final FeedMemberResponse? ownMembership; + + final List pinnedActivities; + + final String? prev; + + Map toJson() { + return { + 'activities': activities, + 'aggregated_activities': aggregatedActivities, + 'created': created, + 'duration': duration, + 'feed': feed, + 'followers': followers, + 'followers_pagination': followersPagination, + 'following': following, + 'following_pagination': followingPagination, + 'member_pagination': memberPagination, + 'members': members, + 'next': next, + 'notification_status': notificationStatus, + 'own_capabilities': ownCapabilities, + 'own_follows': ownFollows, + 'own_membership': ownMembership, + 'pinned_activities': pinnedActivities, + 'prev': prev, + }; + } + + static GetOrCreateFeedResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return GetOrCreateFeedResponse( + activities: ActivityResponse.listFromJson(json[r'activities']), + aggregatedActivities: AggregatedActivityResponse.listFromJson( + json[r'aggregated_activities']), + created: mapValueOfType(json, r'created')!, + duration: mapValueOfType(json, r'duration')!, + feed: FeedResponse.fromJson(json[r'feed'])!, + followers: FollowResponse.listFromJson(json[r'followers']), + followersPagination: + PagerResponse.fromJson(json[r'followers_pagination'] ?? null), + following: FollowResponse.listFromJson(json[r'following']), + followingPagination: + PagerResponse.fromJson(json[r'following_pagination'] ?? null), + memberPagination: + PagerResponse.fromJson(json[r'member_pagination'] ?? null), + members: FeedMemberResponse.listFromJson(json[r'members']), + next: mapValueOfType(json, r'next', null), + notificationStatus: NotificationStatusResponse.fromJson( + json[r'notification_status'] ?? null), + ownCapabilities: + FeedOwnCapability.listFromJson(json[r'own_capabilities']), + ownFollows: FollowResponse.listFromJson(json[r'own_follows']), + ownMembership: + FeedMemberResponse.fromJson(json[r'own_membership'] ?? null), + pinnedActivities: + ActivityPinResponse.listFromJson(json[r'pinned_activities']), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = GetOrCreateFeedResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'GetOrCreateFeedResponse(' + 'activities: $activities, ' + 'aggregatedActivities: $aggregatedActivities, ' + 'created: $created, ' + 'duration: $duration, ' + 'feed: $feed, ' + 'followers: $followers, ' + 'followersPagination: $followersPagination, ' + 'following: $following, ' + 'followingPagination: $followingPagination, ' + 'memberPagination: $memberPagination, ' + 'members: $members, ' + 'next: $next, ' + 'notificationStatus: $notificationStatus, ' + 'ownCapabilities: $ownCapabilities, ' + 'ownFollows: $ownFollows, ' + 'ownMembership: $ownMembership, ' + 'pinnedActivities: $pinnedActivities, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is GetOrCreateFeedResponse && + other.activities == activities && + other.aggregatedActivities == aggregatedActivities && + other.created == created && + other.duration == duration && + other.feed == feed && + other.followers == followers && + other.followersPagination == followersPagination && + other.following == following && + other.followingPagination == followingPagination && + other.memberPagination == memberPagination && + other.members == members && + other.next == next && + other.notificationStatus == notificationStatus && + other.ownCapabilities == ownCapabilities && + other.ownFollows == ownFollows && + other.ownMembership == ownMembership && + other.pinnedActivities == pinnedActivities && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + activities, + aggregatedActivities, + created, + duration, + feed, + followers, + followersPagination, + following, + followingPagination, + memberPagination, + members, + next, + notificationStatus, + ownCapabilities, + ownFollows, + ownMembership, + pinnedActivities, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/health_check_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/health_check_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/health_check_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/health_check_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/image_data.g.dart b/packages/stream_feeds/lib/src/generated/api/model/image_data.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/image_data.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/image_data.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/images.g.dart b/packages/stream_feeds/lib/src/generated/api/model/images.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/images.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/images.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/label_thresholds.g.dart b/packages/stream_feeds/lib/src/generated/api/model/label_thresholds.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/label_thresholds.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/label_thresholds.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/mark_activity_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/mark_activity_request.g.dart new file mode 100644 index 00000000..b253d3eb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/mark_activity_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class MarkActivityRequest { + const MarkActivityRequest({ + this.markAllRead, + this.markAllSeen, + this.markRead, + this.markWatched, + }); + + final bool? markAllRead; + + final bool? markAllSeen; + + final List? markRead; + + final List? markWatched; + + Map toJson() { + return { + 'mark_all_read': markAllRead, + 'mark_all_seen': markAllSeen, + 'mark_read': markRead, + 'mark_watched': markWatched, + }; + } + + static MarkActivityRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return MarkActivityRequest( + markAllRead: mapValueOfType(json, r'mark_all_read', null), + markAllSeen: mapValueOfType(json, r'mark_all_seen', null), + markRead: json[r'mark_read'] is Iterable + ? (json[r'mark_read'] as Iterable) + .cast() + .toList(growable: false) + : const [], + markWatched: json[r'mark_watched'] is Iterable + ? (json[r'mark_watched'] as Iterable) + .cast() + .toList(growable: false) + : const [], + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = MarkActivityRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'MarkActivityRequest(' + 'markAllRead: $markAllRead, ' + 'markAllSeen: $markAllSeen, ' + 'markRead: $markRead, ' + 'markWatched: $markWatched, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is MarkActivityRequest && + other.markAllRead == markAllRead && + other.markAllSeen == markAllSeen && + other.markRead == markRead && + other.markWatched == markWatched; + } + + @override + int get hashCode { + return Object.hashAll([ + markAllRead, + markAllSeen, + markRead, + markWatched, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/moderation_v2_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/moderation_v2_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/moderation_v2_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/moderation_v2_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/notification_config.g.dart b/packages/stream_feeds/lib/src/generated/api/model/notification_config.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/notification_config.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/notification_config.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/notification_feed_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/notification_feed_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/notification_feed_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/notification_feed_updated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/notification_status_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/notification_status_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/notification_status_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/notification_status_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/own_user_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/own_user_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/own_user_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/own_user_response.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/pager_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/pager_request.g.dart new file mode 100644 index 00000000..b0ed4129 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/pager_request.g.dart @@ -0,0 +1,90 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class PagerRequest { + const PagerRequest({ + this.limit, + this.next, + this.prev, + }); + + final int? limit; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'limit': limit, + 'next': next, + 'prev': prev, + }; + } + + static PagerRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return PagerRequest( + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = PagerRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'PagerRequest(' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is PagerRequest && + other.limit == limit && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + limit, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/pager_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/pager_response.g.dart new file mode 100644 index 00000000..26ba8e87 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/pager_response.g.dart @@ -0,0 +1,80 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class PagerResponse { + const PagerResponse({ + this.next, + this.prev, + }); + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'next': next, + 'prev': prev, + }; + } + + static PagerResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return PagerResponse( + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = PagerResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'PagerResponse(' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is PagerResponse && other.next == next && other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/pin_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/pin_activity_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/pin_activity_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/pin_activity_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_closed_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_closed_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_closed_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_closed_feed_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_deleted_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_deleted_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_deleted_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_deleted_feed_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_option_response_data.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_option_response_data.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_option_response_data.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_option_response_data.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_response_data.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_response_data.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_response_data.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_response_data.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_updated_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_updated_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_updated_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_updated_feed_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_vote_casted_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_vote_casted_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_vote_casted_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_vote_casted_feed_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_vote_changed_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_vote_changed_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_vote_changed_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_vote_changed_feed_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/poll_vote_removed_feed_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_vote_removed_feed_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_vote_removed_feed_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_vote_removed_feed_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/poll_vote_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_vote_response.g.dart new file mode 100644 index 00000000..b839f2eb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/poll_vote_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class PollVoteResponse { + const PollVoteResponse({ + required this.duration, + this.vote, + }); + + final String duration; + + final PollVoteResponseData? vote; + + Map toJson() { + return { + 'duration': duration, + 'vote': vote, + }; + } + + static PollVoteResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return PollVoteResponse( + duration: mapValueOfType(json, r'duration')!, + vote: PollVoteResponseData.fromJson(json[r'vote'] ?? null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = PollVoteResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'PollVoteResponse(' + 'duration: $duration, ' + 'vote: $vote, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is PollVoteResponse && + other.duration == duration && + other.vote == vote; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + vote, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/poll_vote_response_data.g.dart b/packages/stream_feeds/lib/src/generated/api/model/poll_vote_response_data.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/poll_vote_response_data.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/poll_vote_response_data.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/privacy_settings.g.dart b/packages/stream_feeds/lib/src/generated/api/model/privacy_settings.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/privacy_settings.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/privacy_settings.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/privacy_settings_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/privacy_settings_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/privacy_settings_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/privacy_settings_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/push_preferences.g.dart b/packages/stream_feeds/lib/src/generated/api/model/push_preferences.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/push_preferences.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/push_preferences.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_activities_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_activities_request.g.dart new file mode 100644 index 00000000..ad83ad68 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_activities_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryActivitiesRequest { + const QueryActivitiesRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryActivitiesRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryActivitiesRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryActivitiesRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryActivitiesRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryActivitiesRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_activities_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_activities_response.g.dart new file mode 100644 index 00000000..ca5b7896 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_activities_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryActivitiesResponse { + const QueryActivitiesResponse({ + required this.activities, + required this.duration, + this.next, + this.prev, + }); + + final List activities; + + final String duration; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'activities': activities, + 'duration': duration, + 'next': next, + 'prev': prev, + }; + } + + static QueryActivitiesResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryActivitiesResponse( + activities: ActivityResponse.listFromJson(json[r'activities']), + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryActivitiesResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryActivitiesResponse(' + 'activities: $activities, ' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryActivitiesResponse && + other.activities == activities && + other.duration == duration && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + activities, + duration, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_activity_reactions_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_activity_reactions_request.g.dart new file mode 100644 index 00000000..649eafdb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_activity_reactions_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryActivityReactionsRequest { + const QueryActivityReactionsRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryActivityReactionsRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryActivityReactionsRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryActivityReactionsRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryActivityReactionsRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryActivityReactionsRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_activity_reactions_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_activity_reactions_response.g.dart new file mode 100644 index 00000000..6f03d8d5 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_activity_reactions_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryActivityReactionsResponse { + const QueryActivityReactionsResponse({ + required this.duration, + this.next, + this.prev, + required this.reactions, + }); + + final String duration; + + final String? next; + + final String? prev; + + final List reactions; + + Map toJson() { + return { + 'duration': duration, + 'next': next, + 'prev': prev, + 'reactions': reactions, + }; + } + + static QueryActivityReactionsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryActivityReactionsResponse( + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + reactions: FeedsReactionResponse.listFromJson(json[r'reactions']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryActivityReactionsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryActivityReactionsResponse(' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + 'reactions: $reactions, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryActivityReactionsResponse && + other.duration == duration && + other.next == next && + other.prev == prev && + other.reactions == reactions; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + next, + prev, + reactions, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_bookmark_folders_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_bookmark_folders_request.g.dart new file mode 100644 index 00000000..7c3fd645 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_bookmark_folders_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryBookmarkFoldersRequest { + const QueryBookmarkFoldersRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryBookmarkFoldersRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryBookmarkFoldersRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryBookmarkFoldersRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryBookmarkFoldersRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryBookmarkFoldersRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_bookmark_folders_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_bookmark_folders_response.g.dart new file mode 100644 index 00000000..b264e0f1 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_bookmark_folders_response.g.dart @@ -0,0 +1,99 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryBookmarkFoldersResponse { + const QueryBookmarkFoldersResponse({ + required this.bookmarkFolders, + required this.duration, + this.next, + this.prev, + }); + + final List bookmarkFolders; + + final String duration; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'bookmark_folders': bookmarkFolders, + 'duration': duration, + 'next': next, + 'prev': prev, + }; + } + + static QueryBookmarkFoldersResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryBookmarkFoldersResponse( + bookmarkFolders: + BookmarkFolderResponse.listFromJson(json[r'bookmark_folders']), + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryBookmarkFoldersResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryBookmarkFoldersResponse(' + 'bookmarkFolders: $bookmarkFolders, ' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryBookmarkFoldersResponse && + other.bookmarkFolders == bookmarkFolders && + other.duration == duration && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + bookmarkFolders, + duration, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_bookmarks_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_bookmarks_request.g.dart new file mode 100644 index 00000000..34a0f4f2 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_bookmarks_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryBookmarksRequest { + const QueryBookmarksRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryBookmarksRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryBookmarksRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryBookmarksRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryBookmarksRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryBookmarksRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_bookmarks_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_bookmarks_response.g.dart new file mode 100644 index 00000000..e02d9cd3 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_bookmarks_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryBookmarksResponse { + const QueryBookmarksResponse({ + required this.bookmarks, + required this.duration, + this.next, + this.prev, + }); + + final List bookmarks; + + final String duration; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'bookmarks': bookmarks, + 'duration': duration, + 'next': next, + 'prev': prev, + }; + } + + static QueryBookmarksResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryBookmarksResponse( + bookmarks: BookmarkResponse.listFromJson(json[r'bookmarks']), + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryBookmarksResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryBookmarksResponse(' + 'bookmarks: $bookmarks, ' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryBookmarksResponse && + other.bookmarks == bookmarks && + other.duration == duration && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + bookmarks, + duration, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_comment_reactions_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_comment_reactions_request.g.dart new file mode 100644 index 00000000..05a5b28a --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_comment_reactions_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryCommentReactionsRequest { + const QueryCommentReactionsRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryCommentReactionsRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryCommentReactionsRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryCommentReactionsRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryCommentReactionsRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryCommentReactionsRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_comment_reactions_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_comment_reactions_response.g.dart new file mode 100644 index 00000000..058d2473 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_comment_reactions_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryCommentReactionsResponse { + const QueryCommentReactionsResponse({ + required this.duration, + this.next, + this.prev, + required this.reactions, + }); + + final String duration; + + final String? next; + + final String? prev; + + final List reactions; + + Map toJson() { + return { + 'duration': duration, + 'next': next, + 'prev': prev, + 'reactions': reactions, + }; + } + + static QueryCommentReactionsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryCommentReactionsResponse( + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + reactions: FeedsReactionResponse.listFromJson(json[r'reactions']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryCommentReactionsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryCommentReactionsResponse(' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + 'reactions: $reactions, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryCommentReactionsResponse && + other.duration == duration && + other.next == next && + other.prev == prev && + other.reactions == reactions; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + next, + prev, + reactions, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_comments_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_comments_request.g.dart new file mode 100644 index 00000000..26bcac55 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_comments_request.g.dart @@ -0,0 +1,137 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum QueryCommentsRequestSortEnum { + best('best'), + controversial('controversial'), + first('first'), + last('last'), + top('top'), + unknown('_unknown'); + + const QueryCommentsRequestSortEnum(this.value); + final String value; + + static QueryCommentsRequestSortEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'best': + return QueryCommentsRequestSortEnum.best; + case 'controversial': + return QueryCommentsRequestSortEnum.controversial; + case 'first': + return QueryCommentsRequestSortEnum.first; + case 'last': + return QueryCommentsRequestSortEnum.last; + case 'top': + return QueryCommentsRequestSortEnum.top; + default: + return QueryCommentsRequestSortEnum.unknown; + } + } +} + +@immutable +class QueryCommentsRequest { + const QueryCommentsRequest({ + required this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map filter; + + final int? limit; + + final String? next; + + final String? prev; + + final QueryCommentsRequestSortEnum? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryCommentsRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryCommentsRequest( + filter: mapCastOfType(json, r'filter')!, + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: QueryCommentsRequestSortEnum.fromValue(json['sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryCommentsRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryCommentsRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryCommentsRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_comments_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_comments_response.g.dart new file mode 100644 index 00000000..2168b3ac --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_comments_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryCommentsResponse { + const QueryCommentsResponse({ + required this.comments, + required this.duration, + this.next, + this.prev, + }); + + final List comments; + + final String duration; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'comments': comments, + 'duration': duration, + 'next': next, + 'prev': prev, + }; + } + + static QueryCommentsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryCommentsResponse( + comments: CommentResponse.listFromJson(json[r'comments']), + duration: mapValueOfType(json, r'duration')!, + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryCommentsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryCommentsResponse(' + 'comments: $comments, ' + 'duration: $duration, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryCommentsResponse && + other.comments == comments && + other.duration == duration && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + comments, + duration, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_feed_members_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_feed_members_request.g.dart new file mode 100644 index 00000000..b64c2369 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_feed_members_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryFeedMembersRequest { + const QueryFeedMembersRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryFeedMembersRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryFeedMembersRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryFeedMembersRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryFeedMembersRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryFeedMembersRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_feed_members_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_feed_members_response.g.dart new file mode 100644 index 00000000..9a1d3524 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_feed_members_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryFeedMembersResponse { + const QueryFeedMembersResponse({ + required this.duration, + required this.members, + this.next, + this.prev, + }); + + final String duration; + + final List members; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'duration': duration, + 'members': members, + 'next': next, + 'prev': prev, + }; + } + + static QueryFeedMembersResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryFeedMembersResponse( + duration: mapValueOfType(json, r'duration')!, + members: FeedMemberResponse.listFromJson(json[r'members']), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryFeedMembersResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryFeedMembersResponse(' + 'duration: $duration, ' + 'members: $members, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryFeedMembersResponse && + other.duration == duration && + other.members == members && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + members, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_feeds_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_feeds_request.g.dart new file mode 100644 index 00000000..bb3f6976 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_feeds_request.g.dart @@ -0,0 +1,114 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryFeedsRequest { + const QueryFeedsRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + this.watch, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + final bool? watch; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + 'watch': watch, + }; + } + + static QueryFeedsRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryFeedsRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + watch: mapValueOfType(json, r'watch', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryFeedsRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryFeedsRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + 'watch: $watch, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryFeedsRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort && + other.watch == watch; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + watch, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_feeds_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_feeds_response.g.dart new file mode 100644 index 00000000..17ab947e --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_feeds_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryFeedsResponse { + const QueryFeedsResponse({ + required this.duration, + required this.feeds, + this.next, + this.prev, + }); + + final String duration; + + final List feeds; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'duration': duration, + 'feeds': feeds, + 'next': next, + 'prev': prev, + }; + } + + static QueryFeedsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryFeedsResponse( + duration: mapValueOfType(json, r'duration')!, + feeds: FeedResponse.listFromJson(json[r'feeds']), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryFeedsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryFeedsResponse(' + 'duration: $duration, ' + 'feeds: $feeds, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryFeedsResponse && + other.duration == duration && + other.feeds == feeds && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + feeds, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_follows_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_follows_request.g.dart new file mode 100644 index 00000000..938a480a --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_follows_request.g.dart @@ -0,0 +1,106 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryFollowsRequest { + const QueryFollowsRequest({ + this.filter, + this.limit, + this.next, + this.prev, + this.sort, + }); + + final Map? filter; + + final int? limit; + + final String? next; + + final String? prev; + + final List? sort; + + Map toJson() { + return { + 'filter': filter, + 'limit': limit, + 'next': next, + 'prev': prev, + 'sort': sort, + }; + } + + static QueryFollowsRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryFollowsRequest( + filter: mapCastOfType(json, r'filter'), + limit: mapValueOfType(json, r'limit', null), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + sort: SortParamRequest.listFromJson(json[r'sort']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryFollowsRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryFollowsRequest(' + 'filter: $filter, ' + 'limit: $limit, ' + 'next: $next, ' + 'prev: $prev, ' + 'sort: $sort, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryFollowsRequest && + other.filter == filter && + other.limit == limit && + other.next == next && + other.prev == prev && + other.sort == sort; + } + + @override + int get hashCode { + return Object.hashAll([ + filter, + limit, + next, + prev, + sort, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/query_follows_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/query_follows_response.g.dart new file mode 100644 index 00000000..73dd5b44 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/query_follows_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class QueryFollowsResponse { + const QueryFollowsResponse({ + required this.duration, + required this.follows, + this.next, + this.prev, + }); + + final String duration; + + final List follows; + + final String? next; + + final String? prev; + + Map toJson() { + return { + 'duration': duration, + 'follows': follows, + 'next': next, + 'prev': prev, + }; + } + + static QueryFollowsResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return QueryFollowsResponse( + duration: mapValueOfType(json, r'duration')!, + follows: FollowResponse.listFromJson(json[r'follows']), + next: mapValueOfType(json, r'next', null), + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = QueryFollowsResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'QueryFollowsResponse(' + 'duration: $duration, ' + 'follows: $follows, ' + 'next: $next, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is QueryFollowsResponse && + other.duration == duration && + other.follows == follows && + other.next == next && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + follows, + next, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/reaction_group_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/reaction_group_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/reaction_group_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/reaction_group_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/read_receipts.g.dart b/packages/stream_feeds/lib/src/generated/api/model/read_receipts.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/read_receipts.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/read_receipts.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/read_receipts_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/read_receipts_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/read_receipts_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/read_receipts_response.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/reject_feed_member_invite_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/reject_feed_member_invite_response.g.dart new file mode 100644 index 00000000..5ee9217e --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/reject_feed_member_invite_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class RejectFeedMemberInviteResponse { + const RejectFeedMemberInviteResponse({ + required this.duration, + required this.member, + }); + + final String duration; + + final FeedMemberResponse member; + + Map toJson() { + return { + 'duration': duration, + 'member': member, + }; + } + + static RejectFeedMemberInviteResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return RejectFeedMemberInviteResponse( + duration: mapValueOfType(json, r'duration')!, + member: FeedMemberResponse.fromJson(json[r'member'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = RejectFeedMemberInviteResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'RejectFeedMemberInviteResponse(' + 'duration: $duration, ' + 'member: $member, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is RejectFeedMemberInviteResponse && + other.duration == duration && + other.member == member; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + member, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/reject_follow_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/reject_follow_request.g.dart new file mode 100644 index 00000000..917b84ec --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/reject_follow_request.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class RejectFollowRequest { + const RejectFollowRequest({ + required this.sourceFid, + required this.targetFid, + }); + + final String sourceFid; + + final String targetFid; + + Map toJson() { + return { + 'source_fid': sourceFid, + 'target_fid': targetFid, + }; + } + + static RejectFollowRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return RejectFollowRequest( + sourceFid: mapValueOfType(json, r'source_fid')!, + targetFid: mapValueOfType(json, r'target_fid')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = RejectFollowRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'RejectFollowRequest(' + 'sourceFid: $sourceFid, ' + 'targetFid: $targetFid, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is RejectFollowRequest && + other.sourceFid == sourceFid && + other.targetFid == targetFid; + } + + @override + int get hashCode { + return Object.hashAll([ + sourceFid, + targetFid, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/reject_follow_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/reject_follow_response.g.dart new file mode 100644 index 00000000..f2305f1f --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/reject_follow_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class RejectFollowResponse { + const RejectFollowResponse({ + required this.duration, + required this.follow, + }); + + final String duration; + + final FollowResponse follow; + + Map toJson() { + return { + 'duration': duration, + 'follow': follow, + }; + } + + static RejectFollowResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return RejectFollowResponse( + duration: mapValueOfType(json, r'duration')!, + follow: FollowResponse.fromJson(json[r'follow'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = RejectFollowResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'RejectFollowResponse(' + 'duration: $duration, ' + 'follow: $follow, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is RejectFollowResponse && + other.duration == duration && + other.follow == follow; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + follow, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/replies_meta.g.dart b/packages/stream_feeds/lib/src/generated/api/model/replies_meta.g.dart new file mode 100644 index 00000000..8633fb89 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/replies_meta.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class RepliesMeta { + const RepliesMeta({ + required this.depthTruncated, + required this.hasMore, + this.nextCursor, + required this.remaining, + }); + + final bool depthTruncated; + + final bool hasMore; + + final String? nextCursor; + + final int remaining; + + Map toJson() { + return { + 'depth_truncated': depthTruncated, + 'has_more': hasMore, + 'next_cursor': nextCursor, + 'remaining': remaining, + }; + } + + static RepliesMeta? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return RepliesMeta( + depthTruncated: mapValueOfType(json, r'depth_truncated')!, + hasMore: mapValueOfType(json, r'has_more')!, + nextCursor: mapValueOfType(json, r'next_cursor', null), + remaining: mapValueOfType(json, r'remaining')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = RepliesMeta.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'RepliesMeta(' + 'depthTruncated: $depthTruncated, ' + 'hasMore: $hasMore, ' + 'nextCursor: $nextCursor, ' + 'remaining: $remaining, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is RepliesMeta && + other.depthTruncated == depthTruncated && + other.hasMore == hasMore && + other.nextCursor == nextCursor && + other.remaining == remaining; + } + + @override + int get hashCode { + return Object.hashAll([ + depthTruncated, + hasMore, + nextCursor, + remaining, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/single_follow_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/single_follow_request.g.dart new file mode 100644 index 00000000..d0cb7a13 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/single_follow_request.g.dart @@ -0,0 +1,130 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum SingleFollowRequestPushPreferenceEnum { + all('all'), + none('none'), + unknown('_unknown'); + + const SingleFollowRequestPushPreferenceEnum(this.value); + final String value; + + static SingleFollowRequestPushPreferenceEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'all': + return SingleFollowRequestPushPreferenceEnum.all; + case 'none': + return SingleFollowRequestPushPreferenceEnum.none; + default: + return SingleFollowRequestPushPreferenceEnum.unknown; + } + } +} + +@immutable +class SingleFollowRequest { + const SingleFollowRequest({ + this.createNotificationActivity, + this.custom, + this.pushPreference, + required this.source, + required this.target, + }); + + final bool? createNotificationActivity; + + final Map? custom; + + final SingleFollowRequestPushPreferenceEnum? pushPreference; + + final String source; + + final String target; + + Map toJson() { + return { + 'create_notification_activity': createNotificationActivity, + 'custom': custom, + 'push_preference': pushPreference, + 'source': source, + 'target': target, + }; + } + + static SingleFollowRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return SingleFollowRequest( + createNotificationActivity: + mapValueOfType(json, r'create_notification_activity', null), + custom: mapCastOfType(json, r'custom'), + pushPreference: SingleFollowRequestPushPreferenceEnum.fromValue( + json['push_preference']), + source: mapValueOfType(json, r'source')!, + target: mapValueOfType(json, r'target')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = SingleFollowRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'SingleFollowRequest(' + 'createNotificationActivity: $createNotificationActivity, ' + 'custom: $custom, ' + 'pushPreference: $pushPreference, ' + 'source: $source, ' + 'target: $target, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is SingleFollowRequest && + other.createNotificationActivity == createNotificationActivity && + other.custom == custom && + other.pushPreference == pushPreference && + other.source == source && + other.target == target; + } + + @override + int get hashCode { + return Object.hashAll([ + createNotificationActivity, + custom, + pushPreference, + source, + target, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/single_follow_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/single_follow_response.g.dart new file mode 100644 index 00000000..b45fe4ba --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/single_follow_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class SingleFollowResponse { + const SingleFollowResponse({ + required this.duration, + required this.follow, + }); + + final String duration; + + final FollowResponse follow; + + Map toJson() { + return { + 'duration': duration, + 'follow': follow, + }; + } + + static SingleFollowResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return SingleFollowResponse( + duration: mapValueOfType(json, r'duration')!, + follow: FollowResponse.fromJson(json[r'follow'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = SingleFollowResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'SingleFollowResponse(' + 'duration: $duration, ' + 'follow: $follow, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is SingleFollowResponse && + other.duration == duration && + other.follow == follow; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + follow, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/sort_param_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/sort_param_request.g.dart new file mode 100644 index 00000000..9c1db026 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/sort_param_request.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class SortParamRequest { + const SortParamRequest({ + this.direction, + this.field, + }); + + final int? direction; + + final String? field; + + Map toJson() { + return { + 'direction': direction, + 'field': field, + }; + } + + static SortParamRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return SortParamRequest( + direction: mapValueOfType(json, r'direction', null), + field: mapValueOfType(json, r'field', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = SortParamRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'SortParamRequest(' + 'direction: $direction, ' + 'field: $field, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is SortParamRequest && + other.direction == direction && + other.field == field; + } + + @override + int get hashCode { + return Object.hashAll([ + direction, + field, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/stories_config.g.dart b/packages/stream_feeds/lib/src/generated/api/model/stories_config.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/stories_config.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/stories_config.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/threaded_comment_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/threaded_comment_response.g.dart new file mode 100644 index 00000000..124e7fb4 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/threaded_comment_response.g.dart @@ -0,0 +1,277 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class ThreadedCommentResponse { + const ThreadedCommentResponse({ + this.attachments, + required this.confidenceScore, + this.controversyScore, + required this.createdAt, + this.custom, + this.deletedAt, + required this.downvoteCount, + required this.id, + this.latestReactions, + required this.mentionedUsers, + this.meta, + this.moderation, + required this.objectId, + required this.objectType, + required this.ownReactions, + this.parentId, + required this.reactionCount, + this.reactionGroups, + this.replies, + required this.replyCount, + required this.score, + required this.status, + this.text, + required this.updatedAt, + required this.upvoteCount, + required this.user, + }); + + final List? attachments; + + final num confidenceScore; + + final num? controversyScore; + + final DateTime createdAt; + + final Map? custom; + + final DateTime? deletedAt; + + final int downvoteCount; + + final String id; + + final List? latestReactions; + + final List mentionedUsers; + + final RepliesMeta? meta; + + final ModerationV2Response? moderation; + + final String objectId; + + final String objectType; + + final List ownReactions; + + final String? parentId; + + final int reactionCount; + + final Map? reactionGroups; + + final List? replies; + + final int replyCount; + + final int score; + + final String status; + + final String? text; + + final DateTime updatedAt; + + final int upvoteCount; + + final UserResponse user; + + Map toJson() { + return { + 'attachments': attachments, + 'confidence_score': confidenceScore, + 'controversy_score': controversyScore, + 'created_at': createdAt, + 'custom': custom, + 'deleted_at': deletedAt, + 'downvote_count': downvoteCount, + 'id': id, + 'latest_reactions': latestReactions, + 'mentioned_users': mentionedUsers, + 'meta': meta, + 'moderation': moderation, + 'object_id': objectId, + 'object_type': objectType, + 'own_reactions': ownReactions, + 'parent_id': parentId, + 'reaction_count': reactionCount, + 'reaction_groups': reactionGroups, + 'replies': replies, + 'reply_count': replyCount, + 'score': score, + 'status': status, + 'text': text, + 'updated_at': updatedAt, + 'upvote_count': upvoteCount, + 'user': user, + }; + } + + static ThreadedCommentResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return ThreadedCommentResponse( + attachments: Attachment.listFromJson(json[r'attachments']), + confidenceScore: mapValueOfType(json, r'confidence_score')!, + controversyScore: mapValueOfType(json, r'controversy_score', null), + createdAt: mapValueOfType(json, r'created_at')!, + custom: mapCastOfType(json, r'custom'), + deletedAt: mapValueOfType(json, r'deleted_at', null), + downvoteCount: mapValueOfType(json, r'downvote_count')!, + id: mapValueOfType(json, r'id')!, + latestReactions: + FeedsReactionResponse.listFromJson(json[r'latest_reactions']), + mentionedUsers: UserResponse.listFromJson(json[r'mentioned_users']), + meta: RepliesMeta.fromJson(json[r'meta'] ?? null), + moderation: ModerationV2Response.fromJson(json[r'moderation'] ?? null), + objectId: mapValueOfType(json, r'object_id')!, + objectType: mapValueOfType(json, r'object_type')!, + ownReactions: + FeedsReactionResponse.listFromJson(json[r'own_reactions']), + parentId: mapValueOfType(json, r'parent_id', null), + reactionCount: mapValueOfType(json, r'reaction_count')!, + reactionGroups: mapCastOfType( + json, r'reaction_groups'), + replies: ThreadedCommentResponse.listFromJson(json[r'replies']), + replyCount: mapValueOfType(json, r'reply_count')!, + score: mapValueOfType(json, r'score')!, + status: mapValueOfType(json, r'status')!, + text: mapValueOfType(json, r'text', null), + updatedAt: mapValueOfType(json, r'updated_at')!, + upvoteCount: mapValueOfType(json, r'upvote_count')!, + user: UserResponse.fromJson(json[r'user'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = ThreadedCommentResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'ThreadedCommentResponse(' + 'attachments: $attachments, ' + 'confidenceScore: $confidenceScore, ' + 'controversyScore: $controversyScore, ' + 'createdAt: $createdAt, ' + 'custom: $custom, ' + 'deletedAt: $deletedAt, ' + 'downvoteCount: $downvoteCount, ' + 'id: $id, ' + 'latestReactions: $latestReactions, ' + 'mentionedUsers: $mentionedUsers, ' + 'meta: $meta, ' + 'moderation: $moderation, ' + 'objectId: $objectId, ' + 'objectType: $objectType, ' + 'ownReactions: $ownReactions, ' + 'parentId: $parentId, ' + 'reactionCount: $reactionCount, ' + 'reactionGroups: $reactionGroups, ' + 'replies: $replies, ' + 'replyCount: $replyCount, ' + 'score: $score, ' + 'status: $status, ' + 'text: $text, ' + 'updatedAt: $updatedAt, ' + 'upvoteCount: $upvoteCount, ' + 'user: $user, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is ThreadedCommentResponse && + other.attachments == attachments && + other.confidenceScore == confidenceScore && + other.controversyScore == controversyScore && + other.createdAt == createdAt && + other.custom == custom && + other.deletedAt == deletedAt && + other.downvoteCount == downvoteCount && + other.id == id && + other.latestReactions == latestReactions && + other.mentionedUsers == mentionedUsers && + other.meta == meta && + other.moderation == moderation && + other.objectId == objectId && + other.objectType == objectType && + other.ownReactions == ownReactions && + other.parentId == parentId && + other.reactionCount == reactionCount && + other.reactionGroups == reactionGroups && + other.replies == replies && + other.replyCount == replyCount && + other.score == score && + other.status == status && + other.text == text && + other.updatedAt == updatedAt && + other.upvoteCount == upvoteCount && + other.user == user; + } + + @override + int get hashCode { + return Object.hashAll([ + attachments, + confidenceScore, + controversyScore, + createdAt, + custom, + deletedAt, + downvoteCount, + id, + latestReactions, + mentionedUsers, + meta, + moderation, + objectId, + objectType, + ownReactions, + parentId, + reactionCount, + reactionGroups, + replies, + replyCount, + score, + status, + text, + updatedAt, + upvoteCount, + user, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/thresholds.g.dart b/packages/stream_feeds/lib/src/generated/api/model/thresholds.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/thresholds.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/thresholds.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/typing_indicators.g.dart b/packages/stream_feeds/lib/src/generated/api/model/typing_indicators.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/typing_indicators.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/typing_indicators.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/typing_indicators_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/typing_indicators_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/typing_indicators_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/typing_indicators_response.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/unfollow_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/unfollow_response.g.dart new file mode 100644 index 00000000..a36257f6 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/unfollow_response.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UnfollowResponse { + const UnfollowResponse({ + required this.duration, + }); + + final String duration; + + Map toJson() { + return { + 'duration': duration, + }; + } + + static UnfollowResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UnfollowResponse( + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UnfollowResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UnfollowResponse(' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UnfollowResponse && other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/unpin_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/unpin_activity_response.g.dart new file mode 100644 index 00000000..4c89048a --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/unpin_activity_response.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UnpinActivityResponse { + const UnpinActivityResponse({ + required this.activity, + required this.duration, + required this.fid, + required this.userId, + }); + + final ActivityResponse activity; + + final String duration; + + final String fid; + + final String userId; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + 'fid': fid, + 'user_id': userId, + }; + } + + static UnpinActivityResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UnpinActivityResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + fid: mapValueOfType(json, r'fid')!, + userId: mapValueOfType(json, r'user_id')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UnpinActivityResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UnpinActivityResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + 'fid: $fid, ' + 'userId: $userId, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UnpinActivityResponse && + other.activity == activity && + other.duration == duration && + other.fid == fid && + other.userId == userId; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + fid, + userId, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_activity_partial_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_activity_partial_request.g.dart new file mode 100644 index 00000000..c5196ece --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_activity_partial_request.g.dart @@ -0,0 +1,86 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateActivityPartialRequest { + const UpdateActivityPartialRequest({ + this.set, + this.unset, + }); + + final Map? set; + + final List? unset; + + Map toJson() { + return { + 'set': set, + 'unset': unset, + }; + } + + static UpdateActivityPartialRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateActivityPartialRequest( + set: mapCastOfType(json, r'set'), + unset: json[r'unset'] is Iterable + ? (json[r'unset'] as Iterable) + .cast() + .toList(growable: false) + : const [], + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateActivityPartialRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateActivityPartialRequest(' + 'set: $set, ' + 'unset: $unset, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateActivityPartialRequest && + other.set == set && + other.unset == unset; + } + + @override + int get hashCode { + return Object.hashAll([ + set, + unset, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_activity_partial_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_activity_partial_response.g.dart new file mode 100644 index 00000000..96475dff --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_activity_partial_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateActivityPartialResponse { + const UpdateActivityPartialResponse({ + required this.activity, + required this.duration, + }); + + final ActivityResponse activity; + + final String duration; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + }; + } + + static UpdateActivityPartialResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateActivityPartialResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateActivityPartialResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateActivityPartialResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateActivityPartialResponse && + other.activity == activity && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_activity_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_activity_request.g.dart new file mode 100644 index 00000000..db51d518 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_activity_request.g.dart @@ -0,0 +1,146 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateActivityRequest { + const UpdateActivityRequest({ + this.attachments, + this.custom, + this.expiresAt, + this.filterTags, + this.interestTags, + this.location, + this.pollId, + this.text, + this.visibility, + }); + + final List? attachments; + + final Map? custom; + + final DateTime? expiresAt; + + final List? filterTags; + + final List? interestTags; + + final ActivityLocation? location; + + final String? pollId; + + final String? text; + + final String? visibility; + + Map toJson() { + return { + 'attachments': attachments, + 'custom': custom, + 'expires_at': expiresAt, + 'filter_tags': filterTags, + 'interest_tags': interestTags, + 'location': location, + 'poll_id': pollId, + 'text': text, + 'visibility': visibility, + }; + } + + static UpdateActivityRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateActivityRequest( + attachments: Attachment.listFromJson(json[r'attachments']), + custom: mapCastOfType(json, r'custom'), + expiresAt: mapValueOfType(json, r'expires_at', null), + filterTags: json[r'filter_tags'] is Iterable + ? (json[r'filter_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + interestTags: json[r'interest_tags'] is Iterable + ? (json[r'interest_tags'] as Iterable) + .cast() + .toList(growable: false) + : const [], + location: ActivityLocation.fromJson(json[r'location'] ?? null), + pollId: mapValueOfType(json, r'poll_id', null), + text: mapValueOfType(json, r'text', null), + visibility: mapValueOfType(json, r'visibility', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateActivityRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateActivityRequest(' + 'attachments: $attachments, ' + 'custom: $custom, ' + 'expiresAt: $expiresAt, ' + 'filterTags: $filterTags, ' + 'interestTags: $interestTags, ' + 'location: $location, ' + 'pollId: $pollId, ' + 'text: $text, ' + 'visibility: $visibility, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateActivityRequest && + other.attachments == attachments && + other.custom == custom && + other.expiresAt == expiresAt && + other.filterTags == filterTags && + other.interestTags == interestTags && + other.location == location && + other.pollId == pollId && + other.text == text && + other.visibility == visibility; + } + + @override + int get hashCode { + return Object.hashAll([ + attachments, + custom, + expiresAt, + filterTags, + interestTags, + location, + pollId, + text, + visibility, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_activity_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_activity_response.g.dart new file mode 100644 index 00000000..e01b08f1 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_activity_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateActivityResponse { + const UpdateActivityResponse({ + required this.activity, + required this.duration, + }); + + final ActivityResponse activity; + + final String duration; + + Map toJson() { + return { + 'activity': activity, + 'duration': duration, + }; + } + + static UpdateActivityResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateActivityResponse( + activity: ActivityResponse.fromJson(json[r'activity'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateActivityResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateActivityResponse(' + 'activity: $activity, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateActivityResponse && + other.activity == activity && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + activity, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_folder_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_folder_request.g.dart new file mode 100644 index 00000000..0ee1fbe6 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_folder_request.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateBookmarkFolderRequest { + const UpdateBookmarkFolderRequest({ + this.custom, + this.name, + }); + + final Map? custom; + + final String? name; + + Map toJson() { + return { + 'custom': custom, + 'name': name, + }; + } + + static UpdateBookmarkFolderRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateBookmarkFolderRequest( + custom: mapCastOfType(json, r'custom'), + name: mapValueOfType(json, r'name', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateBookmarkFolderRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateBookmarkFolderRequest(' + 'custom: $custom, ' + 'name: $name, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateBookmarkFolderRequest && + other.custom == custom && + other.name == name; + } + + @override + int get hashCode { + return Object.hashAll([ + custom, + name, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_folder_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_folder_response.g.dart new file mode 100644 index 00000000..c185cf94 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_folder_response.g.dart @@ -0,0 +1,83 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateBookmarkFolderResponse { + const UpdateBookmarkFolderResponse({ + required this.bookmarkFolder, + required this.duration, + }); + + final BookmarkFolderResponse bookmarkFolder; + + final String duration; + + Map toJson() { + return { + 'bookmark_folder': bookmarkFolder, + 'duration': duration, + }; + } + + static UpdateBookmarkFolderResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateBookmarkFolderResponse( + bookmarkFolder: + BookmarkFolderResponse.fromJson(json[r'bookmark_folder'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateBookmarkFolderResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateBookmarkFolderResponse(' + 'bookmarkFolder: $bookmarkFolder, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateBookmarkFolderResponse && + other.bookmarkFolder == bookmarkFolder && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + bookmarkFolder, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_request.g.dart new file mode 100644 index 00000000..33784d94 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_request.g.dart @@ -0,0 +1,98 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateBookmarkRequest { + const UpdateBookmarkRequest({ + this.custom, + this.folderId, + this.newFolder, + this.newFolderId, + }); + + final Map? custom; + + final String? folderId; + + final AddFolderRequest? newFolder; + + final String? newFolderId; + + Map toJson() { + return { + 'custom': custom, + 'folder_id': folderId, + 'new_folder': newFolder, + 'new_folder_id': newFolderId, + }; + } + + static UpdateBookmarkRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateBookmarkRequest( + custom: mapCastOfType(json, r'custom'), + folderId: mapValueOfType(json, r'folder_id', null), + newFolder: AddFolderRequest.fromJson(json[r'new_folder'] ?? null), + newFolderId: mapValueOfType(json, r'new_folder_id', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateBookmarkRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateBookmarkRequest(' + 'custom: $custom, ' + 'folderId: $folderId, ' + 'newFolder: $newFolder, ' + 'newFolderId: $newFolderId, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateBookmarkRequest && + other.custom == custom && + other.folderId == folderId && + other.newFolder == newFolder && + other.newFolderId == newFolderId; + } + + @override + int get hashCode { + return Object.hashAll([ + custom, + folderId, + newFolder, + newFolderId, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_response.g.dart new file mode 100644 index 00000000..ca38a815 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_bookmark_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateBookmarkResponse { + const UpdateBookmarkResponse({ + required this.bookmark, + required this.duration, + }); + + final BookmarkResponse bookmark; + + final String duration; + + Map toJson() { + return { + 'bookmark': bookmark, + 'duration': duration, + }; + } + + static UpdateBookmarkResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateBookmarkResponse( + bookmark: BookmarkResponse.fromJson(json[r'bookmark'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateBookmarkResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateBookmarkResponse(' + 'bookmark: $bookmark, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateBookmarkResponse && + other.bookmark == bookmark && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + bookmark, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_comment_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_comment_request.g.dart new file mode 100644 index 00000000..9b45b2bb --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_comment_request.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateCommentRequest { + const UpdateCommentRequest({ + this.comment, + this.custom, + }); + + final String? comment; + + final Map? custom; + + Map toJson() { + return { + 'comment': comment, + 'custom': custom, + }; + } + + static UpdateCommentRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateCommentRequest( + comment: mapValueOfType(json, r'comment', null), + custom: mapCastOfType(json, r'custom'), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateCommentRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateCommentRequest(' + 'comment: $comment, ' + 'custom: $custom, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateCommentRequest && + other.comment == comment && + other.custom == custom; + } + + @override + int get hashCode { + return Object.hashAll([ + comment, + custom, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_comment_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_comment_response.g.dart new file mode 100644 index 00000000..f09c0a74 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_comment_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateCommentResponse { + const UpdateCommentResponse({ + required this.comment, + required this.duration, + }); + + final CommentResponse comment; + + final String duration; + + Map toJson() { + return { + 'comment': comment, + 'duration': duration, + }; + } + + static UpdateCommentResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateCommentResponse( + comment: CommentResponse.fromJson(json[r'comment'])!, + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateCommentResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateCommentResponse(' + 'comment: $comment, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateCommentResponse && + other.comment == comment && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + comment, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_feed_members_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_feed_members_request.g.dart new file mode 100644 index 00000000..522579b5 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_feed_members_request.g.dart @@ -0,0 +1,132 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum UpdateFeedMembersRequestOperationEnum { + remove('remove'), + set('set'), + upsert('upsert'), + unknown('_unknown'); + + const UpdateFeedMembersRequestOperationEnum(this.value); + final String value; + + static UpdateFeedMembersRequestOperationEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'remove': + return UpdateFeedMembersRequestOperationEnum.remove; + case 'set': + return UpdateFeedMembersRequestOperationEnum.set; + case 'upsert': + return UpdateFeedMembersRequestOperationEnum.upsert; + default: + return UpdateFeedMembersRequestOperationEnum.unknown; + } + } +} + +@immutable +class UpdateFeedMembersRequest { + const UpdateFeedMembersRequest({ + this.limit, + this.members, + this.next, + required this.operation, + this.prev, + }); + + final int? limit; + + final List? members; + + final String? next; + + final UpdateFeedMembersRequestOperationEnum operation; + + final String? prev; + + Map toJson() { + return { + 'limit': limit, + 'members': members, + 'next': next, + 'operation': operation, + 'prev': prev, + }; + } + + static UpdateFeedMembersRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateFeedMembersRequest( + limit: mapValueOfType(json, r'limit', null), + members: FeedMemberRequest.listFromJson(json[r'members']), + next: mapValueOfType(json, r'next', null), + operation: + UpdateFeedMembersRequestOperationEnum.fromValue(json['operation'])!, + prev: mapValueOfType(json, r'prev', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateFeedMembersRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateFeedMembersRequest(' + 'limit: $limit, ' + 'members: $members, ' + 'next: $next, ' + 'operation: $operation, ' + 'prev: $prev, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateFeedMembersRequest && + other.limit == limit && + other.members == members && + other.next == next && + other.operation == operation && + other.prev == prev; + } + + @override + int get hashCode { + return Object.hashAll([ + limit, + members, + next, + operation, + prev, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_feed_members_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_feed_members_response.g.dart new file mode 100644 index 00000000..6af99b69 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_feed_members_response.g.dart @@ -0,0 +1,102 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateFeedMembersResponse { + const UpdateFeedMembersResponse({ + required this.added, + required this.duration, + required this.removedIds, + required this.updated, + }); + + final List added; + + final String duration; + + final List removedIds; + + final List updated; + + Map toJson() { + return { + 'added': added, + 'duration': duration, + 'removed_ids': removedIds, + 'updated': updated, + }; + } + + static UpdateFeedMembersResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateFeedMembersResponse( + added: FeedMemberResponse.listFromJson(json[r'added']), + duration: mapValueOfType(json, r'duration')!, + removedIds: json[r'removed_ids'] is Iterable + ? (json[r'removed_ids'] as Iterable) + .cast() + .toList(growable: false) + : const [], + updated: FeedMemberResponse.listFromJson(json[r'updated']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateFeedMembersResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateFeedMembersResponse(' + 'added: $added, ' + 'duration: $duration, ' + 'removedIds: $removedIds, ' + 'updated: $updated, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateFeedMembersResponse && + other.added == added && + other.duration == duration && + other.removedIds == removedIds && + other.updated == updated; + } + + @override + int get hashCode { + return Object.hashAll([ + added, + duration, + removedIds, + updated, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_feed_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_feed_request.g.dart new file mode 100644 index 00000000..20a065ba --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_feed_request.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateFeedRequest { + const UpdateFeedRequest({ + this.createdById, + this.custom, + }); + + final String? createdById; + + final Map? custom; + + Map toJson() { + return { + 'created_by_id': createdById, + 'custom': custom, + }; + } + + static UpdateFeedRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateFeedRequest( + createdById: mapValueOfType(json, r'created_by_id', null), + custom: mapCastOfType(json, r'custom'), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateFeedRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateFeedRequest(' + 'createdById: $createdById, ' + 'custom: $custom, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateFeedRequest && + other.createdById == createdById && + other.custom == custom; + } + + @override + int get hashCode { + return Object.hashAll([ + createdById, + custom, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_feed_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_feed_response.g.dart new file mode 100644 index 00000000..79e4a740 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_feed_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateFeedResponse { + const UpdateFeedResponse({ + required this.duration, + required this.feed, + }); + + final String duration; + + final FeedResponse feed; + + Map toJson() { + return { + 'duration': duration, + 'feed': feed, + }; + } + + static UpdateFeedResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateFeedResponse( + duration: mapValueOfType(json, r'duration')!, + feed: FeedResponse.fromJson(json[r'feed'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateFeedResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateFeedResponse(' + 'duration: $duration, ' + 'feed: $feed, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateFeedResponse && + other.duration == duration && + other.feed == feed; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + feed, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_follow_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_follow_request.g.dart new file mode 100644 index 00000000..ae7b3291 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_follow_request.g.dart @@ -0,0 +1,138 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +enum UpdateFollowRequestPushPreferenceEnum { + all('all'), + none('none'), + unknown('_unknown'); + + const UpdateFollowRequestPushPreferenceEnum(this.value); + final String value; + + static UpdateFollowRequestPushPreferenceEnum? fromValue(String? json) { + switch (json) { + case null: + return null; + case 'all': + return UpdateFollowRequestPushPreferenceEnum.all; + case 'none': + return UpdateFollowRequestPushPreferenceEnum.none; + default: + return UpdateFollowRequestPushPreferenceEnum.unknown; + } + } +} + +@immutable +class UpdateFollowRequest { + const UpdateFollowRequest({ + this.createNotificationActivity, + this.custom, + this.followerRole, + this.pushPreference, + required this.source, + required this.target, + }); + + final bool? createNotificationActivity; + + final Map? custom; + + final String? followerRole; + + final UpdateFollowRequestPushPreferenceEnum? pushPreference; + + final String source; + + final String target; + + Map toJson() { + return { + 'create_notification_activity': createNotificationActivity, + 'custom': custom, + 'follower_role': followerRole, + 'push_preference': pushPreference, + 'source': source, + 'target': target, + }; + } + + static UpdateFollowRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateFollowRequest( + createNotificationActivity: + mapValueOfType(json, r'create_notification_activity', null), + custom: mapCastOfType(json, r'custom'), + followerRole: mapValueOfType(json, r'follower_role', null), + pushPreference: UpdateFollowRequestPushPreferenceEnum.fromValue( + json['push_preference']), + source: mapValueOfType(json, r'source')!, + target: mapValueOfType(json, r'target')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateFollowRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateFollowRequest(' + 'createNotificationActivity: $createNotificationActivity, ' + 'custom: $custom, ' + 'followerRole: $followerRole, ' + 'pushPreference: $pushPreference, ' + 'source: $source, ' + 'target: $target, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateFollowRequest && + other.createNotificationActivity == createNotificationActivity && + other.custom == custom && + other.followerRole == followerRole && + other.pushPreference == pushPreference && + other.source == source && + other.target == target; + } + + @override + int get hashCode { + return Object.hashAll([ + createNotificationActivity, + custom, + followerRole, + pushPreference, + source, + target, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/update_follow_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/update_follow_response.g.dart new file mode 100644 index 00000000..a709aa66 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/update_follow_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpdateFollowResponse { + const UpdateFollowResponse({ + required this.duration, + required this.follow, + }); + + final String duration; + + final FollowResponse follow; + + Map toJson() { + return { + 'duration': duration, + 'follow': follow, + }; + } + + static UpdateFollowResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpdateFollowResponse( + duration: mapValueOfType(json, r'duration')!, + follow: FollowResponse.fromJson(json[r'follow'])!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpdateFollowResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpdateFollowResponse(' + 'duration: $duration, ' + 'follow: $follow, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpdateFollowResponse && + other.duration == duration && + other.follow == follow; + } + + @override + int get hashCode { + return Object.hashAll([ + duration, + follow, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/upsert_activities_request.g.dart b/packages/stream_feeds/lib/src/generated/api/model/upsert_activities_request.g.dart new file mode 100644 index 00000000..de5374d1 --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/upsert_activities_request.g.dart @@ -0,0 +1,73 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpsertActivitiesRequest { + const UpsertActivitiesRequest({ + required this.activities, + }); + + final List activities; + + Map toJson() { + return { + 'activities': activities, + }; + } + + static UpsertActivitiesRequest? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpsertActivitiesRequest( + activities: ActivityRequest.listFromJson(json[r'activities']), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpsertActivitiesRequest.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpsertActivitiesRequest(' + 'activities: $activities, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpsertActivitiesRequest && other.activities == activities; + } + + @override + int get hashCode { + return Object.hashAll([ + activities, + ]); + } +} diff --git a/packages/stream_feeds/lib/src/generated/api/model/upsert_activities_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/upsert_activities_response.g.dart new file mode 100644 index 00000000..207015de --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/upsert_activities_response.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class UpsertActivitiesResponse { + const UpsertActivitiesResponse({ + required this.activities, + required this.duration, + }); + + final List activities; + + final String duration; + + Map toJson() { + return { + 'activities': activities, + 'duration': duration, + }; + } + + static UpsertActivitiesResponse? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return UpsertActivitiesResponse( + activities: ActivityResponse.listFromJson(json[r'activities']), + duration: mapValueOfType(json, r'duration')!, + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = UpsertActivitiesResponse.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'UpsertActivitiesResponse(' + 'activities: $activities, ' + 'duration: $duration, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is UpsertActivitiesResponse && + other.activities == activities && + other.duration == duration; + } + + @override + int get hashCode { + return Object.hashAll([ + activities, + duration, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/user.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_banned_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_banned_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_banned_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_banned_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_deactivated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_deactivated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_deactivated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_deactivated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_mute_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_mute_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_mute_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_mute_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_muted_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_muted_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_muted_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_muted_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_reactivated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_reactivated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_reactivated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_reactivated_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_response.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_response.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_response.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_response.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_response_common_fields.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_response_common_fields.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_response_common_fields.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_response_common_fields.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_response_privacy_fields.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_response_privacy_fields.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_response_privacy_fields.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_response_privacy_fields.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/user_updated_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/user_updated_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/user_updated_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/user_updated_event.g.dart diff --git a/packages/stream_feeds/lib/src/generated/api/model/vote_data.g.dart b/packages/stream_feeds/lib/src/generated/api/model/vote_data.g.dart new file mode 100644 index 00000000..c1b6438d --- /dev/null +++ b/packages/stream_feeds/lib/src/generated/api/model/vote_data.g.dart @@ -0,0 +1,82 @@ +// Code generated by GetStream internal OpenAPI code generator. DO NOT EDIT. + +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: use_string_in_part_of_directives +// ignore_for_file: unnecessary_raw_strings +// ignore_for_file: unnecessary_null_in_if_null_operators +// ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_single_quotes +// ignore_for_file: require_trailing_commas + +part of openapi.api; + +@immutable +class VoteData { + const VoteData({ + this.answerText, + this.optionId, + }); + + final String? answerText; + + final String? optionId; + + Map toJson() { + return { + 'answer_text': answerText, + 'option_id': optionId, + }; + } + + static VoteData? fromJson(dynamic value) { + if (value is Map) { + final json = value.cast(); + + return VoteData( + answerText: mapValueOfType(json, r'answer_text', null), + optionId: mapValueOfType(json, r'option_id', null), + ); + } + return null; + } + + static List listFromJson( + dynamic json, { + bool growable = false, + }) { + final result = []; + if (json is List && json.isNotEmpty) { + for (final row in json) { + final value = VoteData.fromJson(row); + if (value != null) { + result.add(value); + } + } + } + return result.toList(growable: growable); + } + + @override + String toString() { + return 'VoteData(' + 'answerText: $answerText, ' + 'optionId: $optionId, ' + ')'; + } + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is VoteData && + other.answerText == answerText && + other.optionId == optionId; + } + + @override + int get hashCode { + return Object.hashAll([ + answerText, + optionId, + ]); + } +} diff --git a/packages/stream_feeds/lib/generated/api/model/ws_client_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/ws_client_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/ws_client_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/ws_client_event.g.dart diff --git a/packages/stream_feeds/lib/generated/api/model/ws_event.g.dart b/packages/stream_feeds/lib/src/generated/api/model/ws_event.g.dart similarity index 100% rename from packages/stream_feeds/lib/generated/api/model/ws_event.g.dart rename to packages/stream_feeds/lib/src/generated/api/model/ws_event.g.dart diff --git a/packages/stream_feeds/lib/src/models.dart b/packages/stream_feeds/lib/src/models.dart new file mode 100644 index 00000000..b37f6f3a --- /dev/null +++ b/packages/stream_feeds/lib/src/models.dart @@ -0,0 +1,10 @@ +export 'package:stream_core/stream_core.dart' + show PaginationData, PaginationResult, User; + +export 'models/activity_data.dart'; +export 'models/feed_id.dart'; +export 'models/feeds_reaction_data.dart'; +export 'models/identifiable.dart'; +export 'models/reaction_group_data.dart'; +export 'models/user_data.dart'; +export 'models/get_or_create_feed_data.dart'; diff --git a/packages/stream_feeds/lib/src/models/activity_data.dart b/packages/stream_feeds/lib/src/models/activity_data.dart new file mode 100644 index 00000000..b8873a41 --- /dev/null +++ b/packages/stream_feeds/lib/src/models/activity_data.dart @@ -0,0 +1,126 @@ +import '../models.dart'; +import '../utils/list_extensions.dart'; + +// TODO: incomplete +class ActivityData implements Identifiable { + const ActivityData({ + required this.id, + required this.user, + required this.text, + required this.reactionCount, + required this.latestReactions, + required this.ownReactions, + required this.reactionGroups, + }); + + @override + final String id; + final UserData user; + final String? text; + final int reactionCount; + final List latestReactions; + final List ownReactions; + final Map reactionGroups; + + ActivityData copyWith({ + String? text, + int? reactionCount, + List? latestReactions, + List? ownReactions, + Map? reactionGroups, + }) { + return ActivityData( + id: id, + user: user, + text: text ?? this.text, + reactionCount: reactionCount ?? this.reactionCount, + latestReactions: latestReactions ?? this.latestReactions, + ownReactions: ownReactions ?? this.ownReactions, + reactionGroups: reactionGroups ?? this.reactionGroups, + ); + } + + ActivityData addReaction(FeedsReactionData reaction, + {required String currentUserId}) { + final newLatestReactions = [...latestReactions]; + final newReactionGroups = + Map.from(reactionGroups); + var newOwnReactions = [...ownReactions]; + + reaction.updateByAdding( + to: newLatestReactions, + reactionGroups: newReactionGroups, + ); + if (reaction.user.id == currentUserId) { + newOwnReactions = newOwnReactions.insertById(reaction); + } + + return copyWith( + reactionCount: reactionGroups.totalCount, + latestReactions: List.unmodifiable(newLatestReactions), + ownReactions: List.unmodifiable(newOwnReactions), + reactionGroups: Map.unmodifiable(newReactionGroups), + ); + } + + ActivityData removeReaction(FeedsReactionData reaction, + {required String currentUserId}) { + final newLatestReactions = [...latestReactions]; + final newReactionGroups = + Map.from(reactionGroups); + var newOwnReactions = [...ownReactions]; + + reaction.updateByRemoving( + to: newLatestReactions, + reactionGroups: newReactionGroups, + ); + if (reaction.user.id == currentUserId) { + newOwnReactions = newOwnReactions.removeById(reaction); + } + + return copyWith( + reactionCount: reactionGroups.totalCount, + latestReactions: List.unmodifiable(newLatestReactions), + ownReactions: List.unmodifiable(newOwnReactions), + reactionGroups: Map.unmodifiable(newReactionGroups), + ); + } +} + +extension on FeedsReactionData { + void updateByAdding({ + required List to, + required Map reactionGroups, + }) { + to.insertById(this, createNewList: false); + + final reactionGroup = reactionGroups[type]?.increment(createdAt) ?? + ReactionGroupData( + count: 1, + firstReactionAt: createdAt, + lastReactionAt: createdAt, + ); + reactionGroups[type] = reactionGroup; + } + + void updateByRemoving({ + required List to, + required Map reactionGroups, + }) { + to.removeById(this, createNewList: false); + var reactionGroup = reactionGroups[type]; + if (reactionGroup != null) { + reactionGroup = reactionGroup.decrement(createdAt); + if (reactionGroup.isEmpty) { + reactionGroups.remove(type); + } else { + reactionGroups[type] = reactionGroup; + } + } + } +} + +extension on Map { + int get totalCount => + values.fold(0, (sum, reactionGroup) => sum + reactionGroup.count); +} diff --git a/packages/stream_feeds/lib/src/models/feed_id.dart b/packages/stream_feeds/lib/src/models/feed_id.dart new file mode 100644 index 00000000..9a0b2b12 --- /dev/null +++ b/packages/stream_feeds/lib/src/models/feed_id.dart @@ -0,0 +1,51 @@ +import 'package:equatable/equatable.dart'; + +class FeedId extends Equatable { + /// Creates a new feed identifier with the specified group and feed IDs. + /// + /// - Parameters: + /// - group: The feed group identifier (e.g., "user", "timeline") + /// - id: The specific feed identifier within the group + const FeedId({ + required this.group, + required this.id, + }) : rawValue = '$group:$id'; + + /// Creates a feed identifier from a raw string value. + /// + /// The string should be in the format `"group:id"`. If the string + /// doesn't contain a colon separator, the entire string will be used + /// as the `id` and `group` will be empty. + factory FeedId.fromRawValue(String rawValue) { + final parts = rawValue.split(':'); + return FeedId(group: parts[0], id: parts.length > 1 ? parts[1] : ''); + } + + /// The feed group identifier that categorizes the type of feed. + /// + /// Common group IDs include: + /// - `"user"`: User-specific feeds + /// - `"timeline"`: Timeline feeds + /// - `"notification"`: Notification feeds + /// - `"aggregated"`: Aggregated feeds + final String group; + + /// The specific feed identifier within the group. + /// + /// This is typically a user ID, feed name, or other unique identifier + /// that distinguishes this feed from others in the same group. + final String id; + + /// The complete feed identifier as a colon-separated string. + /// + /// This is the canonical string representation of the feed ID, + /// formatted as `"group:id"`. This value is used for API requests + /// and serialization. + final String rawValue; + + @override + String toString() => rawValue; + + @override + List get props => [group, id]; +} diff --git a/packages/stream_feeds/lib/src/models/feeds_reaction_data.dart b/packages/stream_feeds/lib/src/models/feeds_reaction_data.dart new file mode 100644 index 00000000..39a5aba8 --- /dev/null +++ b/packages/stream_feeds/lib/src/models/feeds_reaction_data.dart @@ -0,0 +1,22 @@ +import '../models.dart'; + +class FeedsReactionData implements Identifiable { + FeedsReactionData({ + required this.activityId, + required this.createdAt, + required this.customData, + required this.type, + required this.updatedAt, + required this.user, + }); + + @override + String get id => '$activityId${user.id}'; + + final String activityId; + final DateTime createdAt; + final Map? customData; + final String type; + final DateTime updatedAt; + final UserData user; +} diff --git a/packages/stream_feeds/lib/src/models/get_or_create_feed_data.dart b/packages/stream_feeds/lib/src/models/get_or_create_feed_data.dart new file mode 100644 index 00000000..2a6ca59a --- /dev/null +++ b/packages/stream_feeds/lib/src/models/get_or_create_feed_data.dart @@ -0,0 +1,10 @@ +// TODO: incomplete +import '../models.dart'; + +class GetOrCreateFeedData { + const GetOrCreateFeedData({ + required this.activities, + }); + + final PaginationResult activities; +} diff --git a/packages/stream_feeds/lib/src/models/identifiable.dart b/packages/stream_feeds/lib/src/models/identifiable.dart new file mode 100644 index 00000000..06d9f167 --- /dev/null +++ b/packages/stream_feeds/lib/src/models/identifiable.dart @@ -0,0 +1,3 @@ +abstract interface class Identifiable { + String get id; +} diff --git a/packages/stream_feeds/lib/src/models/reaction_group_data.dart b/packages/stream_feeds/lib/src/models/reaction_group_data.dart new file mode 100644 index 00000000..a6b5ea50 --- /dev/null +++ b/packages/stream_feeds/lib/src/models/reaction_group_data.dart @@ -0,0 +1,36 @@ +class ReactionGroupData { + const ReactionGroupData({ + required this.count, + required this.firstReactionAt, + required this.lastReactionAt, + }); + + bool get isEmpty => count <= 0; + final int count; + final DateTime firstReactionAt; + final DateTime lastReactionAt; + + ReactionGroupData increment(DateTime reactionCreatedAt) { + if (!reactionCreatedAt.isAfter(lastReactionAt)) return this; + + return ReactionGroupData( + count: count + 1, + firstReactionAt: firstReactionAt, + lastReactionAt: reactionCreatedAt, + ); + } + + ReactionGroupData decrement(DateTime reactionCreatedAt) { + if (reactionCreatedAt.isBefore(firstReactionAt) || + reactionCreatedAt.isAfter(lastReactionAt) || + count == 0) { + return this; + } + + return ReactionGroupData( + count: count - 1, + firstReactionAt: firstReactionAt, + lastReactionAt: lastReactionAt, + ); + } +} diff --git a/packages/stream_feeds/lib/src/models/user_data.dart b/packages/stream_feeds/lib/src/models/user_data.dart new file mode 100644 index 00000000..4aef0355 --- /dev/null +++ b/packages/stream_feeds/lib/src/models/user_data.dart @@ -0,0 +1,11 @@ +class UserData { + const UserData({ + required this.id, + this.name, + this.imageUrl, + }); + + final String id; + final String? name; + final String? imageUrl; +} diff --git a/packages/stream_feeds/lib/src/repositories.dart b/packages/stream_feeds/lib/src/repositories.dart new file mode 100644 index 00000000..4e4eafbd --- /dev/null +++ b/packages/stream_feeds/lib/src/repositories.dart @@ -0,0 +1 @@ +export 'repositories/feeds_repository.dart'; diff --git a/packages/stream_feeds/lib/src/repositories/activities_repository.dart b/packages/stream_feeds/lib/src/repositories/activities_repository.dart new file mode 100644 index 00000000..cbcacb45 --- /dev/null +++ b/packages/stream_feeds/lib/src/repositories/activities_repository.dart @@ -0,0 +1,9 @@ +import '../generated/api/api.g.dart' as api; + +class ActivitiesRepository { + final api.DefaultApi apiClient; + + ActivitiesRepository({ + required this.apiClient, + }); +} diff --git a/packages/stream_feeds/lib/src/repositories/feeds_data_mappers.dart b/packages/stream_feeds/lib/src/repositories/feeds_data_mappers.dart new file mode 100644 index 00000000..a8434b4c --- /dev/null +++ b/packages/stream_feeds/lib/src/repositories/feeds_data_mappers.dart @@ -0,0 +1,55 @@ +import '../../stream_feeds.dart'; +import '../generated/api/api.g.dart' as api; +import '../models.dart'; + +extension FeedsReactionResponseMapper on api.FeedsReactionResponse { + FeedsReactionData toModel() { + return FeedsReactionData( + activityId: activityId, + createdAt: createdAt, + customData: custom, + type: type, + updatedAt: updatedAt, + user: user.toModel(), + ); + } +} + +extension UserResponseMapper on api.UserResponse { + UserData toModel() { + return UserData(id: id, name: name, imageUrl: image); + } +} + +extension ReactionGroupResponseMapper on api.ReactionGroupResponse { + ReactionGroupData toModel() { + return ReactionGroupData( + count: count, + firstReactionAt: firstReactionAt, + lastReactionAt: lastReactionAt, + ); + } +} + +extension GetOrCreateFeedResponseMapper on api.GetOrCreateFeedResponse { + PaginationResult toPaginatedActivityData() { + return PaginationResult( + items: activities.map( + (e) { + return ActivityData( + id: e.id, + user: e.user.toModel(), + text: e.text, + reactionCount: e.reactionCount, + latestReactions: e.latestReactions.map((e) => e.toModel()).toList(), + ownReactions: e.ownReactions.map((e) => e.toModel()).toList(), + reactionGroups: e.reactionGroups.map( + (key, value) => MapEntry(key, value.toModel()), + ), + ); + }, + ).toList(), + pagination: PaginationData(next: next, previous: prev), + ); + } +} diff --git a/packages/stream_feeds/lib/src/repositories/feeds_repository.dart b/packages/stream_feeds/lib/src/repositories/feeds_repository.dart new file mode 100644 index 00000000..44916292 --- /dev/null +++ b/packages/stream_feeds/lib/src/repositories/feeds_repository.dart @@ -0,0 +1,41 @@ +import '../../stream_feeds.dart'; +import '../generated/api/api.g.dart' as api; +import 'feeds_data_mappers.dart'; +import 'feeds_request_mappers.dart'; + +class FeedsRepository { + final api.DefaultApi apiClient; + + FeedsRepository({ + required this.apiClient, + }); + +// TODO improve error handling + Future getOrCreateFeed(FeedQuery query) async { + final fid = query.fid; + final request = query.toRequest(); + try { + final result = await apiClient.getOrCreateFeed( + fid.group, + fid.id, + request, + ); + if (result == null) { + throw Exception('Failed to get or create feed'); + } + return GetOrCreateFeedData( + activities: result.toPaginatedActivityData(), + ); + } on api.ApiException catch (e) { + // TODO custom logger + print(e); + // TODO replace with Result.failure + rethrow; + } catch (e) { + // TODO custom logger + print(e); + // TODO replace with Result.failure + rethrow; + } + } +} diff --git a/packages/stream_feeds/lib/src/repositories/feeds_request_mappers.dart b/packages/stream_feeds/lib/src/repositories/feeds_request_mappers.dart new file mode 100644 index 00000000..eabece08 --- /dev/null +++ b/packages/stream_feeds/lib/src/repositories/feeds_request_mappers.dart @@ -0,0 +1,10 @@ +import '../../stream_feeds.dart'; +import '../generated/api/api.g.dart' as api; + +extension FeedQueryMapper on FeedQuery { + api.GetOrCreateFeedRequest toRequest() { + return api.GetOrCreateFeedRequest( + watch: watch, + ); + } +} diff --git a/packages/stream_feeds/lib/src/state_layer.dart b/packages/stream_feeds/lib/src/state_layer.dart new file mode 100644 index 00000000..78939d25 --- /dev/null +++ b/packages/stream_feeds/lib/src/state_layer.dart @@ -0,0 +1,2 @@ +export 'state_layer/feed.dart'; +export 'state_layer/feed_query.dart'; diff --git a/packages/stream_feeds/lib/src/state_layer/feed.dart b/packages/stream_feeds/lib/src/state_layer/feed.dart new file mode 100644 index 00000000..3d320d57 --- /dev/null +++ b/packages/stream_feeds/lib/src/state_layer/feed.dart @@ -0,0 +1,56 @@ +import 'package:stream_core/stream_core.dart'; + +import '../../stream_feeds.dart'; +import '../feeds_client.dart'; +import '../repositories.dart'; +import 'feed_state.dart'; + +/// A feed represents a collection of activities and provides methods to interact with them. +/// +/// The [Feed] class is the primary interface for working with feeds in the Stream Feeds SDK. +/// It provides functionality for: +/// - Creating and managing feed data +/// - Adding, updating, and deleting activities +/// - Managing comments, reactions, and bookmarks +/// - Handling follows and feed memberships +/// - Creating polls and managing poll interactions +/// - Pagination and querying of feed content +/// +/// Each feed instance is associated with a specific feed ID and maintains its own state +/// that can be observed for real-time updates. The feed state includes activities, +/// followers, members, and other feed-related data. +class Feed { + /// Creates a new feed instance with the specified query and client. + /// + /// - Parameters: + /// - query: The query configuration for the feed + /// - client: The client used to interact with the feed + Feed({ + required this.query, + required this.client, + }) : _feedsRepository = client.feedsRepository { + _feedStateNotifier = FeedStateNotifier( + client: client, + fid: query.fid, + query: query, + currentUserId: client.user.id, + ); + } + + final FeedQuery query; + final FeedsClient client; + + final FeedsRepository _feedsRepository; + FeedStateNotifier get stateNotifier => _feedStateNotifier; + late final FeedStateNotifier _feedStateNotifier; + + Future> getOrCreate() async { + try { + final feed = await _feedsRepository.getOrCreateFeed(query); + _feedStateNotifier.didQueryFeed(feed); + return Result.success(feed); + } catch (e) { + return Result.failure(e); + } + } +} diff --git a/packages/stream_feeds/lib/src/state_layer/feed_query.dart b/packages/stream_feeds/lib/src/state_layer/feed_query.dart new file mode 100644 index 00000000..b3a64a88 --- /dev/null +++ b/packages/stream_feeds/lib/src/state_layer/feed_query.dart @@ -0,0 +1,20 @@ +import '../../stream_feeds.dart'; + +/// A query configuration for retrieving and managing feed data from Stream Feeds. +/// +/// [FeedQuery] defines the parameters used to fetch activities, followers, following, and members +/// for a specific feed. It supports filtering, pagination, ranking, and real-time updates. +class FeedQuery { + /// Creates a new feed query with the specified group and ID. + FeedQuery({ + required String group, + required String id, + this.watch = true, + }) : fid = FeedId(group: group, id: id); + + /// The unique identifier for the feed. + final FeedId fid; + + /// If true, subscribes to web-socket events for this feed. + final bool watch; +} diff --git a/packages/stream_feeds/lib/src/state_layer/feed_state.dart b/packages/stream_feeds/lib/src/state_layer/feed_state.dart new file mode 100644 index 00000000..7d5b1aae --- /dev/null +++ b/packages/stream_feeds/lib/src/state_layer/feed_state.dart @@ -0,0 +1,96 @@ +import 'dart:async'; + +import 'package:equatable/equatable.dart'; +import 'package:state_notifier/state_notifier.dart'; + +import '../../stream_feeds.dart'; +import '../repositories/feeds_repository.dart'; +import '../utils/list_extensions.dart'; +import '../ws/feeds_ws_event.dart'; +import 'feed_ws_handler.dart'; + +class FeedStateNotifier extends StateNotifier { + FeedStateNotifier({ + required FeedId fid, + required FeedQuery query, + required String currentUserId, + required FeedsClient client, + }) : super( + FeedState( + fid: fid, + query: query, + currentUserId: currentUserId, + ), + ) { + wsHandler = FeedWsHandler(client: client, stateNotifier: this); + } + + late final FeedWsHandler wsHandler; + + void didQueryFeed(GetOrCreateFeedData response) { + state = state.copyWith( + activities: List.unmodifiable(response.activities.items), + pagination: response.activities.pagination, + ); + } + + void onReactionAdded(FeedsReactionData reaction) { + final activities = state.activities.updateFirstElement( + (activity) => activity.id == reaction.activityId, + (activity) => activity.addReaction( + reaction, + currentUserId: wsHandler.currentUserId, + ), + ); + state = state.copyWith(activities: activities); + } + + void onReactionRemoved(FeedsReactionData reaction) { + final activities = state.activities.updateFirstElement( + (activity) => activity.id == reaction.activityId, + (activity) => activity.removeReaction( + reaction, + currentUserId: wsHandler.currentUserId, + ), + ); + state = state.copyWith(activities: activities); + } + + @override + void dispose() { + wsHandler.dispose(); + super.dispose(); + } +} + +class FeedState extends Equatable { + const FeedState({ + required this.fid, + required this.query, + required this.currentUserId, + this.activities = const [], + this.pagination, + }); + + final FeedId fid; + final FeedQuery query; + final String currentUserId; + final List activities; + final PaginationData? pagination; + + @override + List get props => []; + + FeedState copyWith({ + List? activities, + PaginationData? pagination, + }) { + return FeedState( + fid: fid, + query: query, + currentUserId: currentUserId, + activities: activities ?? this.activities, + pagination: pagination ?? this.pagination, + ); + } +} diff --git a/packages/stream_feeds/lib/src/state_layer/feed_ws_handler.dart b/packages/stream_feeds/lib/src/state_layer/feed_ws_handler.dart new file mode 100644 index 00000000..7e48b23b --- /dev/null +++ b/packages/stream_feeds/lib/src/state_layer/feed_ws_handler.dart @@ -0,0 +1,44 @@ +import 'dart:async'; + +import '../../stream_feeds.dart'; +import '../generated/api/api.g.dart'; +import '../repositories/feeds_data_mappers.dart'; +import '../ws/feeds_ws_event.dart'; +import 'feed_state.dart'; + +class FeedWsHandler { + FeedWsHandler({ + required this.client, + required this.stateNotifier, + }) { + _feedsEventsSubscription = client.feedsEvents.listen(_onEvent); + } + + String get currentUserId => client.user.id; + + void _onEvent(FeedsWsEvent event) { + switch (event.event) { + case final WSClientEventActivityReactionAddedEvent wsEvent: + stateNotifier.onReactionAdded( + wsEvent.activityReactionAddedEvent.reaction.toModel(), + ); + break; + case final WSClientEventActivityReactionDeletedEvent wsEvent: + stateNotifier.onReactionRemoved( + wsEvent.activityReactionDeletedEvent.reaction.toModel(), + ); + break; + default: + break; + } + } + + late final StreamSubscription _feedsEventsSubscription; + + void dispose() { + _feedsEventsSubscription.cancel(); + } + + final FeedsClient client; + final FeedStateNotifier stateNotifier; +} diff --git a/packages/stream_feeds/lib/src/utils/endpoint_config.dart b/packages/stream_feeds/lib/src/utils/endpoint_config.dart new file mode 100644 index 00000000..96d6da4d --- /dev/null +++ b/packages/stream_feeds/lib/src/utils/endpoint_config.dart @@ -0,0 +1,25 @@ +enum EndpointConfig { + localhost( + hostname: 'http://localhost:3030', + wsEndpoint: 'ws://localhost:8800/api/v2/connect', + ), + staging( + hostname: 'https://chat-edge-frankfurt-ce1.stream-io-api.com', + wsEndpoint: + 'wss://chat-edge-frankfurt-ce1.stream-io-api.com/api/v2/connect', + ), + production( + hostname: 'https://feeds.stream-io-api.com', + wsEndpoint: 'wss://feeds.stream-io-api.com/api/v2/connect', + ); + + final String hostname; + final String wsEndpoint; + final String baseFeedsUrl; + + const EndpointConfig({ + required this.hostname, + required this.wsEndpoint, + String? baseFeedsUrl, + }) : baseFeedsUrl = baseFeedsUrl ?? hostname; +} diff --git a/packages/stream_feeds/lib/src/utils/list_extensions.dart b/packages/stream_feeds/lib/src/utils/list_extensions.dart new file mode 100644 index 00000000..2d8272af --- /dev/null +++ b/packages/stream_feeds/lib/src/utils/list_extensions.dart @@ -0,0 +1,34 @@ +import 'package:collection/collection.dart'; +import '../models.dart'; + +extension ListExtensions on List { + List? updateFirstElement(bool Function(T) where, T Function(T) update) { + final list = List.from(this); + final index = list.indexWhere(where); + if (index == -1) return this; + + list[index] = update(list[index]); + return List.unmodifiable(list); + } +} + +extension IdentifiableListExtensions on List { + List insertById(T element, {bool createNewList = true}) { + final list = createNewList ? List.from(this) : this; + + final index = indexWhere((e) => e.id == element.id); + if (index == -1) { + add(element); + } else { + this[index] = element; + } + + return createNewList ? List.unmodifiable(list) : list; + } + + List removeById(T element, {bool createNewList = true}) { + final list = createNewList ? List.from(this) : this; + list.removeWhere((e) => e.id == element.id); + return createNewList ? List.unmodifiable(list) : list; + } +} diff --git a/packages/stream_feeds/lib/src/ws/feeds_ws_event.dart b/packages/stream_feeds/lib/src/ws/feeds_ws_event.dart new file mode 100644 index 00000000..241511b7 --- /dev/null +++ b/packages/stream_feeds/lib/src/ws/feeds_ws_event.dart @@ -0,0 +1,45 @@ +// ignore_for_file: prefer_single_quotes + +import 'dart:convert'; + +import 'package:stream_core/stream_core.dart' as core; + +import '../generated/api/api.g.dart' as api; + +class FeedsWsEvent extends core.WsEvent { + const FeedsWsEvent(this.event); + + final api.WSClientEvent? event; + + static core.WsEvent fromEventObject(Object message) { + try { + final json = jsonDecode(message.toString()) as Map; + final type = json['type']; + // TODO move generic connection events to core library. + switch (type) { + case "connection.ok": + return core.HealthCheckPongEvent( + healthCheckInfo: core.HealthCheckInfo( + connectionId: json['connection_id'], + ), + ); + case 'connection.error': + return core.WsErrorEvent(error: json['error'], message: message); + default: + final event = api.WSClientEvent.fromJson(json); + + if (event is api.WSClientEventHealthCheckEvent) { + return core.HealthCheckPongEvent( + healthCheckInfo: core.HealthCheckInfo( + connectionId: event.healthCheckEvent.connectionId, + ), + ); + } + print(type); + return FeedsWsEvent(event); + } + } catch (e) { + return core.WsErrorEvent(error: e, message: message); + } + } +} diff --git a/packages/stream_feeds/lib/stream_feeds.dart b/packages/stream_feeds/lib/stream_feeds.dart index 298576d8..0058bdc7 100644 --- a/packages/stream_feeds/lib/stream_feeds.dart +++ b/packages/stream_feeds/lib/stream_feeds.dart @@ -1,5 +1,3 @@ -/// A Calculator. -class Calculator { - /// Returns [value] plus 1. - int addOne(int value) => value + 1; -} +export 'src/feeds_client.dart'; +export 'src/models.dart'; +export 'src/state_layer.dart'; diff --git a/packages/stream_feeds/pubspec.yaml b/packages/stream_feeds/pubspec.yaml index 411daed1..32e72f50 100644 --- a/packages/stream_feeds/pubspec.yaml +++ b/packages/stream_feeds/pubspec.yaml @@ -9,17 +9,18 @@ environment: flutter: ">=3.27.4" dependencies: + equatable: ^2.0.5 collection: ^1.18.0 flutter: sdk: flutter http: ^1.1.0 intl: ">=0.18.1 <=0.21.0" meta: ^1.9.1 - # stream_core: - # path: ../../../stream-core-flutter/packages/stream_core + rxdart: ^0.28.0 + state_notifier: ^1.0.0 + stream_core: + path: ../../../stream-core-flutter/packages/stream_core + uuid: ^4.5.1 dev_dependencies: - flutter_test: - sdk: flutter - -flutter: \ No newline at end of file + test: ^1.26.3 \ No newline at end of file diff --git a/sample_app/ios/Flutter/Debug.xcconfig b/sample_app/ios/Flutter/Debug.xcconfig index 592ceee8..ec97fc6f 100644 --- a/sample_app/ios/Flutter/Debug.xcconfig +++ b/sample_app/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/sample_app/ios/Flutter/Release.xcconfig b/sample_app/ios/Flutter/Release.xcconfig index 592ceee8..c4855bfe 100644 --- a/sample_app/ios/Flutter/Release.xcconfig +++ b/sample_app/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/sample_app/ios/Podfile b/sample_app/ios/Podfile new file mode 100644 index 00000000..e549ee22 --- /dev/null +++ b/sample_app/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/sample_app/lib/home_screen/home_screen.dart b/sample_app/lib/home_screen/home_screen.dart new file mode 100644 index 00000000..720b26b8 --- /dev/null +++ b/sample_app/lib/home_screen/home_screen.dart @@ -0,0 +1,150 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_state_notifier/flutter_state_notifier.dart'; +import 'package:get_it/get_it.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:stream_feeds/stream_feeds.dart'; + +import '../navigation/app_state.dart'; + +@RoutePage() +class HomeScreen extends StatefulWidget { + const HomeScreen({super.key}); + + @override + State createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State { + late final AppStateProvider appStateProvider = + GetIt.instance.get(); + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Home'), + actions: [ + IconButton( + icon: const Icon(Icons.logout), + onPressed: () { + appStateProvider.clearUserId(); + }, + ), + ], + ), + body: ValueListenableBuilder( + valueListenable: appStateProvider, + builder: (context, appState, child) => switch (appState) { + LoggedInState() => _FeedList(feedsClient: appState.feedsClient), + _ => const Center( + child: Text('Please login, you should not be here.'), + ) + }, + ), + ); + } +} + +class _FeedList extends StatefulWidget { + _FeedList({super.key, required this.feedsClient}); + final FeedsClient feedsClient; + + @override + State<_FeedList> createState() => _FeedListState(); +} + +class _FeedListState extends State<_FeedList> { + late Feed feed; + + @override + void initState() { + super.initState(); + _createFeed(); + } + + @override + void didUpdateWidget(covariant _FeedList oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.feedsClient.user.id != widget.feedsClient.user.id) { + _disposeFeed(); + _createFeed(); + } + } + + @override + void dispose() { + _disposeFeed(); + super.dispose(); + } + + void _createFeed() { + feed = widget.feedsClient.feed( + query: FeedQuery( + group: 'user', + id: widget.feedsClient.user.id, + ), + )..getOrCreate(); + } + + void _disposeFeed() { + //todo stop listening to the feed + } + + @override + Widget build(BuildContext context) { + return StateNotifierBuilder( + stateNotifier: feed.stateNotifier, + builder: (context, state, child) => RefreshIndicator( + onRefresh: () => feed.getOrCreate(), + child: ScrollConfiguration( + behavior: ScrollConfiguration.of(context).copyWith( + dragDevices: { + PointerDeviceKind.touch, + PointerDeviceKind.mouse, + }, + ), + child: ListView.builder( + itemCount: state.activities.length, + itemBuilder: (context, index) { + final activity = state.activities[index]; + + return ListTile( + leading: CircleAvatar( + backgroundImage: switch (activity.user.imageUrl) { + final String imageUrl => + CachedNetworkImageProvider(imageUrl), + _ => null, + }, + child: switch (activity.user.imageUrl) { + String _ => null, + _ => Text( + activity.user.name?.substring(0, 1).toUpperCase() ?? + '?', + ), + }, + ), + title: Text(activity.user.name ?? 'unknown user'), + subtitle: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(activity.text ?? 'empty message'), + Text('${activity.reactionCount} reactions'), + ], + ), + ); + }, + ), + ), + ), + ); + } +} diff --git a/sample_app/lib/login_screen/demo_app_config.dart b/sample_app/lib/login_screen/demo_app_config.dart new file mode 100644 index 00000000..7523bb7b --- /dev/null +++ b/sample_app/lib/login_screen/demo_app_config.dart @@ -0,0 +1,90 @@ +// +// Copyright © 2025 Stream.io Inc. All rights reserved. +// + +class DemoAppConfig { + const DemoAppConfig({required this.apiKey, required this.tokenForUser}); + + final String apiKey; + final String Function(String) tokenForUser; + + static const current = production; + + static const staging = DemoAppConfig( + apiKey: 'pd67s34fzpgw', + tokenForUser: _stagingTokenForUser, + ); + + static const localhost = DemoAppConfig( + apiKey: '892s22ypvt6m', + tokenForUser: _localhostTokenForUser, + ); + + static const production = DemoAppConfig( + apiKey: 'fa5xpkvxrdw4', + tokenForUser: _productionTokenForUser, + ); + + static String _stagingTokenForUser(String userId) { + switch (userId) { + case 'luke_skywalker': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibHVrZV9za3l3YWxrZXIifQ.hZ59SWtp_zLKVV9ShkqkTsCGi_jdPHly7XNCf5T_Ev0'; + case 'martin': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibWFydGluIn0.ZDox0RWqhKhhK2lrbUVJvf8Zd9PVA_NX5dGMVC6mcSg'; + case 'tommaso': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidG9tbWFzbyJ9.DNR3Gnkj1nrwIbLkfgWLzf9Rgx23Hj4qt5jItHKH8hU'; + case 'thierry': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidGhpZXJyeSJ9.XJEWIVxe_-2E9XEFQo01nW7UgYijx5LzyAkbY34o0Pw'; + case 'marcelo': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibWFyY2VsbyJ9.ee6WC94jyfQbafJr9FLEc_ZgKDjYNxvz6e_z-phP8UY'; + case 'kanat': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoia2FuYXQifQ.ma7L8U6an92ECUHaD6mxesZvKX4TjfZndJ8uKGR2ic4'; + case 'toomas': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidG9vbWFzIn0.PBdUgu0w73UBa29ckt5AMMfmCK0VsOf0f0_aCgum3lc'; + default: + return ''; + } + } + + static String _localhostTokenForUser(String userId) { + switch (userId) { + case 'luke_skywalker': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibHVrZV9za3l3YWxrZXIifQ.hZ59SWtp_zLKVV9ShkqkTsCGi_jdPHly7XNCf5T_Ev0'; + case 'martin': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibWFydGluIn0.-8mL49OqMdlvzXR_1IgYboVXXuXFc04r0EvYgko-X8I'; + case 'tommaso': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidG9tbWFzbyJ9.XYEEVyW_j_K9Nzh4yaRmlV8Dd2APrGi_KieLcmNhQgs'; + case 'thierry': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidGhpZXJyeSJ9.RKhJvQYxpu0jk-6ijt4Pkp4wDexLhTUdBDB56qodQ6Q'; + case 'marcelo': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibWFyY2VsbyJ9.lM_lJBxac1KHaEaDWYLP7Sr4r1u3xsry3CclTeihrYE'; + case 'kanat': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoia2FuYXQifQ.P7rVVPHX4d21HpP6nvEQXiTKlJdFh7_YYZUP3rZB_oA'; + case 'toomas': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidG9vbWFzIn0.c0YPLh9Q8l_mvgaTVEh9_w_qJW3m_C_dXL2DonlH6n0'; + default: + return ''; + } + } + + static String _productionTokenForUser(String userId) { + switch (userId) { + case 'luke_skywalker': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibHVrZV9za3l3YWxrZXIifQ.zuAJWZfZWPFJYYItt1QQnUl2IlTq6PcBPStrcD_U91A'; + case 'martin': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibWFydGluIn0.w4IhPDZXHTnY_JTZqT5f75TpZ-Qq5gFgXHM8-mkjYjg'; + case 'tommaso': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidG9tbWFzbyJ9.3sl5XZMbSVvBfJhoT6islSfNMlPU46uZeKr_UCFESWY'; + case 'thierry': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidGhpZXJyeSJ9.2vI4zX2WB6zlSZQdAwLqwRo8RRTPMDKLQF3lNJTiIG8'; + case 'marcelo': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoibWFyY2VsbyJ9.JGUi40Ew7SyrGab1AAr0pIXPKfqVMTiyPJPCs8EFaVY'; + case 'kanat': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoia2FuYXQifQ.J7N5-RSAStR8UF3g7ce-fSSgBSLTszr5St3MwFBujfs'; + case 'toomas': + return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidG9vbWFzIn0.JOSpmeEbwIdVu1SoT7y4dZknkbQE_fEDQn5mac9yzU0'; + default: + return ''; + } + } +} diff --git a/sample_app/lib/login_screen/login_screen.dart b/sample_app/lib/login_screen/login_screen.dart new file mode 100644 index 00000000..a78c0a84 --- /dev/null +++ b/sample_app/lib/login_screen/login_screen.dart @@ -0,0 +1,86 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; + +import '../navigation/app_state.dart'; +import 'user_credentials.dart'; + +@RoutePage() +class LoginScreen extends StatefulWidget { + const LoginScreen({ + super.key, + }); + + @override + State createState() => _LoginScreenState(); +} + +class _LoginScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Welcome to Stream Feeds')), + body: ListView( + children: [ + const Text( + 'Select a user to try the Flutter SDK', + textAlign: TextAlign.center, + ), + ...UserCredentials.builtIn + .map( + (credentials) => [ + _LoginUserListItem( + credentials, + onTap: () { + GetIt.instance + .get() + .setUser(credentials); + }, + ), + const Divider(), + ], + ) + .expand((e) => e), + ], + ), + ); + } +} + +class _LoginUserListItem extends StatelessWidget { + const _LoginUserListItem(this.credentials, {required this.onTap}); + + final UserCredentials credentials; + final GestureTapCallback onTap; + + @override + Widget build(BuildContext context) { + return ListTile( + onTap: onTap, + leading: CircleAvatar( + backgroundImage: switch (credentials.user.imageUrl) { + final String imageUrl => CachedNetworkImageProvider(imageUrl), + _ => null, + }, + child: switch (credentials.user.imageUrl) { + String _ => null, + _ => _LoginUserListItemPlaceholder(credentials), + }, + ), + title: Text(credentials.user.name), + subtitle: const Text('Stream test account'), + trailing: const Icon(Icons.arrow_forward), + ); + } +} + +class _LoginUserListItemPlaceholder extends StatelessWidget { + const _LoginUserListItemPlaceholder(this.credentials); + final UserCredentials credentials; + + @override + Widget build(BuildContext context) { + return Text(credentials.user.name.substring(0, 1).toUpperCase()); + } +} diff --git a/sample_app/lib/login_screen/user_credentials.dart b/sample_app/lib/login_screen/user_credentials.dart new file mode 100644 index 00000000..cda22156 --- /dev/null +++ b/sample_app/lib/login_screen/user_credentials.dart @@ -0,0 +1,94 @@ +import 'package:stream_feeds/stream_feeds.dart'; +import 'demo_app_config.dart'; + +class UserCredentials { + final User user; + final String token; + + const UserCredentials({required this.user, required this.token}); + + // Individual user credentials + static final luke = UserCredentials( + user: const User( + id: 'luke_skywalker', + name: 'Luke Skywalker', + imageUrl: + 'https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg', + ), + token: DemoAppConfig.current.tokenForUser('luke_skywalker'), + ); + + static final martin = UserCredentials( + user: const User( + id: 'martin', + name: 'Martin', + imageUrl: + "https://getstream.io/static/2796a305dd07651fcceb4721a94f4505/802d2/martin-mitrevski.webp", + ), + token: DemoAppConfig.current.tokenForUser('martin'), + ); + + static final tommaso = UserCredentials( + user: const User( + id: 'tommaso', + name: 'Tommaso', + imageUrl: + 'https://getstream.io/static/712bb5c0bd5ed8d3fa6e5842f6cfbeed/c59de/tommaso.webp', + ), + token: DemoAppConfig.current.tokenForUser('tommaso'), + ); + + static final thierry = UserCredentials( + user: const User( + id: 'thierry', + name: 'Thierry', + imageUrl: + 'https://getstream.io/static/237f45f28690696ad8fff92726f45106/c59de/thierry.webp', + ), + token: DemoAppConfig.current.tokenForUser('thierry'), + ); + + static final marcelo = UserCredentials( + user: const User( + id: 'marcelo', + name: 'Marcelo', + imageUrl: + 'https://getstream.io/static/aaf5fb17dcfd0a3dd885f62bd21b325a/802d2/marcelo-pires.webp', + ), + token: DemoAppConfig.current.tokenForUser('marcelo'), + ); + + static final kanat = UserCredentials( + user: const User(id: 'kanat', name: 'Kanat'), + token: DemoAppConfig.current.tokenForUser('kanat'), + ); + + static final toomas = UserCredentials( + user: const User(id: 'toomas', name: 'Toomas'), + token: DemoAppConfig.current.tokenForUser('toomas'), + ); + + // Built-in list sorted by name + static List get builtIn => [ + luke, + martin, + tommaso, + thierry, + marcelo, + kanat, + toomas, + ]..sort( + (a, b) => + a.user.name.toLowerCase().compareTo(b.user.name.toLowerCase()), + ); + + // Helper method to get feed ID + String get fid => 'user:${user.id}'; + + // Helper method to get credentials by ID + static UserCredentials credentialsFor(String id) { + final found = + builtIn.where((credentials) => credentials.user.id == id).firstOrNull; + return found ?? tommaso; + } +} diff --git a/sample_app/lib/main.dart b/sample_app/lib/main.dart index deabd952..a918e471 100644 --- a/sample_app/lib/main.dart +++ b/sample_app/lib/main.dart @@ -1,65 +1,30 @@ import 'package:flutter/material.dart'; - -void main() { - runApp(const MyApp()); +import 'package:get_it/get_it.dart'; + +import 'navigation/app_router.dart'; +import 'navigation/app_state.dart'; +import 'widgets/theme.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + final appState = AppStateProvider(); + await appState.init(); + GetIt.instance.registerSingleton(appState); + runApp(MyApp(appState: appState)); } class MyApp extends StatelessWidget { - const MyApp({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), - ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), - ); - } -} + MyApp({super.key, required this.appState}); -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, required this.title}); - final String title; - - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - int _counter = 0; - - void _incrementCounter() { - setState(() { - _counter++; - }); - } + final AppStateProvider appState; + late final AppRouter _router = AppRouter(appState: appState); @override Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).colorScheme.inversePrimary, - title: Text(widget.title), - ), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const Text('You have pushed the button this many times:'), - Text( - '$_counter', - style: Theme.of(context).textTheme.headlineMedium, - ), - ], - ), - ), - floatingActionButton: FloatingActionButton( - onPressed: _incrementCounter, - tooltip: 'Increment', - child: const Icon(Icons.add), - ), + return MaterialApp.router( + title: 'Flutter Demo', + theme: FeedsSampleThemeData.light, + routerConfig: _router.config(reevaluateListenable: appState), ); } } diff --git a/sample_app/lib/navigation/app_router.dart b/sample_app/lib/navigation/app_router.dart new file mode 100644 index 00000000..2c2daae2 --- /dev/null +++ b/sample_app/lib/navigation/app_router.dart @@ -0,0 +1,25 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/widgets.dart'; + +import '../home_screen/home_screen.dart'; +import '../login_screen/login_screen.dart'; +import 'auth_guard.dart'; +import 'app_state.dart'; + +part 'app_router.gr.dart'; + +@AutoRouterConfig(replaceInRouteName: 'Screen|Page,Route') +class AppRouter extends RootStackRouter { + AppRouter({required this.appState}); + final AppStateProvider appState; + + @override + List get routes => [ + AutoRoute( + page: HomeRoute.page, + initial: true, + guards: [AuthGuard(appState: appState)], + ), + AutoRoute(page: LoginRoute.page), + ]; +} diff --git a/sample_app/lib/navigation/app_router.gr.dart b/sample_app/lib/navigation/app_router.gr.dart new file mode 100644 index 00000000..fb57120d --- /dev/null +++ b/sample_app/lib/navigation/app_router.gr.dart @@ -0,0 +1,43 @@ +// dart format width=80 +// GENERATED CODE - DO NOT MODIFY BY HAND + +// ************************************************************************** +// AutoRouterGenerator +// ************************************************************************** + +// ignore_for_file: type=lint +// coverage:ignore-file + +part of 'app_router.dart'; + +/// generated route for +/// [HomeScreen] +class HomeRoute extends PageRouteInfo { + const HomeRoute({List? children}) + : super(HomeRoute.name, initialChildren: children); + + static const String name = 'HomeRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + return const HomeScreen(); + }, + ); +} + +/// generated route for +/// [LoginScreen] +class LoginRoute extends PageRouteInfo { + const LoginRoute({List? children}) + : super(LoginRoute.name, initialChildren: children); + + static const String name = 'LoginRoute'; + + static PageInfo page = PageInfo( + name, + builder: (data) { + return const LoginScreen(); + }, + ); +} diff --git a/sample_app/lib/navigation/app_state.dart b/sample_app/lib/navigation/app_state.dart new file mode 100644 index 00000000..15ba9bdc --- /dev/null +++ b/sample_app/lib/navigation/app_state.dart @@ -0,0 +1,69 @@ +import 'package:flutter/widgets.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:stream_feeds/stream_feeds.dart'; + +import '../login_screen/demo_app_config.dart'; +import '../login_screen/user_credentials.dart'; + +class AppStateProvider extends ValueNotifier { + AppStateProvider() : super(InitialState()); + + late final SharedPreferences _prefs; + + String? get userId { + if (value is LoggedInState) { + return (value as LoggedInState).feedsClient.user.id; + } + return null; + } + + bool get isLoggedIn => value is! LoggedOutState; + + Future init() async { + _prefs = await SharedPreferences.getInstance(); + final userId = _prefs.getString('user_id'); + if (userId != null) { + final credentials = UserCredentials.credentialsFor(userId); + await setUser(credentials); + } else { + value = LoggedOutState(); + } + } + + Future setUser(UserCredentials userCredentials) async { + await _prefs.setString('user_id', userCredentials.user.id); + value = LoadingState(); + final client = FeedsClient( + apiKey: DemoAppConfig.current.apiKey, + user: userCredentials.user, + userToken: userCredentials.token, + ); + await client.connect(); + + value = LoggedInState( + feedsClient: client, + ); + } + + void clearUserId() { + _prefs.remove('user_id'); + if (value is LoggedInState) { + (value as LoggedInState).feedsClient.dispose(); + } + value = LoggedOutState(); + } +} + +abstract class AppState {} + +class InitialState extends AppState {} + +class LoggedOutState extends AppState {} + +class LoadingState extends AppState {} + +class LoggedInState extends AppState { + LoggedInState({required this.feedsClient}); + + final FeedsClient feedsClient; +} diff --git a/sample_app/lib/navigation/auth_guard.dart b/sample_app/lib/navigation/auth_guard.dart new file mode 100644 index 00000000..9b69d557 --- /dev/null +++ b/sample_app/lib/navigation/auth_guard.dart @@ -0,0 +1,25 @@ +import 'package:auto_route/auto_route.dart'; + +import 'app_router.dart'; +import 'app_state.dart'; + +class AuthGuard extends AutoRouteGuard { + AuthGuard({required this.appState}); + + final AppStateProvider appState; + + @override + void onNavigation(NavigationResolver resolver, StackRouter router) { + if (appState.isLoggedIn) { + // if user is authenticated we continue + resolver.next(); + } else { + // we redirect the user to our login page + // tip: use resolver.redirectUntil to have the redirected route + // automatically removed from the stack when the resolver is completed + resolver.redirectUntil( + const LoginRoute(), + ); + } + } +} diff --git a/sample_app/lib/widgets/theme.dart b/sample_app/lib/widgets/theme.dart new file mode 100644 index 00000000..00b444c6 --- /dev/null +++ b/sample_app/lib/widgets/theme.dart @@ -0,0 +1,15 @@ +// ignore_for_file: avoid_classes_with_only_static_members + +import 'package:flutter/material.dart'; + +class FeedsSampleThemeData { + static final light = ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.lightBlue), + dividerTheme: DividerThemeData( + color: Colors.grey.shade300, + ), + listTileTheme: ListTileThemeData( + subtitleTextStyle: TextStyle(color: Colors.grey.shade600), + ), + ); +} diff --git a/sample_app/macos/Flutter/Flutter-Debug.xcconfig b/sample_app/macos/Flutter/Flutter-Debug.xcconfig index c2efd0b6..4b81f9b2 100644 --- a/sample_app/macos/Flutter/Flutter-Debug.xcconfig +++ b/sample_app/macos/Flutter/Flutter-Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/sample_app/macos/Flutter/Flutter-Release.xcconfig b/sample_app/macos/Flutter/Flutter-Release.xcconfig index c2efd0b6..5caa9d15 100644 --- a/sample_app/macos/Flutter/Flutter-Release.xcconfig +++ b/sample_app/macos/Flutter/Flutter-Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/sample_app/macos/Podfile b/sample_app/macos/Podfile new file mode 100644 index 00000000..29c8eb32 --- /dev/null +++ b/sample_app/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.14' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/sample_app/macos/Runner.xcodeproj/project.pbxproj b/sample_app/macos/Runner.xcodeproj/project.pbxproj index 98acebd7..31e8496d 100644 --- a/sample_app/macos/Runner.xcodeproj/project.pbxproj +++ b/sample_app/macos/Runner.xcodeproj/project.pbxproj @@ -27,6 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 3AF709FB02A4FACAEC9B2A10 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40D0D70AC64EEFC130CC7C9F /* Pods_Runner.framework */; }; + D92615935A635EF2456F7517 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17B699CDFF6F0AC45330C5FC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -60,11 +62,15 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0987C84069883B352486E3A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 11CECB9A2B98D3CB88839138 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 17B699CDFF6F0AC45330C5FC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1BC639D6B80663FB7B309F75 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "sample.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10ED2044A3C60003C045 /* sample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = sample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; @@ -76,8 +82,12 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 40D0D70AC64EEFC130CC7C9F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 576A8184EB6A4FD85933C786 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 5B02A2EA641E875E9CFBFD26 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + F9681DA8276A7B52C6C1CE70 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -85,6 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D92615935A635EF2456F7517 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -92,6 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3AF709FB02A4FACAEC9B2A10 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -125,6 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, + 7C78985DC94E22D42BFFF7A3 /* Pods */, ); sourceTree = ""; }; @@ -172,9 +185,25 @@ path = Runner; sourceTree = ""; }; + 7C78985DC94E22D42BFFF7A3 /* Pods */ = { + isa = PBXGroup; + children = ( + 11CECB9A2B98D3CB88839138 /* Pods-Runner.debug.xcconfig */, + 1BC639D6B80663FB7B309F75 /* Pods-Runner.release.xcconfig */, + 5B02A2EA641E875E9CFBFD26 /* Pods-Runner.profile.xcconfig */, + 0987C84069883B352486E3A6 /* Pods-RunnerTests.debug.xcconfig */, + F9681DA8276A7B52C6C1CE70 /* Pods-RunnerTests.release.xcconfig */, + 576A8184EB6A4FD85933C786 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( + 40D0D70AC64EEFC130CC7C9F /* Pods_Runner.framework */, + 17B699CDFF6F0AC45330C5FC /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -186,6 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( + 553C7D81678AC4A3F9D66BB6 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -204,11 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 70D1C8D8104FF146D2021A04 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, + F3FA38D24351163790D17838 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -329,6 +361,67 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; + 553C7D81678AC4A3F9D66BB6 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 70D1C8D8104FF146D2021A04 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + F3FA38D24351163790D17838 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -380,6 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 0987C84069883B352486E3A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -394,6 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = F9681DA8276A7B52C6C1CE70 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -408,6 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 576A8184EB6A4FD85933C786 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/sample_app/macos/Runner.xcworkspace/contents.xcworkspacedata b/sample_app/macos/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16..21a3cc14 100644 --- a/sample_app/macos/Runner.xcworkspace/contents.xcworkspacedata +++ b/sample_app/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + diff --git a/sample_app/macos/Runner/DebugProfile.entitlements b/sample_app/macos/Runner/DebugProfile.entitlements index dddb8a30..c946719a 100644 --- a/sample_app/macos/Runner/DebugProfile.entitlements +++ b/sample_app/macos/Runner/DebugProfile.entitlements @@ -8,5 +8,7 @@ com.apple.security.network.server + com.apple.security.network.client + diff --git a/sample_app/macos/Runner/Release.entitlements b/sample_app/macos/Runner/Release.entitlements index 852fa1a4..48271acc 100644 --- a/sample_app/macos/Runner/Release.entitlements +++ b/sample_app/macos/Runner/Release.entitlements @@ -4,5 +4,7 @@ com.apple.security.app-sandbox + com.apple.security.network.client + diff --git a/sample_app/pubspec.yaml b/sample_app/pubspec.yaml index 8f7c70ab..0a7e7b82 100644 --- a/sample_app/pubspec.yaml +++ b/sample_app/pubspec.yaml @@ -5,14 +5,22 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.7.2 - + sdk: ^3.6.2 dependencies: + auto_route: ^10.1.0+1 + cached_network_image: ^3.4.1 flutter: sdk: flutter + flutter_state_notifier: ^1.0.0 + get_it: ^8.0.3 + shared_preferences: ^2.5.3 + stream_feeds: + path: ../packages/stream_feeds dev_dependencies: + auto_route_generator: ^10.1.0 + build_runner: ^2.5.4 flutter_test: sdk: flutter diff --git a/scripts/generate.sh b/scripts/generate.sh index 33056b01..5b03a7f4 100755 --- a/scripts/generate.sh +++ b/scripts/generate.sh @@ -1,23 +1,24 @@ #!/usr/bin/env bash -SOURCE_PATH=../chat +CHAT_DIR=../chat +OUTPUT_DIR_FEEDS=../stream-feeds-flutter/packages/stream_feeds/lib/src/generated/api/ -if [ ! -d $SOURCE_PATH ] +if [ ! -d $CHAT_DIR ] then - echo "cannot find chat path on the parent folder (${SOURCE_PATH}), do you have a copy of the API source?"; + echo "cannot find chat path on the parent folder (${CHAT_DIR}), do you have a copy of the API source?"; exit 1; fi set -ex # remove old generated code -rm -rf ./packages/stream_feeds/lib/generated/api/model/* +rm -rf ./packages/stream_feeds/lib/src/generated/api/model/* # cd in API repo, generate new spec and then generate code from it ( - cd $SOURCE_PATH && - go run ./cmd/chat-manager openapi generate-spec -products feeds -version v1 -clientside -output releases/feeds-openapi-clientside -renamed-models ../stream-feeds-flutter/scripts/renamed-models.json && - go run ./cmd/chat-manager openapi generate-client --language dart --spec ./releases/feeds-openapi-clientside.yaml --output ../stream-feeds-flutter/packages/stream_feeds/lib/generated/api/ + cd $CHAT_DIR && + go run ./cmd/chat-manager openapi generate-spec -products feeds -version v2 -clientside -output releases/v2/feeds-clientside-api -renamed-models ../stream-feeds-flutter/scripts/renamed-models.json && + go run ./cmd/chat-manager openapi generate-client --language dart --spec ./releases/v2/feeds-clientside-api.yaml --output ../stream-feeds-flutter/packages/stream_feeds/lib/src/generated/api/ ) melos format diff --git a/scripts/renamed-models.json b/scripts/renamed-models.json index 4367a83f..e4b63603 100644 --- a/scripts/renamed-models.json +++ b/scripts/renamed-models.json @@ -1,3 +1,3 @@ { - + "Response": "DurationResponse" } \ No newline at end of file