loadFavorites method
Future<List<NsgDataItem> >
loadFavorites(
- NsgUserSettingsController<
NsgDataItem> userSetiingsController, - List<
String> ids
Implementation
Future<List<NsgDataItem>> loadFavorites(NsgUserSettingsController userSetiingsController, List<String> ids) async {
var cmp = NsgCompare();
var dataItem = NsgDataClient.client.getNewObject(dataType);
var answerList = <NsgDataItem>[];
var listToRequest = <String>[];
//Проверяем нет ли избранного в items чтобы не делать лишний запрос
for (var e in ids) {
if (e.isEmpty) continue;
var item = dataItemList.firstWhereOrNull((item) => item.id == e);
if (item == null) {
listToRequest.add(e);
} else {
answerList.add(item);
}
}
//Дочитываем недостающие элементы
if (listToRequest.isNotEmpty) {
cmp.add(name: dataItem.primaryKeyField, value: listToRequest, comparisonOperator: NsgComparisonOperator.inList);
var params = NsgDataRequestParams(compare: cmp, referenceList: referenceList);
var request = NsgDataRequest<NsgDataItem>(storageType: controllerMode.storageType, dataItemType: dataType);
answerList.addAll(await request.requestItems(filter: params));
var newIds = answerList.map((e) => e.id).join(',');
if (newIds != ids.join(',')) {
var objFavorite = userSetiingsController.getFavoriteObject(dataItem.typeName);
objFavorite.settings = newIds;
await userSettingsController!.postUserSettings(objFavorite as NsgDataItem);
}
}
return answerList;
}