2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-04-28 05:26:47 +00:00

More debug (#405)

* Extra options for sentry

* Use string comparison

* Catch error when constructing related field

* Include field name in debug
This commit is contained in:
Oliver 2023-07-23 09:55:08 +10:00 committed by GitHub
parent 2e2e9640d4
commit b044c53d91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 20 deletions

View File

@ -4,6 +4,7 @@
- Enable label printing for stock locations - Enable label printing for stock locations
- Enable label printing for parts - Enable label printing for parts
- Updated translation support - Updated translation support
- Bug files
### 0.12.5 - July 2023 ### 0.12.5 - July 2023
--- ---

View File

@ -513,7 +513,7 @@ class APIFormField {
isFilterOnline: true, isFilterOnline: true,
showSearchBox: true, showSearchBox: true,
itemBuilder: (context, item, isSelected) { itemBuilder: (context, item, isSelected) {
return _renderRelatedField(item, isSelected, true); return _renderRelatedField(name, item, isSelected, true);
}, },
emptyBuilder: (context, item) { emptyBuilder: (context, item) {
return _renderEmptyResult(); return _renderEmptyResult();
@ -566,7 +566,7 @@ class APIFormField {
} }
}, },
dropdownBuilder: (context, item) { dropdownBuilder: (context, item) {
return _renderRelatedField(item, true, false); return _renderRelatedField(name, item, true, false);
}, },
onSaved: (item) { onSaved: (item) {
if (item != null) { if (item != null) {
@ -582,15 +582,32 @@ class APIFormField {
return false; return false;
} }
return item["pk"] == selectedItem["pk"]; return item["pk"].toString() == selectedItem["pk"].toString();
}); });
} }
// Render a "related field" based on the "model" type // Render a "related field" based on the "model" type
Widget _renderRelatedField(dynamic item, bool selected, bool extended) { Widget _renderRelatedField(String fieldName, dynamic item, bool selected, bool extended) {
// Convert to JSON // Convert to JSON
var data = Map<String, dynamic>.from((item ?? {}) as Map); Map<String, dynamic> data = {};
try {
data = Map<String, dynamic>.from((item ?? {}) as Map);
} catch (error, stackTrace) {
data = {};
sentryReportError(
"_renderRelatedField", error, stackTrace,
context: {
"method": "_renderRelateField",
"field_name": fieldName,
"item": item.toString(),
"selected": selected.toString(),
"extended": extended.toString(),
}
);
}
switch (model) { switch (model) {
case "part": case "part":
@ -599,7 +616,7 @@ class APIFormField {
return ListTile( return ListTile(
title: Text( title: Text(
part.fullname, part.fullname,
style: TextStyle(fontWeight: selected && extended ? FontWeight.bold : FontWeight.normal) style: TextStyle(fontWeight: selected && extended ? FontWeight.bold : FontWeight.normal)
), ),
subtitle: extended ? Text( subtitle: extended ? Text(
@ -615,8 +632,8 @@ class APIFormField {
return ListTile( return ListTile(
title: Text( title: Text(
cat.pathstring, cat.pathstring,
style: TextStyle(fontWeight: selected && extended ? FontWeight.bold : FontWeight.normal) style: TextStyle(fontWeight: selected && extended ? FontWeight.bold : FontWeight.normal)
), ),
subtitle: extended ? Text( subtitle: extended ? Text(
cat.description, cat.description,
@ -629,7 +646,7 @@ class APIFormField {
return ListTile( return ListTile(
title: Text( title: Text(
loc.pathstring, loc.pathstring,
style: TextStyle(fontWeight: selected && extended ? FontWeight.bold : FontWeight.normal) style: TextStyle(fontWeight: selected && extended ? FontWeight.bold : FontWeight.normal)
), ),
subtitle: extended ? Text( subtitle: extended ? Text(
@ -654,25 +671,25 @@ class APIFormField {
case "company": case "company":
var company = InvenTreeCompany.fromJson(data); var company = InvenTreeCompany.fromJson(data);
return ListTile( return ListTile(
title: Text(company.name), title: Text(company.name),
subtitle: extended ? Text(company.description) : null, subtitle: extended ? Text(company.description) : null,
leading: InvenTreeAPI().getThumbnail(company.thumbnail) leading: InvenTreeAPI().getThumbnail(company.thumbnail)
); );
case "projectcode": case "projectcode":
var project_code = InvenTreeProjectCode.fromJson(data); var project_code = InvenTreeProjectCode.fromJson(data);
return ListTile( return ListTile(
title: Text(project_code.code), title: Text(project_code.code),
subtitle: Text(project_code.description), subtitle: Text(project_code.description),
leading: FaIcon(FontAwesomeIcons.list) leading: FaIcon(FontAwesomeIcons.list)
); );
default: default:
return ListTile( return ListTile(
title: Text( title: Text(
"Unsupported model", "Unsupported model",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: COLOR_DANGER color: COLOR_DANGER
) )
), ),
subtitle: Text("Model '${model}' rendering not supported"), subtitle: Text("Model '${model}' rendering not supported"),
); );

View File

@ -70,3 +70,7 @@ flutter:
- assets/sounds/barcode_scan.mp3 - assets/sounds/barcode_scan.mp3
- assets/sounds/barcode_error.mp3 - assets/sounds/barcode_error.mp3
- assets/sounds/server_error.mp3 - assets/sounds/server_error.mp3
sentry:
upload_debug_symbols: true
upload_source_maps: true