Line data Source code
1 : import 'package:stream_feed_dart/src/core/api/batch_api.dart'; 2 : import 'package:stream_feed_dart/src/core/models/activity.dart'; 3 : import 'package:stream_feed_dart/src/core/models/enriched_activity.dart'; 4 : import 'package:stream_feed_dart/src/core/models/feed_id.dart'; 5 : import 'package:stream_feed_dart/src/core/models/follow.dart'; 6 : import 'package:stream_feed_dart/src/core/models/foreign_id_time_pair.dart'; 7 : import 'package:stream_feed_dart/src/core/util/default.dart'; 8 : import 'package:stream_feed_dart/src/core/util/token_helper.dart'; 9 : 10 : class BatchOperationsClient { 11 1 : BatchOperationsClient(this.batch, {required this.secret}); 12 : final String secret; 13 : final BatchApi batch; 14 : 15 : /// Add one activity to many feeds 16 : /// 17 : /// It takes in parameters: 18 : /// - [activity] : the [Activity] to add 19 : /// - [feedIds] : an Iterable of feed ids [FeedId] 20 : /// 21 : /// API docs: [batch-activity-add](https://getstream.io/activity-feeds/docs/flutter-dart/add_many_activities/?language=dart#batch-activity-add) 22 0 : Future<void> addToMany(Activity activity, Iterable<FeedId> feedIds) { 23 : //TODO: why is this void vs Future<APIResponse> compared to js client 24 0 : final token = TokenHelper.buildFeedToken(secret, TokenAction.write); 25 0 : return batch.addToMany(token, activity, feedIds); 26 : } 27 : 28 : /// Follow multiple feeds with one API call 29 : /// 30 : /// It takes in parameters: 31 : /// - [follows] : The follow relations to create 32 : /// - [activityCopyLimit] : How many activities should be copied 33 : /// from the target feed 34 : /// 35 : /// API docs: [add_many_activities](https://getstream.io/activity-feeds/docs/flutter-dart/add_many_activities/?language=dart#batch-follow) 36 : /// 37 0 : Future<void> followMany( 38 : Iterable<Follow> follows, { 39 : int? activityCopyLimit, 40 : }) { 41 0 : final token = TokenHelper.buildFollowToken(secret, TokenAction.write); 42 0 : return batch.followMany( 43 : token, activityCopyLimit ?? Default.activityCopyLimit, follows); 44 : } 45 : 46 : /// Unfollow multiple feeds with one API call 47 : /// This feature is usually restricted, 48 : /// please contact support if you face an issue 49 : /// 50 : /// It takes in parameter: 51 : /// 52 : /// [unfollows]: The follow relations to remove 53 : /// 54 : /// API docs : [batch-unfollow](https://getstream.io/activity-feeds/docs/flutter-dart/add_many_activities/?language=dart#batch-unfollow) 55 : /// 56 0 : Future<void> unfollowMany( 57 : Iterable<Follow> unfollows, { 58 : // TODO: seems to be Iterable<UnFollow> unfollows here 59 : required bool keepHistory, 60 : }) { 61 0 : final token = TokenHelper.buildFollowToken(secret, TokenAction.write); 62 0 : return batch.unfollowMany( 63 : token, 64 0 : unfollows.map((e) => UnFollow.fromFollow(e, keepHistory)), 65 : ); 66 : } 67 : 68 0 : Future<Iterable<Activity>> getActivitiesById(Iterable<String> ids) { 69 0 : final token = TokenHelper.buildActivityToken(secret, TokenAction.read); 70 0 : return batch.getActivitiesById(token, ids); 71 : } 72 : 73 0 : Future<Iterable<EnrichedActivity>> getEnrichedActivitiesById( 74 : Iterable<String> ids) { 75 0 : final token = TokenHelper.buildActivityToken(secret, TokenAction.read); 76 0 : return batch.getEnrichedActivitiesById(token, ids); 77 : } 78 : 79 0 : Future<Iterable<Activity>> getActivitiesByForeignId( 80 : Iterable<ForeignIdTimePair> pairs) { 81 0 : final token = TokenHelper.buildActivityToken(secret, TokenAction.read); 82 0 : return batch.getActivitiesByForeignId(token, pairs); 83 : } 84 : 85 0 : Future<Iterable<EnrichedActivity>> getEnrichedActivitiesByForeignId( 86 : Iterable<ForeignIdTimePair> pairs) { 87 0 : final token = TokenHelper.buildActivityToken(secret, TokenAction.read); 88 0 : return batch.getEnrichedActivitiesByForeignId(token, pairs); 89 : } 90 : 91 0 : Future<void> updateActivity(Activity activity) => 92 0 : updateActivities([activity]); 93 : 94 0 : Future<void> updateActivities(Iterable<Activity> activities) { 95 0 : final token = TokenHelper.buildActivityToken(secret, TokenAction.write); 96 0 : return batch.updateActivities(token, activities); 97 : } 98 : }