[pve-devel] [PATCH pve_flutter_frontend 3/3] ui: settings: add proxmox forum and bugzilla links
Shan Shaji
s.shaji at proxmox.com
Fri Aug 29 13:48:45 CEST 2025
Right now all concerns and bugs are being raised in the play
console. To allow users to directly access proxmox forum and report bugs
in bugzilla, add help section in settings page.
Signed-off-by: Shan Shaji <s.shaji at proxmox.com>
---
lib/pages/pve_settings_page.dart | 121 +++++++++++++++++++++++++------
lib/utils/links.dart | 2 +
2 files changed, 99 insertions(+), 24 deletions(-)
diff --git a/lib/pages/pve_settings_page.dart b/lib/pages/pve_settings_page.dart
index 1f57f1c..8d4078d 100644
--- a/lib/pages/pve_settings_page.dart
+++ b/lib/pages/pve_settings_page.dart
@@ -16,35 +16,108 @@ class PveSettingsPage extends StatelessWidget {
child: Column(
children: [
ProxmoxGeneralSettingsForm(),
- const ListTile(
- title: Text(
- 'LEGAL',
- style: TextStyle(
- fontWeight: FontWeight.bold,
+ _PveSettingsSection(
+ sectionTitle: 'LEGAL',
+ items: [
+ ListTile(
+ leading: const Icon(Icons.privacy_tip_outlined),
+ title: const Text('Privacy Policy'),
+ trailing: const Icon(Icons.open_in_new),
+ onTap: () => _launchUrl(
+ url: Links.privacyPolicyUrl,
+ onFailure: () {
+ ScaffoldMessenger.of(context).showSnackBar(
+ const SnackBar(
+ content: Text(
+ 'Could not launch privacy policy',
+ ),
+ ),
+ );
+ },
+ ),
),
- ),
- ),
- ListTile(
- leading: const Icon(Icons.privacy_tip_outlined),
- title: const Text('Privacy Policy'),
- trailing: const Icon(Icons.open_in_new),
- onTap: () {
- try {
- tryLaunchUrl(Links.privacyPolicyUrl);
- } catch (_) {
- ScaffoldMessenger.of(context).showSnackBar(
- const SnackBar(
- content: Text(
- 'Could not launch privacy policy',
- ),
- ),
- );
- }
- },
+ ],
),
+ _PveSettingsSection(
+ sectionTitle: 'HELP',
+ items: [
+ ListTile(
+ leading: Icon(Icons.web),
+ trailing: const Icon(Icons.open_in_new),
+ title: const Text('Proxmox Forum'),
+ onTap: () => _launchUrl(
+ url: Links.proxmoxForum,
+ onFailure: () {
+ ScaffoldMessenger.of(context).showSnackBar(
+ const SnackBar(
+ content: Text(
+ 'Could not open forum',
+ ),
+ ),
+ );
+ },
+ ),
+ ),
+ ListTile(
+ leading: Icon(Icons.bug_report_outlined),
+ trailing: const Icon(Icons.open_in_new),
+ title: const Text('Report a bug'),
+ onTap: () => _launchUrl(
+ url: Links.bugzillaUri,
+ onFailure: () {
+ ScaffoldMessenger.of(context).showSnackBar(
+ const SnackBar(
+ content: Text(
+ 'Could not open bugzilla',
+ ),
+ ),
+ );
+ },
+ ),
+ )
+ ],
+ )
],
),
),
);
}
+
+ void _launchUrl({
+ required Uri url,
+ required VoidCallback onFailure,
+ }) {
+ try {
+ tryLaunchUrl(url);
+ } catch (_) {
+ onFailure();
+ }
+ }
+}
+
+class _PveSettingsSection extends StatelessWidget {
+ const _PveSettingsSection({
+ required this.sectionTitle,
+ required this.items,
+ });
+
+ final String sectionTitle;
+ final List<Widget> items;
+
+ @override
+ Widget build(BuildContext context) {
+ return Column(
+ children: [
+ ListTile(
+ title: Text(
+ sectionTitle,
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ ),
+ ...items,
+ ],
+ );
+ }
}
diff --git a/lib/utils/links.dart b/lib/utils/links.dart
index bab1b80..3c1797e 100644
--- a/lib/utils/links.dart
+++ b/lib/utils/links.dart
@@ -18,4 +18,6 @@ class Links {
'https://play.google.com/store/apps/details?id=com.undatech.opaque');
static final privacyPolicyUrl = Uri.parse(
'https://pve.proxmox.com/wiki/Proxmox_VE_Mobile_Companion_Data_Protection');
+ static final bugzillaUri =
+ Uri.parse('https://bugzilla.proxmox.com/enter_bug.cgi?product=pve');
}
--
2.47.2
More information about the pve-devel
mailing list