Merge branch 'krille/calc-displayname-without-local-part' into 'master'
Implement calcDisplayname without local part See merge request famedly/famedlysdk!373
This commit is contained in:
commit
4582574e5b
|
@ -1134,8 +1134,13 @@ class Room {
|
|||
final Set<String> _requestingMatrixIds = {};
|
||||
|
||||
/// Requests a missing [User] for this room. Important for clients using
|
||||
/// lazy loading.
|
||||
Future<User> requestUser(String mxID, {bool ignoreErrors = false}) async {
|
||||
/// lazy loading. If the user can't be found this method tries to fetch
|
||||
/// the displayname and avatar from the profile if [requestProfile] is true.
|
||||
Future<User> requestUser(
|
||||
String mxID, {
|
||||
bool ignoreErrors = false,
|
||||
bool requestProfile = true,
|
||||
}) async {
|
||||
if (getState(EventTypes.RoomMember, mxID) != null) {
|
||||
return getState(EventTypes.RoomMember, mxID).asUser;
|
||||
}
|
||||
|
@ -1148,8 +1153,22 @@ class Room {
|
|||
mxID,
|
||||
);
|
||||
} catch (exception) {
|
||||
_requestingMatrixIds.remove(mxID);
|
||||
if (!ignoreErrors) rethrow;
|
||||
if (!ignoreErrors) {
|
||||
_requestingMatrixIds.remove(mxID);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
if (resp == null && requestProfile) {
|
||||
try {
|
||||
final profile = await client.api.requestProfile(mxID);
|
||||
resp = {
|
||||
'displayname': profile.displayname,
|
||||
'avatar_url': profile.avatarUrl,
|
||||
};
|
||||
} catch (exception) {
|
||||
_requestingMatrixIds.remove(mxID);
|
||||
if (!ignoreErrors) rethrow;
|
||||
}
|
||||
}
|
||||
if (resp == null) {
|
||||
return null;
|
||||
|
|
|
@ -97,11 +97,14 @@ class User extends Event {
|
|||
/// has no displayname. If [formatLocalpart] is true, then the localpart will
|
||||
/// be formatted in the way, that all "_" characters are becomming white spaces and
|
||||
/// the first character of each word becomes uppercase.
|
||||
String calcDisplayname({bool formatLocalpart = true}) {
|
||||
/// If [mxidLocalPartFallback] is true, then the local part of the mxid will be shown
|
||||
/// if there is no other displayname available. If not then this will return "Unknown user".
|
||||
String calcDisplayname(
|
||||
{bool formatLocalpart = true, bool mxidLocalPartFallback = true}) {
|
||||
if (displayName?.isNotEmpty ?? false) {
|
||||
return displayName;
|
||||
}
|
||||
if (stateKey != null) {
|
||||
if (stateKey != null && mxidLocalPartFallback) {
|
||||
if (!formatLocalpart) {
|
||||
return stateKey.localpart;
|
||||
}
|
||||
|
@ -113,7 +116,7 @@ class User extends Event {
|
|||
}
|
||||
return words.join(' ');
|
||||
}
|
||||
return 'Unknown User';
|
||||
return 'Unknown user';
|
||||
}
|
||||
|
||||
/// Call the Matrix API to kick this user from this room.
|
||||
|
|
|
@ -81,6 +81,8 @@ void main() {
|
|||
expect(user2.calcDisplayname(), 'SuperAlice');
|
||||
expect(user3.calcDisplayname(), 'Alice Mep');
|
||||
expect(user3.calcDisplayname(formatLocalpart: false), 'alice_mep');
|
||||
expect(
|
||||
user3.calcDisplayname(mxidLocalPartFallback: false), 'Unknown user');
|
||||
});
|
||||
test('kick', () async {
|
||||
await client.checkServer('https://fakeserver.notexisting');
|
||||
|
|
Loading…
Reference in a new issue