public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console
@ 2026-04-22  8:55 Shan Shaji
  2026-04-22  8:55 ` [PATCH pve_flutter_frontend 1/2] fix: ui: show empty message if there are no tokens or groups Shan Shaji
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Shan Shaji @ 2026-04-22  8:55 UTC (permalink / raw)
  To: pve-devel

The tokens and groups tab bar view were showing an empty page if there are
no groups or tokens. The behaviour was similliar to our web UI, but
Google Play Console flagged that behaviour as a broken functionality. To fix
the issue, if there are no groups or tokens a placeholder text will be shown.  
  
Shan Shaji (2):
  fix: ui: show empty message if there are no tokens or groups
  cleanup: run `dart format` to fix formatting of the main_layout file

 lib/pages/main_layout_slim.dart | 155 ++++++++++++++++++--------------
 1 file changed, 86 insertions(+), 69 deletions(-)

-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH pve_flutter_frontend 1/2] fix: ui: show empty message if there are no tokens or groups
  2026-04-22  8:55 [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Shan Shaji
@ 2026-04-22  8:55 ` Shan Shaji
  2026-04-22  8:55 ` [PATCH pve_flutter_frontend 2/2] cleanup: run `dart format` to fix formatting of the main_layout file Shan Shaji
  2026-04-22  9:04 ` applied: [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Dominik Csapak
  2 siblings, 0 replies; 4+ messages in thread
From: Shan Shaji @ 2026-04-22  8:55 UTC (permalink / raw)
  To: pve-devel

The tokens and groups tab bar view widgets were showing a blank page.
This was flagged by play console as a broken functionality. To fix the
issue if there are no groups or tokens show an empty message in body of
the widgets.

Signed-off-by: Shan Shaji <s.shaji@proxmox.com>
---
 lib/pages/main_layout_slim.dart | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/lib/pages/main_layout_slim.dart b/lib/pages/main_layout_slim.dart
index 4229ef4..c65f744 100644
--- a/lib/pages/main_layout_slim.dart
+++ b/lib/pages/main_layout_slim.dart
@@ -936,6 +936,14 @@ class MobileAccessManagement extends StatelessWidget {
                             : null,
                       );
                     }),
+                if (aState.tokens.isEmpty)
+                  Align(
+                    child: Text(
+                      "No Tokens",
+                      style: Theme.of(context).textTheme.bodyLarge,
+                    ),
+                  )
+                else
                 ListView.builder(
                     itemCount: aState.tokens.length,
                     itemBuilder: (context, index) {
@@ -951,6 +959,14 @@ class MobileAccessManagement extends StatelessWidget {
                         subtitle: Text('Expires: $expireDate'),
                       );
                     }),
