Activities of "improwise"

  • ABP Framework version: v8.3
  • UI Type: Angular
  • Database System: EF Core (SQL Server, Oracle, MySQL, PostgreSQL, etc..) / MongoDB
  • Tiered (for MVC) or Auth Server Separated (for Angular): no

It used to be that we could only fire up ABP Suite and tell it to create an Angular application it that would be it. Now that option seems to be gone in ABP Suite and ABP Studio only seems to create an Angular application that won't even build due to several missing packages and also quite a lot of deprecated ones. Weirdly enough, creating single layer Angular application does not seem to have this problem, or at least that one you can build even though it also contains numerous packages marked as deprecated. This even if you deselect all additional modules like GDPR, chat etc.

Only using default settings in latest ABP Suite except that we selected Angular as UI and layered application and this is what we got

How are we supposed to create a new working layered Angular application in ABP Commercial 8.3?

Edit: Please note that we don't know exactly why some packages are marked as deprecated and if that is actually true, but still it won't even build when using the layered Angular template due to missing packages.

  • ABP Framework version: v8.2
  • UI Type: MAUI Blazor

When trying to build a MAUI Blazor (and probably MAUI Xamarin as well I guess) you will get build errors from OAuthSecureStorage as the AccessTokenKey property is not defined.

using Volo.Abp.Account.Pro.Public.MauiBlazor.OAuth;
using Volo.Abp.DependencyInjection;
namespace ImproWise.Koll.MauiBlazor;
[Volo.Abp.DependencyInjection.Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IOAuthSecureStorage))]
public class OAuthSecureStorage : IOAuthSecureStorage, ITransientDependency
{

 public Task SetAsync(string key, string value)
 {
#if DEBUG
 Preferences.Set(key, value);
 return Task.CompletedTask;
#else
 return SecureStorage.Default.SetAsync(key, value);
#endif
 }
 public Task\<string> GetAsync(string key)
 {
#if DEBUG
 return Task.FromResult(Preferences.Get(key, string.Empty));
#else
** return SecureStorage.Default.GetAsync(AccessTokenKey);**
#endif
 }
 public Task RemoveAsync(string key)
 {
#if DEBUG
 Preferences.Remove(key);
#else
** SecureStorage.Default.Remove(AccessTokenKey);**
#endif
 return Task.CompletedTask;
 }
}\

The only thing close to the documentation we have been able to find about this is:

https://docs.abp.io/en/commercial/latest/getting-started-maui

Which points to:

https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/storage/secure-storage?view=net-maui-8.0&tabs=android

but I don't see how that could make it work without changing the provided code.

You can make it build by doing something like

string AccessTokenKey = "1234";

but that isn't really a solution to the problem.

Is this a bug or something we should handle ourselves and if so, the documentation probably needs updating.

  • ABP Framework version: v8.2
  • UI Type: Blazor
  • Database System: EF Core (SQL Server, Oracle, MySQL, PostgreSQL, etc..) / MongoDB

In a Blazor app (but guessing it might be in all kinds of projects), when a user only has read permission to an entity, the Actions button is still displayed even though the user has no permissions to do anything. When you click it, it appears as nothing happens but in fact there is a very small empty menu that shows up (as the user has no available actions). T

This is quite confusing to the user and the Actions menu should not be displayed when it is empty. Idealy the entire column should be hidden if the current user has not permissions to any actions since it should be the same for all rows as permissions are per entity type.

  • ABP Framework version: v8.2.0
  • UI Type: MAUI BLaxor / Blazor WASM / Blazor Server

