Activities of "enisn"

This is related to UI theme, it's solved and will be published in LeptonX nuget packages

Hi,

Only Tenant - Edition relation is tracked and managed by ABP, otherwise you need to create a subscription by using PaymentRequestAppService with paymentType as subscription and track changed by listening events from payment module: https://abp.io/docs/latest/modules/payment#distributed-events

Those events are properly triggered by host application that uses payment module application package. If you configure webhooks, you can ensure all the events will be delivered while your payment application is up. If not, still payment gateway retries webhooks until application respond with 200. So configuring webhooks is enough to get events eventually.

Q. Are saying we can somehow utilise this package in the Microsoft Maui Blazor Hybrid project to implement a Login flow? It seems pretty tightly coupled to the ABP architecture.

Yes it's built for the best compatibility with ABP and ABP services. If you need the same implementation for plain Blazor Hybrid project, you'll need to implement it yourself, this package can't be used without ABP.

Also can you please comment on why the ABP Maui Blazor Hybrid will not startup without connectivity to the Server as we haven't received an answer to our overall question.

ABP Client architecture is designed for Web Applications mostly MVC & Blazor, so they need to get configuration from server. By default ABP applications can't work without a backend, since they get application-configuration, permissions and even localization from backend. But you can still handle Application Initialization in MauiProgram.cs with a simple try-catch code block and show a different error page when there is no connection. Or you can override client packages to cache application-configuration and other datas from server.

the following code in MauiProgram.cs sends request to backend, gets configuration and initializes all the ABP infrastructure: csharp app.Services.GetRequiredService<IAbpApplicationWithExternalServiceProvider>().Initialize(app.Services);

Q. with regard to authentication, can we just call the Swagger Login endpoint on the server to authenticate, or do we need to do anything else?

You can use the same way with MauiBlazor template. It has pre-configured login-flow by using Volo.Abp.Account.Pro.Public.MauiBlazor package. You can check usage of by creating a MauiBlazor template and implement to your case.

Alternatively, you can implement OAUTH login from scratch by using WebAuthenticator

Hi,

You told you are working on Android. Did you forward your local machine port to the emulator by following Port mapping step from the documentation?

https://abp.io/docs/latest/framework/ui/maui?Tiered=No#android

As an example:

adb reverse tcp:44305 tcp:44305

44305 should be your HttpApi.Host port

Payment redirection is confusing, where does LocalRedirectPreserveMethod

It redirects a page that is included in Volo.Payment.Web. It should redirect to the application which has this reference.

You can add Volo.Payment.Web to your HttpApi.Host project and redirect to the API project. This page contains gateway selection UI if configured multiple gateway, otherwise directly redirects to the single payment provider's page

Sorry for the three new questions to the payment / subscriptions:

  1. Where do I configure whether a subscription is automatically renewed or whether the user has to renew it manually? You at ABP have implemented the “Automatic Renewal” option in “Organization Management”. How does it work if this is changed? Is there a request to the payment provider and then this is stored there with the subscription?

  2. How can you implement that a customer can cancel their subscription again?

Hi,

The Payment Module implements only abstraction between payment gateways and makes payments only. Subscription logic is not implemented in the module. For the subscription feature, it uses Stripe API endpoints and it doesn't track or keep any data about subscription. It checks by using stripe APIs if the subscription ended or was canceled. So, If you need to implement a Subscription logic, you can build your own tracking & keeping data logic in a new module or use an existing subscription logic as a service. Payment module uses only payment APIs over gateways

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).

You can create the following component in your application:

using Microsoft.AspNetCore.Components.Rendering;
using Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components.ApplicationLayout.Common;
using Volo.Abp.DependencyInjection;

namespace LeptonXDemoApp.Blazor.Components;

[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(GeneralSettings), typeof(EmptyGeneralSettings))]
public class EmptyGeneralSettings : GeneralSettings
{

    protected override void BuildRenderTree(RenderTreeBuilder __builder)
    {
        __builder.OpenElement(0, "div");
        __builder.AddAttribute(1, "class", "empty-general-settings");
        __builder.CloseElement();
    }
}

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?

You can create the following script in wwwroot/globa.js

$(function () {

    const currentInitLeptonX = window.initLeptonX;
    window.initLeptonX = function (layout, defaultStyle = "dim") {

        currentInitLeptonX(layout, defaultStyle);

        leptonx.globalConfig.defaultSettings =
        {
            appearance: "dark",
            containerWidth: 'full',
        };

        leptonx.init.run();
    }
});

And add it to the bundle configuration: (Configure both for Blazor Server)


// For Blazor Server
options.ScriptBundles.Configure(
    LeptonXThemeBundles.Scripts.Global,
    bundle =>
    {
        bundle.AddFiles("/global.js");
    }
);

// For Blazor WASM / MauiBlazor / Blazor Server
options.ScriptBundles.Configure(
    BlazorLeptonXThemeBundles.Scripts.Global,
    bundle =>
    {
        bundle.AddFiles("/global.js");
    });

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)

It's a design decision, there is no configuration for it right now, you can customize it by overriding the MobileNavBar component in your project.

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.

It uses regular menu contributor to list menu items. Bottom bar is designed for mobile requirements and it has limited space. So only 2 items can be placed there, you can pick which ones will be there. But still all the menu items will be included in hamburger menu.

Can you re-generate blazor bundles with abp bundle command?

Not sure if this is a bug or intentional but when creating a Blazor WASM in ABP Suite, it creates both a ProjectName.Blazor and a ProjectName.Blazor.Client project, ie just like if you create a Blazor WebApp project. This is different from the Visual Studio template which only creates a single project for Blazor WASM, and also unlike how it was before from what I remember (could be wrong). If you create a Blazor Server project, it will still only be a ProjectName.Blazor project.

So it seeems ABP Suite basically creates a WASM version of the Blazor WebApp, which you can also see by it containing .AddInteractiveWebAssemblyComponents(); etc.

It does seem to be working though, but not sure if this is intentional but it is at least different from the Blazor WASM template in Visual Studio?

In the new version, we switched to Blazor WebApp hosting logic. Yes your project will have both of projects (.Blazor and .Blazor.Client) but its behavior is what you pick while creating. If you choose WASM, it'll work as blazor-wasm, if you choose server, it'll work as blazor-server. We just merged infrastructure of all blazor project-types. Still you can create an old template and upgrade it to use previous logic

Showing 291 to 300 of 784 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on December 17, 2025, 07:08
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.