UI updates (#849)

* Updated dashboard

- Display "outstanding" badges
- Display "overdue" badges
- Pull-to-refresh

* Remove dead code

* Refactor app colors

* Add "pending shipments" icon

* Remove custom spinner

* Refactor error dialog

* Updated redirect after login

* Refactor login/account pages

- Better UX and confirmation messages

* Refactor API error messages

* Improve token management

- Secure storage
- Handle session expiry
- Per-profile HTTPS certificate checks

* Improved error messages
This commit is contained in:
Oliver
2026-07-06 21:10:10 +10:00
committed by GitHub
parent f737172180
commit 349a8e0ef5
45 changed files with 1240 additions and 477 deletions
+7 -7
View File
@@ -127,7 +127,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
L10().issueOrder,
L10().issueOrderConfirm,
icon: TablerIcons.send,
color: Colors.blue,
color: COLOR_ACTION,
acceptText: L10().issue,
onAccept: () async {
widget.order.issueOrder().then((dynamic) {
@@ -143,7 +143,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
L10().cancelOrder,
L10().cancelOrderConfirm,
icon: TablerIcons.circle_x,
color: Colors.red,
color: COLOR_DANGER,
acceptText: L10().cancel,
onAccept: () async {
await widget.order.cancelOrder().then((dynamic) {
@@ -160,7 +160,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
if (showCameraShortcut && widget.order.canEdit) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.camera, color: Colors.blue),
child: Icon(TablerIcons.camera, color: COLOR_ACTION),
label: L10().takePicture,
onTap: () async {
_uploadImage(context);
@@ -172,7 +172,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
if (widget.order.isPending) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.send, color: Colors.blue),
child: Icon(TablerIcons.send, color: COLOR_ACTION),
label: L10().issueOrder,
onTap: () async {
_issueOrder(context);
@@ -184,7 +184,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
if (widget.order.isOpen) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.circle_x, color: Colors.red),
child: Icon(TablerIcons.circle_x, color: COLOR_DANGER),
label: L10().cancelOrder,
onTap: () async {
_cancelOrder(context);
@@ -198,7 +198,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
InvenTreeSOLineItem().canCreate) {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.circle_plus, color: Colors.green),
child: Icon(TablerIcons.circle_plus, color: COLOR_SUCCESS),
label: L10().lineItemAdd,
onTap: () async {
_addLineItem(context);
@@ -208,7 +208,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
actions.add(
SpeedDialChild(
child: Icon(TablerIcons.circle_plus, color: Colors.green),
child: Icon(TablerIcons.circle_plus, color: COLOR_SUCCESS),
label: L10().shipmentAdd,
onTap: () async {
_addShipment(context);