The LeptonX is good but it also feel a bit "bloated" out of the box, especially if you want to design something for a smaller screen like a MAUI Blazor app. We are now wondering how we can make it less complicated without having to start implementing our own custom version of it just for some small changes. We fully accept that if we actually want to make design changes, we might need to override the theme components, and we probably will, but ideally it should not be needed for configuration changes. If not for any other reason in order to more easily update to newer versions of ABP which might contain theme changes.

  1. How can you hide language, container width and appearance menus, both in Main Header Toolbar (General Settings) and in MobileNavBar (MobileGeneralSettings)? Looking into the files for LeptonX, there seem to be switches like" @if (HasMultipleStyles)" and "@if (HasContainerWidth)" but we have not been able where to control/change those. Unlike previous Lepton theme, even if you disable all languages but one, the language menu still seem to render in LeptonX but with only one choice available (the enabled language).

  2. How can you specify theme, container width and appearance either in code or settings (appsettings or similar) for Leptonx so you can control it but not allowing users to modify it?

  3. For the MobileNavBar, is there a way to hide the "Settings" or at least move it in under the user menu so that "slot" in the tab bar can instead be used for something more useful, like navigating to a page just like Home/Dashboard? With only fem slots available, 4 including the hamburger menu, it seems like a waste to dedicate one of them to Settings that you might change once or twice (or never)

  4. How come the MobileNavBar can't be controlled like the normal main menu? Seems like the only way is to hardcode items using options.MobileMenuSelector = items => items.Where(...) which isn't ideal for various reasons.

  5. How can you control/change the number of items for MobileMenuSelector ? 2 seems to be default but have found not documentation on how to change that.

  6. Is the a way to make the hamburger menu a bit less "in your face" and perhaps also move it to be far right instead of in center which is a very odd location?

We have tried to find documentation to answer the questions above but have not been able to do so besides "make your own version of the theme" which does not seem reasonable for changes like the ones we are looking for here.

Thanks.

  • ABP Framework version: 8.2 RC4 (but seems to be the same with non RC)
  • UI Type: MAUI Blazor

When you create a new MAUI Blazor solution in ABP Suite, you get this footer in the application

Have not been able to find anyway it can be removed / configured including the three buttons to the right and it also seems like the MainFooterComponent is ignored

<span class="copyright-text">@DateTime.Now.Year © MyProject</span>

Seems like this is something hard coded into the LeptonX them as they are visible on the demo site as well (where the About, Privacy and Contact buttons do nothing as well). For the free theme / ABP I could perhaps understand this but for solutions created with ABP Commercial / ABP Studio, I can't think of any customer wanting to do marketing for another company in their app. I would imagine you could download the source code for LeptonX and modify it, but that is of course something you should not need to do unless you really want to change the theme so I assume that isn't needed.

How can we get rid of this and why is it there to begin with?

Thanks.

(I think I have seen this in other non MAUI Blazor projects as well but as we are currently building a MAUI Blazor app, it is reported as such.)

  • ABP Framework version: 8.1
  • UI Type: MAUI (Blazor)
  • Database System: EF

There seem to be a problem with authentication in the browser when running the Mobile MAUI client generated by ABP Suite. The page does what it should and the app gets logged into, however, one you have clicked the login button, the page in the web browser never change, it still remains on the login form and there is no indication to the user that login is completed and they can close the browser window.

This is how it looks after login is completed, ie exactly the same as it did before login.

We have mostly seen this when running the MAUI app as a Windows App (Windows Emulator).

  • ABP Framework version: 7.1.1
  • UI type: Blazor/Maui

When using ABP Suite to try to create a MAUI project, it seems everything with LeptonX won't compile at all, giving you lots of errors like.

Severity Code Description Project File Line Suppression State Error MSB3027 Could not copy "C:\Users....nuget\packages\volo.abp.aspnetcore.components.web.leptonxtheme\2.1.0\staticwebassets\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker3.standalone.min.css" to "M:\Projects\ASP.NET\ABP\src\BlazorHybrid4\aspnet-core\src\BlazorHybrid4.MauiBlazor\obj\Debug\net7.0-android\assets\wwwroot_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker3.standalone.min.css". Exceeded retry count of 10. Failed. BlazorHybrid4.MauiBlazor C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.26\tools\Xamarin.Android.Common.targets 895

If you switch to creating a similar project with just plain Lepton instead, the generated solution will compile and somewhat work, but UI seems really broken, like it can't access CSS files etc.

Haven't used ABP in a few month and at least then, support for MAUI was best described as Alpha / experimental, is this still the case?

I know that MAUI overall seems to be somewhat of an unfinished product, but this seems to be related more to ABP. Can't be sure though as MAUI in itself is kind of pre release.

BTW, this form seems to be broken in responsive mode, and the submit button isn't even displayed in a somewhat narrow web browser. Expand it to full screen and it will show up.

  • ABP Framework version: 6.0.0-rc4
  • UI type: Blazor WASM
  • DB provider: SQL
    • Tiered (MVC) or Identity Server Separated (Angular): no

It seems ABP Suite 6.0 rc4 (and at least RC3 as well) are locking some files after generation, which leads to error messages when trying to build and not all of them are obvious that it is ABP Suite that is the reason for it, while some contain that information if you looks closely, like "XXXXX Exceeded retry count of 10. Failed. The file is locked by: "Volo.Abp.Suite (36088)"

Killing/restarting the ABP Suite process makes the error go away so it is no doubt about what is causing this, so as long as you know why this is, you can easily work around the problem.

As I understand it, the MAUI mobile application generated by ABP Suite seem to use Preferences instead of SecureStorage for storing JWT tokens which AFAIK isn't the recommended way of doing it as it is not as secure as SecureStorage. There is even a community post about this

https://community.abp.io/posts/using-abp-client-proxies-in-maui-with-openid-connect-em7x1s8k

private async Task SetTokenCacheAsync(string accessToken, string refreshToken)
{
    await _storage.SetAsync(IssueTrackrConsts.OidcConsts.AccessTokenKeyName, accessToken);
    await _storage.SetAsync(IssueTrackrConsts.OidcConsts.RefreshTokenKeyName, refreshToken);
}

private async Task ClearTokenCacheAsync()
{
    await _storage.RemoveAsync(IssueTrackrConsts.OidcConsts.AccessTokenKeyName);
    await _storage.RemoveAsync(IssueTrackrConsts.OidcConsts.RefreshTokenKeyName);
}

public class DefaultStorage : IStorage, ITransientDependency
{
    public Task<string> GetAsync(string key)
    {
        return Task.FromResult(Preferences.Get(key, string.Empty));
    }

    public Task SetAsync(string key, string value)
    {
        Preferences.Set(key, value);
        return Task.CompletedTask;
    }

    public Task RemoveAsync(string key)
    {
        Preferences.Remove(key);
        return Task.CompletedTask;
    }
}

I tried to update to ABP Suite matching the latest RC 6.0.0 RC4 but that did not seem to exist (and instead installed some Preview 7 from July even though I specified the version in the CLI command). So I did a "abp suite remove" and also deleted the directory, and then did a "abp suite install --version 6.0.0-rc.3". Now I seem to have a mismatch of versions, which I would assume is rather the ABP Suite RC3 having some incorrect INF

abp suite install --version 6.0.0-rc.3 [18:36:35 INF] ABP CLI (https://abp.io) [18:36:36 INF] Version 6.0.0-rc.4 (Prerelease) [18:36:36 INF] Installing ABP Suite v6.0.0-rc.3... You can invoke the tool using the following command: abp-suite Tool 'volo.abp.suite' (version '6.0.0-rc.3') was successfully installed.

abp suite [18:37:01 INF] ABP CLI (https://abp.io) [18:37:01 INF] Version 6.0.0-rc.4 (Prerelease) Starting Suite v6.0.0-rc.3 ... Opening http://localhost:3000

What is the ABP Suite to be used with RC4 and is there a ABP Suite RC4 as well?

Showing 1 to 10 of 16 entries
Made with ❤️ on ABP v9.0.0-preview Updated on September 19, 2024, 10:13