Skip to content

Commit 3f8ab8c

Browse files
authored
Merge pull request #184 from GetStream/develop
2 parents d3b87a6 + c68f16f commit 3f8ab8c

File tree

267 files changed

+13927
-97
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

267 files changed

+13927
-97
lines changed

.github/workflows/pana.yaml

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,47 @@ jobs:
5353
then
5454
echo Score too low!
5555
exit 1
56-
fi
56+
fi
57+
stream_feed_flutter_core:
58+
runs-on: ubuntu-latest
59+
steps:
60+
- uses: actions/checkout@v2
61+
- uses: axel-op/dart-package-analyzer@v3
62+
id: analysis
63+
with:
64+
githubToken: ${{ secrets.GITHUB_TOKEN }}
65+
relativePath: packages/stream_feed_flutter_core
66+
- name: Check scores
67+
env:
68+
# NB: "analysis" is the id set above. Replace it with the one you used if different.
69+
TOTAL: ${{ steps.analysis.outputs.total }}
70+
TOTAL_MAX: ${{ steps.analysis.outputs.total_max }}
71+
run: |
72+
PERCENTAGE=$(( $TOTAL * 100 / $TOTAL_MAX ))
73+
if (( $PERCENTAGE < 90 ))
74+
then
75+
echo Score too low!
76+
exit 1
77+
fi
78+
# stream_feed_flutter:
79+
# runs-on: ubuntu-latest
80+
# steps:
81+
# - uses: actions/checkout@v2
82+
# - uses: axel-op/dart-package-analyzer@v3
83+
# id: analysis
84+
# with:
85+
# githubToken: ${{ secrets.GITHUB_TOKEN }}
86+
# relativePath: packages/stream_feed_flutter
87+
# - name: Check scores
88+
# env:
89+
# # NB: "analysis" is the id set above. Replace it with the one you used if different.
90+
# TOTAL: ${{ steps.analysis.outputs.total }}
91+
# TOTAL_MAX: ${{ steps.analysis.outputs.total_max }}
92+
# run: |
93+
# PERCENTAGE=$(( $TOTAL * 100 / $TOTAL_MAX ))
94+
# if (( $PERCENTAGE < 90 ))
95+
# then
96+
# echo Score too low!
97+
# exit 1
98+
# fi
99+

example/lib/activity_item.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import 'package:example/app_user.dart';
21
import 'package:flutter/foundation.dart';
32
import 'package:flutter/material.dart';
43
import 'package:stream_feed/stream_feed.dart';
4+
import 'package:stream_feed_example/app_user.dart';
55
import 'package:timeago/timeago.dart' as timeago;
66

77
//ignore: public_member_api_docs

example/lib/extension.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import 'package:example/client_provider.dart';
21
import 'package:flutter/material.dart';
32
import 'package:stream_feed/stream_feed.dart';
3+
import 'package:stream_feed_example/client_provider.dart';
44

