public async Task <HeleusClientResponse> ChangeSubscription(long accountId, bool subscribe) { var response = await SetSubmitAccount(_submitAccount); if (response != null) { goto end; } var fanTransaction = new FeatureRequestDataTransaction(_submitAccount.AccountId, _submitAccount.ChainId, StatusServiceInfo.FanChainIndex); fanTransaction.SetFeatureRequest(new FanRequest(subscribe ? FanRequestMode.AddFanOf : FanRequestMode.RemoveFanOf, accountId)); fanTransaction.PrivacyType = DataTransactionPrivacyType.PublicData; response = await _client.SendDataTransaction(fanTransaction, true); if (response.TransactionResult == TransactionResultTypes.Ok) { UIApp.Run(StatusApp.Current.QueryStatusNodes); } end: await UIApp.PubSub.PublishAsync(new SubscriptionEvent(response, accountId, subscribe)); return(response); }
FeatureRequestDataTransaction NewFriendTransaction(long accountId, int chainId, FriendRequestMode friendRequestMode, long friendId) { var transaction = new FeatureRequestDataTransaction(accountId, chainId, MessageServiceInfo.FriendChainIndex); var request = new FriendRequest(friendRequestMode, friendId); transaction.SetFeatureRequest(request); return(transaction); }
public async Task <HeleusClientResponse> RegisterNewList(SubmitAccount submitAccount) { var serviceNode = submitAccount?.ServiceNode; var groupId = GroupAdministrationInfo.InvalidGroupId; var result = await SetSubmitAccount(submitAccount, false); if (result != null) { goto end; } if (_groupBusy) { result = new HeleusClientResponse(HeleusClientResultTypes.Busy); goto end; } _groupBusy = true; var groupReg = new FeatureRequestDataTransaction(submitAccount.AccountId, submitAccount.ChainId, TodoServiceInfo.GroupChainIndex); groupReg.SetFeatureRequest(new GroupRegistrationRequest(GroupFlags.AdminOnlyInvitation)); result = await serviceNode.Client.SendDataTransaction(groupReg, true); if (result.TransactionResult == TransactionResultTypes.Ok) { groupId = (result.Transaction as Transaction).GetFeature <GroupAdministration>(GroupAdministration.FeatureId).NewGroupId; var todo = GetTodo(serviceNode); var todoList = todo.AddGroupId(groupId); await todo.SaveAsync(); UIApp.Run(todoList.DownloadTransactions); UpdateSubmitAccounts(); } end: if (result.ResultType != HeleusClientResultTypes.Busy) { _groupBusy = false; } await UIApp.PubSub.PublishAsync(new TodoListRegistrationEvent(result, groupId)); return(result); }