Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }