Add DeveloperSettingsPage

This commit is contained in:
vishnukvmd 2024-03-06 18:35:38 +05:30
parent 07e48ce318
commit b893affbfa
3 changed files with 82 additions and 2 deletions

View file

@ -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."
}

View file

@ -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<OnboardingPage> {
isDismissible: false,
);
if (result?.action == ButtonAction.first) {
// TODO: Navigate to developer mode page
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return const DeveloperSettingsPage();
},
),
);
}
}
},

View file

@ -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<DeveloperSettingsPage> {
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,
),
],
),
),
);
}
}