How can we have these settings configurable form the UI (Angular)?
I would like to be able to log in as a tenant admin and configure the URL and API key for the 3rd party service in the UI
I know ABP has a settings page but was not able to find the documentation for updating the UI page for new properties

Thank you, I think we can close off this ticket then.
FYI I found this: https://github.com/abpframework/abp/issues/18793
That's strange, because currently any of my DB operations will not update the DB until the application is shut down. I've tried using the [UnitOfWork] attribute, and also the autoSave = true in the .InsertAsync method
Any suggestions besides using the UnitOfWorkManager?
Or
Move
MessagingHubtoApplicationproject.public class MessageHandlingService : AbpSolution7AppService, IMessageHandlingService { private readonly IHubContext<MessagingHub> _messagingHub; public MessageHandlingService(IHubContext<MessagingHub> messagingHub) { _messagingHub = messagingHub; } public virtual async Task HandleMessage(string connectionId, string message) { Console.WriteLine(connectionId); Console.WriteLine(message); await _messagingHub.Clients.Client(connectionId).SendAsync("ReceiveMessage", message); } }
Thank you Shi Wei,
In that case I will attempt this method, so as to maintain any auditing / uow capabilities.
Just to clarify the application structure is like this MessageHub --has-a--> Service1 (does not inherit xxxAppService) --has-a--> Service2 (inherits xxxAppService)
would the method calls in Service 2 have an interceptor (uow, auditing) capabiilities? Thank you
Thank you Shi Wei,
When i don't inherit the MyApplicationAppService in my application service, it just means that:
ITransientDependency/ IScopedDependency / ISingletonDependencyCurrentUser / CurrentTenantIs there any impact on the UOW scope? All along I've not inherited MyApplicationAppService and I realized that for my DB transactions to complete, I keep needing to add
using(var uow = _unitOfWorkManager.Begin(requiresNew: true)){
...
Does that relate to inheriting MyApplicationAppService? Or is that because everything is happening in a single UOW for the websocket connection?
Thank you ShiWei,
I've sent the file.
Once application launched, go to https://localhost:44349/htmlpage.html then send a message. You will see this in your dev tools
Then, you will see the BE error console as raised above (snippet):
Method may only be called on a Type for which Type.IsGenericParameter is true. etc...
To resolve the error, check out my commented code in MessagingHub.cs. Swap out the method overload. However this would not allow us to pass a callback function.
Hi ShiWei,
I've noticed a similar error message pop up whenever I try to call this method in ICommunicationService
Task HandleMessage(string connectionId, string message, System.Func<string, string, Task> signalCallback)
I've made CommunicationService inherit MyApplicationAppService and the moment this method is called, it throws an error with the same message as shown above
In MessagingHub the error is thrown when the code at line 50 is called

the signalCallback passed into HandleMessage is being defined in MessagingHub:
public async Task SendMessage(string connectionId, string message)
{
_logger.LogInformation(">>> Sending WebRTC message to {connectionId}: {message}", connectionId, message);
await Clients.Client(connectionId).SendAsync("ReceiveWebRtcMessage", message);
}
Do you have any insights to the error message and possible resolution for it? I have some suspicion that it is something to do with Func<string, string, Task> callback function passed as a parameter
Hi,
I am aware of the local event bus. However would prefer to use the conventional EventHandler<TEventArgs> delegate to set up events as some other parts of our application has used those and we would like to ensure code consistency.
Are you able to provide any insights as to why the dependency injection was failing?
Thanks
Specifically, we want TenantId property to be available on OpenIdApplication table. We want to be able to map openIdapplication based on tenantId. We also need it to be visible on the Create / Update and View UI screens