Skip to content

Commit 0d6a28d

Browse files
committed
autocomplete: Exclude deactivated users from @mention Popup
Fixes #451.
1 parent 9044a9a commit 0d6a28d

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

lib/model/autocomplete.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,8 @@ class MentionAutocompleteQuery {
289289
// TODO(#236) test email too, not just name
290290
// TODO(#237) test with diacritics stripped, where appropriate
291291

292+
if (!user.isActive) return false;
293+
292294
final List<String> nameWords = cache.nameWordsForUser(user);
293295

294296
int nameWordsIndex = 0;

test/example_data.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,15 @@ User user({
6161
String? fullName,
6262
String? avatarUrl,
6363
Map<int, ProfileFieldUserData>? profileData,
64+
bool? isActive,
6465
}) {
6566
return User(
6667
userId: userId ?? _nextUserId(),
6768
deliveryEmailStaleDoNotUse: '[email protected]',
6869
email: email ?? '[email protected]', // TODO generate example emails
6970
fullName: fullName ?? 'A user', // TODO generate example names
7071
dateJoined: '2023-04-28',
71-
isActive: true,
72+
isActive: isActive ?? true,
7273
isOwner: false,
7374
isAdmin: false,
7475
isGuest: false,

test/model/autocomplete_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,5 +340,10 @@ void main() {
340340
doCheck('Name Four Full Words', eg.user(fullName: 'Full Name Four Words'), false);
341341
doCheck('F Full', eg.user(fullName: 'Full Name Four Words'), false);
342342
doCheck('Four F', eg.user(fullName: 'Full Name Four Words'), false);
343+
// User should always be excluded in case of inactive users
344+
doCheck('Full Name', eg.user(fullName: 'Full Name', isActive: false), false);
345+
doCheck('Full', eg.user(fullName: 'Full Name', isActive: false), false);
346+
// User that are already excluded will still be excluded in case of inactive users
347+
doCheck('Fully Named', eg.user(fullName: 'Full Name', isActive: false), false);
343348
});
344349
}

test/model/compose_test.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ world
9797
test('whitespace around info string', () {
9898
checkFenceWrap('''
9999
````
100-
``` javascript
100+
``` javascript
101101
// hello world
102102
```
103103
````
@@ -315,6 +315,11 @@ hello
315315
store.addUsers([user, eg.user(userId: 5), eg.user(userId: 234, fullName: user.fullName)]);
316316
check(mention(user, silent: true, users: store.users)).equals('@_**Full Name|123**');
317317
});
318+
test('`users` passed; has two users with same fullName but one of them is not active', () {
319+
final store = eg.store();
320+
store.addUsers([user, eg.user(userId: 5), eg.user(userId: 234, fullName: user.fullName, isActive: false)]);
321+
check(mention(user, silent: true, users: store.users)).equals('@_**Full Name|123**');
322+
});
318323
test('`users` passed; user has unique fullName', () {
319324
final store = eg.store();
320325
store.addUsers([user, eg.user(userId: 234, fullName: 'Another Name')]);

0 commit comments

Comments
 (0)