+                if (aState.groups.isEmpty)
+                  Align(
+                    child: Text(
+                      "No Groups",
+                      style: Theme.of(context).textTheme.bodyLarge,
+                    ),
+                  )
+                else
                 ListView.builder(
                     itemCount: aState.groups.length,
                     itemBuilder: (context, index) {
-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH pve_flutter_frontend 2/2] cleanup: run `dart format` to fix formatting of the main_layout file
  2026-04-22  8:55 [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Shan Shaji
  2026-04-22  8:55 ` [PATCH pve_flutter_frontend 1/2] fix: ui: show empty message if there are no tokens or groups Shan Shaji
@ 2026-04-22  8:55 ` Shan Shaji
  2026-04-22  9:04 ` applied: [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Dominik Csapak
  2 siblings, 0 replies; 4+ messages in thread
From: Shan Shaji @ 2026-04-22  8:55 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Shan Shaji <s.shaji@proxmox.com>
---
 lib/pages/main_layout_slim.dart | 139 ++++++++++++++++----------------
 1 file changed, 70 insertions(+), 69 deletions(-)

diff --git a/lib/pages/main_layout_slim.dart b/lib/pages/main_layout_slim.dart
index c65f744..8355309 100644
--- a/lib/pages/main_layout_slim.dart
+++ b/lib/pages/main_layout_slim.dart
@@ -944,21 +944,21 @@ class MobileAccessManagement extends StatelessWidget {
                     ),
                   )
                 else
-                ListView.builder(
-                    itemCount: aState.tokens.length,
-                    itemBuilder: (context, index) {
-                      final token = aState.tokens[index];
-                      var expireDate = 'never';
-                      if (token.expire != null &&
-                          token.expire?.millisecondsSinceEpoch != 0) {
-                        expireDate = DateFormat.yMd().format(token.expire!);
-                      }
+                  ListView.builder(
+                      itemCount: aState.tokens.length,
+                      itemBuilder: (context, index) {
+                        final token = aState.tokens[index];
+                        var expireDate = 'never';
+                        if (token.expire != null &&
+                            token.expire?.millisecondsSinceEpoch != 0) {
+                          expireDate = DateFormat.yMd().format(token.expire!);
+                        }
 
-                      return ListTile(
-                        title: Text('${token.userid} ${token.tokenid}'),
-                        subtitle: Text('Expires: $expireDate'),
-                      );
-                    }),
+                        return ListTile(
+                          title: Text('${token.userid} ${token.tokenid}'),
+                          subtitle: Text('Expires: $expireDate'),
+                        );
+                      }),
                 if (aState.groups.isEmpty)
                   Align(
                     child: Text(
@@ -967,64 +967,65 @@ class MobileAccessManagement extends StatelessWidget {
                     ),
                   )
                 else
-                ListView.builder(
-                    itemCount: aState.groups.length,
-                    itemBuilder: (context, index) {
-                      final group = aState.groups[index];
-                      final users = (group.users?.isNotEmpty ?? false)
-                          ? group.users!.split(',')
-                          : [];
-                      return ListTile(
-                        title: Text(group.groupid),
-                        subtitle: Text(group.comment ?? ''),
-                        trailing: const Icon(Icons.arrow_right),
-                        onTap: () => showModalBottomSheet(
-                          shape: const RoundedRectangleBorder(
-                              borderRadius: BorderRadius.vertical(
-                                  top: Radius.circular(10))),
-                          context: context,
-                          builder: (context) {
-                            return SizedBox(
-                              height: MediaQuery.of(context).size.height * 0.5,
-                              child: Column(
-                                crossAxisAlignment: CrossAxisAlignment.start,
-                                children: <Widget>[
-                                  Padding(
-                                    padding:
-                                        const EdgeInsets.fromLTRB(0, 5, 0, 5),
-                                    child: Align(
-                                      alignment: Alignment.topCenter,
-                                      child: Container(
-                                        width: 40,
-                                        height: 3,
-                                        color: Colors.black,
-                                      ),
-                                    ),
-                                  ),
-                                  ListTile(
-                                    title:
-                                        Text('Group members (${users.length})'),
-                                  ),
-                                  const Divider(),
-                                  Expanded(
-                                    child: Padding(
-                                      padding: const EdgeInsets.all(14.0),
-                                      child: ListView.builder(
-                                        itemCount: users.length,
-                                        itemBuilder: (context, index) =>
-                                            ListTile(
-                                          title: Text(users[index]),
+                  ListView.builder(
+                      itemCount: aState.groups.length,
+                      itemBuilder: (context, index) {
+                        final group = aState.groups[index];
+                        final users = (group.users?.isNotEmpty ?? false)
+                            ? group.users!.split(',')
+                            : [];
+                        return ListTile(
+                          title: Text(group.groupid),
+                          subtitle: Text(group.comment ?? ''),
+                          trailing: const Icon(Icons.arrow_right),
+                          onTap: () => showModalBottomSheet(
+                            shape: const RoundedRectangleBorder(
+                                borderRadius: BorderRadius.vertical(
+                                    top: Radius.circular(10))),
+                            context: context,
+                            builder: (context) {
+                              return SizedBox(
+                                height:
+                                    MediaQuery.of(context).size.height * 0.5,
+                                child: Column(
+                                  crossAxisAlignment: CrossAxisAlignment.start,
+                                  children: <Widget>[
+                                    Padding(
+                                      padding:
+                                          const EdgeInsets.fromLTRB(0, 5, 0, 5),
+                                      child: Align(
+                                        alignment: Alignment.topCenter,
+                                        child: Container(
+                                          width: 40,
+                                          height: 3,
+                                          color: Colors.black,
                                         ),
                                       ),
                                     ),
-                                  )
-                                ],
-                              ),
-                            );
-                          },
-                        ),
-                      );
-                    }),
+                                    ListTile(
+                                      title: Text(
+                                          'Group members (${users.length})'),
+                                    ),
+                                    const Divider(),
+                                    Expanded(
+                                      child: Padding(
+                                        padding: const EdgeInsets.all(14.0),
+                                        child: ListView.builder(
+                                          itemCount: users.length,
+                                          itemBuilder: (context, index) =>
+                                              ListTile(
+                                            title: Text(users[index]),
+                                          ),
+                                        ),
+                                      ),
+                                    )
+                                  ],
+                                ),
+                              );
+                            },
+                          ),
+                        );
+                      }),
                 ListView.builder(
                     itemCount: aState.roles.length,
                     itemBuilder: (context, index) {
-- 
2.47.3





^ permalink raw reply	[flat|nested] 4+ messages in thread

* applied: [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console
  2026-04-22  8:55 [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Shan Shaji
  2026-04-22  8:55 ` [PATCH pve_flutter_frontend 1/2] fix: ui: show empty message if there are no tokens or groups Shan Shaji
  2026-04-22  8:55 ` [PATCH pve_flutter_frontend 2/2] cleanup: run `dart format` to fix formatting of the main_layout file Shan Shaji
@ 2026-04-22  9:04 ` Dominik Csapak
  2 siblings, 0 replies; 4+ messages in thread
From: Dominik Csapak @ 2026-04-22  9:04 UTC (permalink / raw)
  To: pve-devel, Shan Shaji

On Wed, 22 Apr 2026 10:55:15 +0200, Shan Shaji wrote:
> The tokens and groups tab bar view were showing an empty page if there are
> no groups or tokens. The behaviour was similliar to our web UI, but
> Google Play Console flagged that behaviour as a broken functionality. To fix
> the issue, if there are no groups or tokens a placeholder text will be shown.
> 
> Shan Shaji (2):
>   fix: ui: show empty message if there are no tokens or groups
>   cleanup: run `dart format` to fix formatting of the main_layout file
> 
> [...]

Applied, thanks!

[1/2] fix: ui: show empty message if there are no tokens or groups
      commit: a13157397e413e4fd912008303b984fafeab359d
[2/2] cleanup: run `dart format` to fix formatting of the main_layout file
      commit: 641de7f066eccd0c08261afd804970351f0995a6




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-04-22  9:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-04-22  8:55 [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Shan Shaji
2026-04-22  8:55 ` [PATCH pve_flutter_frontend 1/2] fix: ui: show empty message if there are no tokens or groups Shan Shaji
2026-04-22  8:55 ` [PATCH pve_flutter_frontend 2/2] cleanup: run `dart format` to fix formatting of the main_layout file Shan Shaji
2026-04-22  9:04 ` applied: [PATCH pve_flutter_frontend 0/2] fix: broken functionality flagged by google play console Dominik Csapak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal