Merge branch 'master' into login-with-token

This commit is contained in:
Raffael Wolf 2026-02-08 17:42:36 +01:00 committed by GitHub
commit d07bf90a9a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 428 additions and 97 deletions

View file

@ -214,30 +214,27 @@ class InvenTreeAPI {
return url;
}
String _makeUrl(String url) {
// Strip leading slash
if (url.startsWith("/")) {
url = url.substring(1, url.length);
// Resolve a relative or absolute URL
String _makeUrl(String url, {String base = ""}) {
final baseUri = Uri.parse(base.isNotEmpty ? base : baseUrl);
final pathUri = Uri.parse(url);
// If path is absolute (has scheme), ignore base
if (pathUri.hasScheme) {
return pathUri.toString();
}
// Prevent double-slash
url = url.replaceAll("//", "/");
return baseUrl + url;
return baseUri.resolveUri(pathUri).toString();
}
String get apiUrl => _makeUrl("/api/");
String get imageUrl => _makeUrl("/image/");
String makeApiUrl(String endpoint) {
if (endpoint.startsWith("/api/") || endpoint.startsWith("api/")) {
return _makeUrl(endpoint);
} else {
return _makeUrl("/api/${endpoint}");
}
String apiBase = makeUrl("/api/");
return _makeUrl(endpoint, base: apiBase);
}
String get apiUrl => makeApiUrl("");
String makeUrl(String endpoint) => _makeUrl(endpoint);
UserProfile? profile;
@ -354,6 +351,9 @@ class InvenTreeAPI {
// Supports separate search against "supplier" / "customer" / "manufacturer"
bool get supportsSplitCompanySearch => apiVersion >= 315;
// Supports "requirements" information for specific part
bool get supportsPartRequirements => apiVersion >= 350;
// Does the server support the "modern" (consolidated) parameter API?
// Ref: https://github.com/inventree/InvenTree/pull/10699
bool get supportsModernParameters => apiVersion >= 429;
@ -1175,7 +1175,7 @@ class InvenTreeAPI {
* Perform a request to link a custom barcode to a particular item
*/
Future<bool> linkBarcode(Map<String, String> body) async {
HttpClientRequest? request = await apiRequest("/barcode/link/", "POST");
HttpClientRequest? request = await apiRequest("barcode/link/", "POST");
if (request == null) {
return false;
@ -1194,7 +1194,7 @@ class InvenTreeAPI {
* Perform a request to unlink a custom barcode from a particular item
*/
Future<bool> unlinkBarcode(Map<String, dynamic> body) async {
HttpClientRequest? request = await apiRequest("/barcode/unlink/", "POST");
HttpClientRequest? request = await apiRequest("barcode/unlink/", "POST");
if (request == null) {
return false;