async Task Update() { await ProfileManager.Current.GetProfileData(_friendAccountId, ProfileDownloadType.DownloadIfNotAvailable, true); if (_chat == null) { AddIndex = GetRow("Misc"); AddIndexBefore = true; AddIndex = AddHeaderRow("SelectInbox"); AddIndexBefore = false; var result = await _node.DownloadInboxRecords(_friendAccountId); if (result.Result == MessageNodeEventResultTypes.Ok) { SelectionItem <InboxNameRecordInfo> keyIndexItem = null; var list = new SelectionItemList <InboxNameRecordInfo>(); foreach (var item in result.InboxRecords) { var selectionItem = new SelectionItem <InboxNameRecordInfo>(item, null); list.Add(selectionItem); if (item.KeyIndex == _friendKeyIndex) { keyIndexItem = selectionItem; } } if (keyIndexItem != null) { list.Clear(); list.Add(keyIndexItem); } var row = AddSelectionRows(list, list[0].Key); row.SelectionChanged = InboxChanged; foreach (var button in row.Buttons) { var item = button.Tag as SelectionItem <InboxNameRecordInfo>; var inboxName = item.Key.InboxRecord?.Title; if (inboxName == null) { inboxName = Tr.Get("Common.Inbox"); } button.SetMultilineText(inboxName, Tr.Get("Common.InboxName", _friendAccountId, item.Key.KeyIndex)); button.SetDetailViewIcon(Icons.Inbox); } AddIndex = row.Buttons[row.Buttons.Count - 1]; AddIndex = AddInfoRow("SelectInboxInfo"); var f = AddFooterRow(); f.Identifier = "SelectInboxFooter"; var friend = _node.GetFriend(_friendAccountId); if (friend != null) { await InboxChanged(list[0].Key); } } else { if (result.Result == MessageNodeEventResultTypes.InvalidAccount) { AddIndex = AddInfoRow("InvalidAccount"); } else { AddIndex = AddInfoRow("DownloadFailed"); } var f = AddFooterRow(); f.Identifier = "SelectInboxFooter"; } } IsBusy = false; }