From 71f35673750070d17be07b109a74fdc20d7bc00a Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Tue, 4 Mar 2025 14:48:37 -0600 Subject: [PATCH] Create management portal in Flutter #39 --- web/repertory/lib/helpers.dart | 9 ++++++ web/repertory/lib/models/mount.dart | 9 +++--- web/repertory/lib/models/mount_list.dart | 5 +-- .../lib/widgets/add_mount_widget.dart | 32 ++++++++++--------- 4 files changed, 34 insertions(+), 21 deletions(-) diff --git a/web/repertory/lib/helpers.dart b/web/repertory/lib/helpers.dart index ea5c781f..b6072263 100644 --- a/web/repertory/lib/helpers.dart +++ b/web/repertory/lib/helpers.dart @@ -1,3 +1,5 @@ +import 'package:flutter/foundation.dart'; + String formatMountName(String type, String name) { if (type == "remote") { return name.replaceAll("_", ":"); @@ -5,6 +7,13 @@ String formatMountName(String type, String name) { return name; } +String getBaseUri() { + if (kDebugMode) { + return "http://127.0.0.1:30000"; + } + return Uri.base.origin; +} + String initialCaps(String txt) { if (txt.isEmpty) { return txt; diff --git a/web/repertory/lib/models/mount.dart b/web/repertory/lib/models/mount.dart index f4bb1412..e0f53d6d 100644 --- a/web/repertory/lib/models/mount.dart +++ b/web/repertory/lib/models/mount.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; +import 'package:repertory/helpers.dart'; import 'package:repertory/types/mount_config.dart'; class Mount with ChangeNotifier { @@ -18,7 +19,7 @@ class Mount with ChangeNotifier { Future _fetch() async { final response = await http.get( Uri.parse( - Uri.encodeFull('${Uri.base.origin}/api/v1/mount?name=$name&type=$type'), + Uri.encodeFull('${getBaseUri()}/api/v1/mount?name=$name&type=$type'), ), ); @@ -35,7 +36,7 @@ class Mount with ChangeNotifier { final response = await http.get( Uri.parse( Uri.encodeFull( - '${Uri.base.origin}/api/v1/mount_status?name=$name&type=$type', + '${getBaseUri()}/api/v1/mount_status?name=$name&type=$type', ), ), ); @@ -52,7 +53,7 @@ class Mount with ChangeNotifier { await http.post( Uri.parse( Uri.encodeFull( - '${Uri.base.origin}/api/v1/mount?unmount=$unmount&name=$name&type=$type&location=$location', + '${getBaseUri()}/api/v1/mount?unmount=$unmount&name=$name&type=$type&location=$location', ), ), ); @@ -69,7 +70,7 @@ class Mount with ChangeNotifier { await http.put( Uri.parse( Uri.encodeFull( - '${Uri.base.origin}/api/v1/set_value_by_name?name=$name&type=$type&key=$key&value=$value', + '${getBaseUri()}/api/v1/set_value_by_name?name=$name&type=$type&key=$key&value=$value', ), ), ); diff --git a/web/repertory/lib/models/mount_list.dart b/web/repertory/lib/models/mount_list.dart index 72418836..350dfde9 100644 --- a/web/repertory/lib/models/mount_list.dart +++ b/web/repertory/lib/models/mount_list.dart @@ -3,6 +3,7 @@ import 'dart:convert'; import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart' as http; +import 'package:repertory/helpers.dart'; import 'package:repertory/types/mount_config.dart'; class MountList with ChangeNotifier { @@ -16,7 +17,7 @@ class MountList with ChangeNotifier { Future _fetch() async { final response = await http.get( - Uri.parse('${Uri.base.origin}/api/v1/mount_list'), + Uri.parse('${getBaseUri()}/api/v1/mount_list'), ); if (response.statusCode == 200) { @@ -50,7 +51,7 @@ class MountList with ChangeNotifier { await http.post( Uri.parse( Uri.encodeFull( - '${Uri.base.origin}/api/v1/add_mount?name=$name&type=$type', + '${getBaseUri()}/api/v1/add_mount?name=$name&type=$type', ), ), ); diff --git a/web/repertory/lib/widgets/add_mount_widget.dart b/web/repertory/lib/widgets/add_mount_widget.dart index 98944ffb..ab0ac512 100644 --- a/web/repertory/lib/widgets/add_mount_widget.dart +++ b/web/repertory/lib/widgets/add_mount_widget.dart @@ -6,33 +6,35 @@ class AddMountWidget extends StatelessWidget { final String mountType; final void Function(String? newName) onNameChanged; final void Function(String? newType) onTypeChanged; - const AddMountWidget({ + + final _items = ["S3", "Sia"]; + + AddMountWidget({ super.key, required this.allowEncrypt, required this.mountName, required this.mountType, required this.onNameChanged, required this.onTypeChanged, - }); + }) { + if (allowEncrypt) { + _items.insert(0, "Encrypt"); + } + } @override Widget build(BuildContext context) { - var items = ["S3", "Sia"]; - if (allowEncrypt) { - items.insert(0, "Encrypt"); - } - return Column( mainAxisSize: MainAxisSize.min, children: [ - DropdownButton( - value: mountType, - onChanged: onTypeChanged, - items: - items.map>((item) { - return DropdownMenuItem(value: item, child: Text(item)); - }).toList(), - ), + // DropdownButton( + // value: mountType, + // onChanged: onTypeChanged, + // items: + // _items.map>((item) { + // return DropdownMenuItem(value: item, child: Text(item)); + // }).toList(), + // ), TextField( decoration: InputDecoration(labelText: 'Name'), onChanged: onNameChanged,