Activities of "sumeyye.kurtulus"

Hello, We are sorry for getting back this late. Could you try using this key SUPPRESS_UNSAVED_CHANGES_WARNING to override the default behavior for the touched forms

// app.module.ts or app.config.ts

providers: [
	  {
      provide: SUPPRESS_UNSAVED_CHANGES_WARNING,
      useValue: false,
    }
]

You can let us know if you need further assistance. Thank you for your cooperation.

Hello,

I cannot produce the same problem on my end after running such command using the latest ABP version abp generate-proxy -t ng -url https://localhost:[yourPort] -m saas

Could you send me a minimal, reproducible example so that I could assist you further. Here is my e-mail address: sumeyye.kurtulus@gmail.com.

Thank you for your cooperation.

Hello again, Thank you for providing logs. As far as I see, there is no problem on backend side. I suspect the gateway configurations declared in gateways/mobile/MyProjectName.MobileGateway/appsettings.json

Can you try updating the ClusterId for AbpApi route to AuthServer that may solve your problem?

{
  "App": {
    "CorsOrigins": "",
    "HealthCheckUrl": "/health-status"
  },
  "AuthServer": {
    "SwaggerClientId": "SwaggerTestUI"
  },
  "ElasticSearch": {
    "IsLoggingEnabled": true,
    "Url": "http://localhost:9200"
  },
  "Swagger": {
    "IsEnabled": true
  },
  "ReverseProxy": {
    "Routes": {
      "AbpApi": {
        "ClusterId": "AuthServer", // You may need to check here
        "Match": {  
          "Path": "/api/abp/{**catch-all}"
        }
      },
      "SettingManagement": {
        "ClusterId": "Administration",
        "Match": {
          "Path": "/api/setting-management/{**catch-all}"
        }
      },
      "FeatureManagement": {
        "ClusterId": "Administration",
        "Match": {
          "Path": "/api/feature-management/{**catch-all}"
        }
      },
      "PermissionManagement": {
        "ClusterId": "Administration",
        "Match": {
          "Path": "/api/permission-management/{**catch-all}"
        }
      },
      "Saas": {
        "ClusterId": "Saas",
        "Match": {
          "Path": "/api/saas/{**catch-all}"
        }
      },
      "SaasSwagger": {
        "ClusterId": "Saas",
        "Match": {
          "Path": "/swagger-json/Saas/swagger/v1/swagger.json"
        },
        "Transforms": [
          { "PathRemovePrefix": "/swagger-json/Saas" }
        ]
      },
      "OpenIddict": {
        "ClusterId": "Identity",
        "Match": {
          "Path": "/api/openiddict/{**catch-all}"
        },
        "AuthorizationPolicy": "Anonymous"  
      },
      "AdministrationSwagger": {
        "ClusterId": "Administration",
        "Match": {
          "Path": "/swagger-json/Administration/swagger/v1/swagger.json"
        },
        "Transforms": [
          { "PathRemovePrefix": "/swagger-json/Administration" }
        ]
      },
      "Account": {
        "ClusterId": "AuthServer",
        "Match": {
          "Path": "/api/account/{**catch-all}"
        }
      },
      "AccountAdmin": {
        "ClusterId": "AuthServer",
        "Match": {
          "Path": "/api/account-admin/{**catch-all}"
        }
      },
      "AuthServerSwagger": {
        "ClusterId": "AuthServer",
        "Match": {
          "Path": "/swagger-json/AuthServer/swagger/v1/swagger.json"
        },
        "Transforms": [
          { "PathRemovePrefix": "/swagger-json/AuthServer" }
        ]
      },
      "Identity": {
        "ClusterId": "Identity",
        "Match": {
          "Path": "/api/identity/{**catch-all}"
        },
        "AuthorizationPolicy": "Anonymous"  
      },
      "IdentitySwagger": {
        "ClusterId": "Identity",
        "Match": {
          "Path": "/swagger-json/Identity/swagger/v1/swagger.json"
        },
        "Transforms": [
          { "PathRemovePrefix": "/swagger-json/Identity" }
        ]
      }
    },
    "Clusters": {
      "AuthServer": {
        "Destinations": {
          "AuthServer": {
            "Address": "http://yourIP:44392/"
          }
        }
      },
      "Administration": {
        "Destinations": {
          "Administration": {
            "Address": "http://yourIP:44300/"
          }
        }
      },
      "Saas": {
        "Destinations": {
          "Saas": {
            "Address": "http://yourIP:44301/"
          }
        }
      },
      "Identity": {
        "Destinations": {
          "Identity": {
            "Address": "http://yourIP:44381/"
          }
        }
      }
    }
  }
}