55
//ignore: public_member_api_docs
66
extension ProviderX on BuildContext {

example/lib/home.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import 'package:example/people_screen.dart';
2-
import 'package:example/profile_screen.dart';
3-
import 'package:example/timeline_screen.dart';
41
import 'package:flutter/foundation.dart';
52
import 'package:flutter/material.dart';
63
import 'package:stream_feed/stream_feed.dart';
4+
import 'package:stream_feed_example/people_screen.dart';
5+
import 'package:stream_feed_example/profile_screen.dart';
6+
import 'package:stream_feed_example/timeline_screen.dart';
77

88
//ignore: public_member_api_docs
99
class HomeScreen extends StatefulWidget {

example/lib/main.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import 'package:example/app_user.dart';
2-
import 'package:example/client_provider.dart';
3-
import 'package:example/extension.dart';
4-
import 'package:example/home.dart';
51
import 'package:flutter/material.dart';
62
import 'package:stream_feed/stream_feed.dart';
3+
import 'package:stream_feed_example/app_user.dart';
4+
import 'package:stream_feed_example/client_provider.dart';
5+
import 'package:stream_feed_example/extension.dart';
6+
import 'package:stream_feed_example/home.dart';
77

88
//ignore_for_file: public_member_api_docs
99

example/lib/people_screen.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import 'package:example/app_user.dart';
2-
import 'package:example/extension.dart';
31
import 'package:flutter/cupertino.dart';
42
import 'package:flutter/foundation.dart';
53
import 'package:flutter/material.dart';
64
import 'package:stream_feed/stream_feed.dart';
5+
import 'package:stream_feed_example/app_user.dart';
6+
import 'package:stream_feed_example/extension.dart';
77

88
// ignore_for_file: public_member_api_docs
99

example/lib/profile_screen.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import 'package:example/activity_item.dart';
2-
import 'package:example/add_activity_dialog.dart';
3-
import 'package:example/extension.dart';
41
import 'package:flutter/foundation.dart';
52
import 'package:flutter/material.dart';
63
import 'package:stream_feed/stream_feed.dart';
4+
import 'package:stream_feed_example/activity_item.dart';
5+
import 'package:stream_feed_example/add_activity_dialog.dart';
6+
import 'package:stream_feed_example/extension.dart';
77

88
//ignore: public_member_api_docs
99
class ProfileScreen extends StatefulWidget {

example/lib/timeline_screen.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import 'package:example/activity_item.dart';
2-
import 'package:example/extension.dart';
31
import 'package:flutter/foundation.dart';
42
import 'package:flutter/material.dart';
53
import 'package:stream_feed/stream_feed.dart';
4+
import 'package:stream_feed_example/activity_item.dart';
5+
import 'package:stream_feed_example/extension.dart';
66

77
// ignore_for_file: public_member_api_docs
88

example/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: example
1+
name: stream_feed_example
22
description: A new Flutter application.
33

44
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

packages/stream_feed/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
## 0.4.0+2: 22/12/2021
1+
## 0.4.0+3: 27/12/2021
2+
3+
- fix: call profile in setUser, so that currentUser data is not null
4+
5+
## 0.4.0+2: 22/12/2021
26

37
- fix: export image_storage_client.dart
48

packages/stream_feed/lib/src/client/stream_feed_client_impl.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ class StreamFeedClientImpl implements StreamFeedClient {
140140
Map<String, Object?>? extraData,
141141
}) async {
142142
this.userToken = userToken;
143-
return _currentUser =
144-
await this.user(user.id!).getOrCreate(extraData ?? {});
143+
final createdUser = await this.user(user.id!).getOrCreate(extraData ?? {});
144+
return _currentUser = await createdUser.profile();
145145
}
146146

147147
@override

packages/stream_feed/lib/version.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
/// Current package version
22
/// Used in [HttpClient] to build the `x-stream-client` header
3-
const String packageVersion = '0.4.0+2';
3+
const String packageVersion = '0.4.0+3';

packages/stream_feed/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: stream_feed
22
description: Stream Feed official Dart SDK. Build your own feed experience using Dart and Flutter.
3-
version: 0.4.0+2
3+
version: 0.4.0+3
44
repository: https://github.com/GetStream/stream-feed-flutter
55
issue_tracker: https://github.com/GetStream/stream-feed-flutter/issues
66
homepage: https://getstream.io/

packages/stream_feed/test/mock.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ class MockUserAPI extends Mock implements UsersAPI {}
4040

4141
class MockFeedAPI extends Mock implements FeedAPI {}
4242

43-
class MockAPI extends Mock implements StreamAPI {
44-
MockUserAPI? _mockUserAPI;
45-
46-
@override
47-
UsersAPI get users => _mockUserAPI ??= MockUserAPI();
48-
}
43+
class MockAPI extends Mock implements StreamAPI {}
4944

5045
class MultipartFileFake extends Fake implements MultipartFile {}

packages/stream_feed/test/stream_feed_client_test.dart

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,8 @@ void main() {
128128

129129
test('createUser', () async {
130130
final mockApi = MockAPI();
131+
final mockUserAPI = MockUserAPI();
132+
when(() => mockApi.users).thenReturn(mockUserAPI);
131133
final token = TokenHelper.buildFrontendToken('secret', 'userId');
132134
final client =
133135
StreamFeedClientImpl('apiKey', userToken: token, api: mockApi);
@@ -139,7 +141,7 @@ void main() {
139141
'gender': 'male',
140142
};
141143

142-
when(() => mockApi.users.create(token, userId, data)).thenAnswer(
144+
when(() => mockUserAPI.create(token, userId, data)).thenAnswer(
143145
(_) async => const User(id: userId, data: data),
144146
);
145147

@@ -148,11 +150,42 @@ void main() {
148150
expect(user.id, userId);
149151
expect(user.data, data);
150152

151-
verify(() => mockApi.users.create(token, userId, data)).called(1);
153+
verify(() => mockUserAPI.create(token, userId, data)).called(1);
154+
});
155+
156+
test('setUser', () async {
157+
final mockApi = MockAPI();
158+
const id = 'test-user';
159+
final mockUserAPI = MockUserAPI();
160+
final token = TokenHelper.buildFrontendToken('secret', id);
161+
162+
final client =
163+
StreamFeedClientImpl('apiKey', userToken: token, api: mockApi);
164+
165+
const data = {
166+
'name': 'John Doe',
167+
'occupation': 'Software Engineer',
168+
'gender': 'male',
169+
};
170+
const user = User(id: id, data: data);
171+
when(() => mockApi.users).thenReturn(mockUserAPI);
172+
when(() => mockUserAPI.create(token, id, data, getOrCreate: true))
173+
.thenAnswer((_) async => user);
174+
175+
when(() => mockUserAPI.get(token, id, withFollowCounts: true))
176+
.thenAnswer((_) async => user);
177+
await client.setUser(user, token, extraData: data);
178+
verify(() => mockUserAPI.create(token, id, data, getOrCreate: true))
179+
.called(1);
180+
181+
verify(() => mockUserAPI.get(token, id, withFollowCounts: true))
182+
.called(1);
152183
});
153184

154185
test('getUser', () async {
155186
final mockApi = MockAPI();
187+
final mockUserAPI = MockUserAPI();
188+
when(() => mockApi.users).thenReturn(mockUserAPI);
156189
final token = TokenHelper.buildFrontendToken('secret', 'userId');
157190
final client =
158191
StreamFeedClientImpl('apiKey', userToken: token, api: mockApi);
@@ -164,7 +197,7 @@ void main() {
164197
'gender': 'male',
165198
};
166199

167-
when(() => mockApi.users.get(token, userId)).thenAnswer(
200+
when(() => mockUserAPI.get(token, userId)).thenAnswer(
168201
(_) async => const User(id: userId, data: data),
169202
);
170203

@@ -173,11 +206,13 @@ void main() {
173206
expect(user.id, userId);
174207
expect(user.data, data);
175208

176-
verify(() => mockApi.users.get(token, userId)).called(1);
209+
verify(() => mockUserAPI.get(token, userId)).called(1);
177210
});
178211

179212
test('updateUser', () async {
180213
final mockApi = MockAPI();
214+
final mockUserAPI = MockUserAPI();
215+
when(() => mockApi.users).thenReturn(mockUserAPI);
181216
final token = TokenHelper.buildFrontendToken('secret', 'userId');
182217
final client =
183218
StreamFeedClientImpl('apiKey', userToken: token, api: mockApi);
@@ -189,7 +224,7 @@ void main() {
189224
'gender': 'male',
190225
};
191226

192-
when(() => mockApi.users.update(token, userId, data)).thenAnswer(
227+
when(() => mockUserAPI.update(token, userId, data)).thenAnswer(
193228
(_) async => const User(id: userId, data: data),
194229
);
195230

@@ -198,24 +233,26 @@ void main() {
198233
expect(user.id, userId);
199234
expect(user.data, data);
200235

201-
verify(() => mockApi.users.update(token, userId, data)).called(1);
236+
verify(() => mockUserAPI.update(token, userId, data)).called(1);
202237
});
203238

204-
test('updateUser', () async {
239+
test('delete', () async {
205240
final mockApi = MockAPI();
241+
final mockUserAPI = MockUserAPI();
242+
when(() => mockApi.users).thenReturn(mockUserAPI);
206243
final token = TokenHelper.buildFrontendToken('secret', 'userId');
207244
final client =
208245
StreamFeedClientImpl('apiKey', userToken: token, api: mockApi);
209246

210247
const userId = 'test-user';
211248

212-
when(() => mockApi.users.delete(token, userId)).thenAnswer(
249+
when(() => mockUserAPI.delete(token, userId)).thenAnswer(
213250
(_) async => Future.value(),
214251
);
215252

216253
await client.deleteUser(userId);
217254

218-
verify(() => mockApi.users.delete(token, userId)).called(1);
255+
verify(() => mockUserAPI.delete(token, userId)).called(1);
219256
});
220257
});
221258
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Files and directories created by pub
2+
.dart_tool/
3+
.packages
4+
5+
# Omit commiting pubspec.lock for library packages:
6+
# https://dart.dev/guides/libraries/private-files#pubspeclock
7+
pubspec.lock
8+
9+
# Conventional directory for build outputs
10+
build/
11+
12+
# Directory created by dartdoc
13+
doc/api/
14+
.flutter-plugins-dependencies
15+
16+
/coverage_report
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## 0.0.0
2+
3+
- domain parking 🏎

0 commit comments

Comments
 (0)