🐛 Fix some listing non offset bugs
⚡ Optimize user listing speed
This commit is contained in:
parent
04875eb164
commit
e8ded55055
@ -45,8 +45,8 @@ class ConfigProvider extends ChangeNotifier {
|
||||
bool newDrawerIsCollapsed = false;
|
||||
bool newDrawerIsExpanded = false;
|
||||
if (withMediaQuery) {
|
||||
newDrawerIsCollapsed = MediaQuery.of(context).size.width < 450;
|
||||
newDrawerIsExpanded = MediaQuery.of(context).size.width >= 451;
|
||||
newDrawerIsCollapsed = MediaQuery.of(context).size.width < 600;
|
||||
newDrawerIsExpanded = MediaQuery.of(context).size.width >= 601;
|
||||
} else {
|
||||
final rpb = ResponsiveBreakpoints.of(context);
|
||||
newDrawerIsCollapsed = rpb.smallerOrEqualTo(MOBILE);
|
||||
|
@ -14,9 +14,32 @@ class UserDirectoryProvider {
|
||||
final Map<int, SnAccount> _cache = {};
|
||||
|
||||
Future<List<SnAccount?>> listAccount(Iterable<dynamic> id) async {
|
||||
final out = await Future.wait(
|
||||
id.map((e) => getAccount(e)),
|
||||
);
|
||||
final out = List<SnAccount?>.generate(id.length, (e) => null);
|
||||
final plannedQuery = <int>{};
|
||||
for (var idx = 0; idx < out.length; idx++) {
|
||||
var item = id.elementAt(idx);
|
||||
if (item is String && _idCache.containsKey(item)) {
|
||||
item = _idCache[item];
|
||||
}
|
||||
if (_cache.containsKey(item)) {
|
||||
out[idx] = _cache[item];
|
||||
} else {
|
||||
plannedQuery.add(item);
|
||||
}
|
||||
}
|
||||
final resp = await _sn.client.get('/cgi/id/users', queryParameters: {'id': plannedQuery.join(',')});
|
||||
final respDecoded = resp.data.map((e) => SnAccount.fromJson(e)).cast<SnAccount>().toList();
|
||||
var sideIdx = 0;
|
||||
for (var idx = 0; idx < out.length; idx++) {
|
||||
if (out[idx] != null) continue;
|
||||
if (respDecoded.length <= sideIdx) {
|
||||
break;
|
||||
}
|
||||
out[idx] = respDecoded[sideIdx];
|
||||
_cache[respDecoded[sideIdx].id] = out[idx]!;
|
||||
_idCache[respDecoded[sideIdx].name] = respDecoded[sideIdx].id;
|
||||
sideIdx++;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
@ -474,7 +474,7 @@ class _ChannelMemberListWidgetState extends State<_ChannelMemberListWidget> {
|
||||
final sn = context.read<SnNetworkProvider>();
|
||||
final resp = await sn.client.get('/cgi/im/channels/${widget.channel.keyPath}/members', queryParameters: {
|
||||
'take': 10,
|
||||
'offset': 0,
|
||||
'offset': _members.length,
|
||||
});
|
||||
final out = List<SnChannelMember>.from(
|
||||
resp.data['data']?.map((e) => SnChannelMember.fromJson(e)) ?? [],
|
||||
|
@ -189,7 +189,7 @@ class _RealmMemberListWidgetState extends State<_RealmMemberListWidget> {
|
||||
final sn = context.read<SnNetworkProvider>();
|
||||
final resp = await sn.client.get('/cgi/id/realms/${widget.realm!.alias}/members', queryParameters: {
|
||||
'take': 10,
|
||||
'offset': 0,
|
||||
'offset': _members.length,
|
||||
});
|
||||
|
||||
final out = List<SnRealmMember>.from(
|
||||
|
Loading…
x
Reference in New Issue
Block a user