If this does not solve your problem, you can send me a minimal reproducible example to investigate further. Here is my email address: sumeyye.kurtulus@volosoft.com.

Hello,

Thank you for providing detailed information about your problem.

If you are sure that the IP you configured is correct and the react native app is successfully responded, the problem might be on the backend side once you try to authenticate the user. For this reason, could you share the backend logs regarding the authentication process?

Thank you for your patience and cooperation.

Hello,

You may try using a CustomTitleStrategy that overrides the default TitleStrategy

import { Injectable, inject, effect } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { RouterStateSnapshot, TitleStrategy } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { LocalizationService } from '@abp/ng.core';

@Injectable({
  providedIn: 'root',
})
export class CustomTitleStrategy extends TitleStrategy {
  protected readonly title = inject(Title);
  protected readonly localizationService = inject(LocalizationService);
  protected routerState: RouterStateSnapshot;

  langugageChange = toSignal(this.localizationService.languageChange$);

  constructor() {
    super();
    this.title.setTitle('PRO'); // Set a default title
    effect(() => {
      // React to language changes
      if (this.langugageChange()) {
        this.updateTitle(this.routerState);
      }
    });
  }

  override updateTitle(routerState: RouterStateSnapshot) {
    this.routerState = routerState;
    const title = this.buildTitle(routerState);

    const projectName = 'PRO'; // Replace with your project name
    this.title.setTitle(projectName);
    if (!title) {
      return this.title.setTitle(projectName);
    }

    const localizedText =
      this.localizationService.instant({ key: title, defaultValue: title }) + ` | ${projectName}`;

    this.title.setTitle(localizedText);
  }
}

Then, in your providers array


// app.module.ts or app.config.ts
providers: [
		//...
		{
      provide: TitleStrategy,
      useExisting: CustomTitleStrategy,
    },
 ],

You can let us know if you need further assistance. Thank you for your cooperation.

Hello again, You can use the reloadPage declared in AbpWindowService https://github.com/abpframework/abp/blob/93da49c17aa61883733f0abcff19ba45b6c3d633/npm/ng-packs/packages/core/src/lib/services/window.service.ts#L18 to reload the page. However, it does the same thing at the end.

Thank you for sharing the additional details. Unfortunately, I am unable to determine how the theme has been integrated into your project based on the information provided.

To help us investigate further, could you please send a minimal, reproducible example?
You may send it directly to me at sumeyye.kurtulus@volosoft.com.

In the meantime, you can also review the source code for the LeptonX theme.
The source can be obtained using Suite, as explained here: ABP Suite Source Code Documentation.

Alternatively, you can add the theme package with source code under your Angular directory using the following command:

abp add-package @volosoft/abp.ng.theme.lepton-x --with-source-code

Please let us know if you need any further assistance. We will be glad to help.

Thank you for your cooperation.

Hello,

Could you try adding this setting to the host application? It should be working fine in this way.

You can let us know if you need further assistance. Thank you for your cooperation.

Hello, The expected behavior here is actually met. These links are configured inside the provider function as you mentioned above.

 provideGdprConfig(
      withCookieConsentOptions({
        cookiePolicyUrl: 'https://google.com',
        privacyPolicyUrl: 'https://google.com',
      }),
    ),

Hello,

I can suggest you to hide the tab programmatically inside your app.component.ts

//app.component.ts
ngOnInit() {
    // Hide idle session timeout tab specifically
    const hideIdleTab = () => {
      const tabs = document.querySelectorAll('.nav-link');
      tabs.forEach(tab => {
        if (tab.textContent?.toLowerCase().includes('idle session timeout')) {
          tab.closest('.nav-item')?.remove();
        }
      });
    };
    
    hideIdleTab();
    // Watch for dynamic content
    new MutationObserver(hideIdleTab).observe(document.body, { childList: true, subtree: true });
  }

You can let us know if you need further assistance. Thank you for your cooperation.

Showing 111 to 120 of 496 entries
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
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.