-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathcircle_api.dart
64 lines (54 loc) · 2.08 KB
/
circle_api.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import 'package:dio/dio.dart';
import '../vo/circle_conversation.dart';
import '../vo/circle_name.dart';
import '../vo/circle_response.dart';
import '../vo/mixin_response.dart';
import '../vo/request/circle_conversation_request.dart';
class CircleApi {
CircleApi({required this.dio});
final Dio dio;
Future<MixinResponse<List<CircleResponse>>> getCircles() =>
MixinResponse.requestList(
dio.get('/circles'),
CircleResponse.fromJson,
);
Future<MixinResponse<CircleResponse>> getCircle(String id) =>
MixinResponse.request<CircleResponse>(
dio.get('/circles/${Uri.encodeComponent(id)}'),
CircleResponse.fromJson,
);
Future<MixinResponse<CircleResponse>> createCircle(CircleName circleName) =>
MixinResponse.request<CircleResponse>(
dio.post('/circles', data: circleName),
CircleResponse.fromJson,
);
Future<MixinResponse<CircleResponse>> updateCircle(
String id, CircleName circleName) =>
MixinResponse.request<CircleResponse>(
dio.post('/circles/${Uri.encodeComponent(id)}', data: circleName),
CircleResponse.fromJson,
);
Future<MixinResponse<void>> deleteCircle(String id) =>
MixinResponse.requestVoid(
dio.post('/circles/${Uri.encodeComponent(id)}/delete'));
Future<MixinResponse<List<CircleConversation>>> updateCircleConversations(
String id,
List<CircleConversationRequest> conversationCircleRequests) =>
MixinResponse.requestList(
dio.post('/circles/${Uri.encodeComponent(id)}/conversations',
data: conversationCircleRequests),
CircleConversation.fromJson,
);
Future<MixinResponse<List<CircleConversation>>> getCircleConversations(
String id,
{int? offset,
int limit = 500}) =>
MixinResponse.requestList(
dio.get('/circles/${Uri.encodeComponent(id)}/conversations',
queryParameters: {
if (offset != null) 'offset': offset.toString(),
'limit': limit,
}),
CircleConversation.fromJson,
);
}