From b893affbfacb54fc569eba139612c84df7462ac0 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Wed, 6 Mar 2024 18:35:38 +0530 Subject: [PATCH] Add DeveloperSettingsPage --- auth/lib/l10n/arb/app_en.arb | 5 +- auth/lib/onboarding/view/onboarding_page.dart | 9 ++- .../ui/settings/developer_settings_page.dart | 70 +++++++++++++++++++ 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 auth/lib/ui/settings/developer_settings_page.dart diff --git a/auth/lib/l10n/arb/app_en.arb b/auth/lib/l10n/arb/app_en.arb index b6b8ba7d4..66f2b2fdf 100644 --- a/auth/lib/l10n/arb/app_en.arb +++ b/auth/lib/l10n/arb/app_en.arb @@ -410,5 +410,8 @@ "launchPasskeyUrlAgain": "Launch passkey URL again", "passkey": "Passkey", "developerMode":"Developer mode", - "developerModeWarning":"Are you sure that you want to enter Developer mode?" + "developerModeWarning":"Are you sure that you want to modify Developer settings?", + "developerSettings": "Developer settings", + "invalidURL": "Invalid URL", + "invalidURLMessage": "Sorry, the URL you entered is invalid. Please enter a valid URL and try again." } \ No newline at end of file diff --git a/auth/lib/onboarding/view/onboarding_page.dart b/auth/lib/onboarding/view/onboarding_page.dart index 3c5e8e020..97b6f698c 100644 --- a/auth/lib/onboarding/view/onboarding_page.dart +++ b/auth/lib/onboarding/view/onboarding_page.dart @@ -17,6 +17,7 @@ import 'package:ente_auth/ui/common/gradient_button.dart'; import 'package:ente_auth/ui/components/buttons/button_widget.dart'; import 'package:ente_auth/ui/components/models/button_result.dart'; import 'package:ente_auth/ui/home_page.dart'; +import 'package:ente_auth/ui/settings/developer_settings_page.dart'; import 'package:ente_auth/ui/settings/language_picker.dart'; import 'package:ente_auth/utils/dialog_util.dart'; import 'package:ente_auth/utils/navigation_util.dart'; @@ -73,7 +74,13 @@ class _OnboardingPageState extends State { isDismissible: false, ); if (result?.action == ButtonAction.first) { - // TODO: Navigate to developer mode page + Navigator.of(context).push( + MaterialPageRoute( + builder: (BuildContext context) { + return const DeveloperSettingsPage(); + }, + ), + ); } } }, diff --git a/auth/lib/ui/settings/developer_settings_page.dart b/auth/lib/ui/settings/developer_settings_page.dart new file mode 100644 index 000000000..9efe113d1 --- /dev/null +++ b/auth/lib/ui/settings/developer_settings_page.dart @@ -0,0 +1,70 @@ +import 'package:ente_auth/l10n/l10n.dart'; +import 'package:ente_auth/ui/common/gradient_button.dart'; +import 'package:ente_auth/utils/dialog_util.dart'; +import 'package:flutter/material.dart'; +import 'package:logging/logging.dart'; + +class DeveloperSettingsPage extends StatefulWidget { + const DeveloperSettingsPage({super.key}); + + @override + _DeveloperSettingsPageState createState() => _DeveloperSettingsPageState(); +} + +class _DeveloperSettingsPageState extends State { + final _logger = Logger('DeveloperSettingsPage'); + final _urlController = TextEditingController(); + + @override + void dispose() { + _urlController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(context.l10n.developerSettings), + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + children: [ + TextField( + controller: _urlController, + decoration: const InputDecoration( + labelText: 'Server Endpoint', + hintText: 'https://api.ente.io:443', + ), + autofocus: true, + ), + const SizedBox(height: 40), + GradientButton( + onTap: () { + String url = _urlController.text; + _logger.info("Entered endpoint: " + url); + try { + final uri = Uri.parse(url); + if ((uri.scheme == "http" || uri.scheme == "https") && + (uri.hasPort || !uri.hasPort)) { + // TODO: Save the URL + } else { + throw const FormatException(); + } + } catch (e) { + showErrorDialog( + context, + context.l10n.invalidURL, + context.l10n.invalidURLMessage, + ); + } + }, + text: context.l10n.saveAction, + ), + ], + ), + ), + ); + } +}