Added API status page and git shortcuts on login screen, updated debug url to reflect new network infrastructure. started working on 2v2 match upgrading logic in api
This commit is contained in:
parent
4d27d3be11
commit
b304ab3a7b
|
@ -1,3 +1,3 @@
|
||||||
// lib/globals.dart
|
// lib/globals.dart
|
||||||
const String apiurl = "https://api.dthpp.mercurio.moe";
|
const String apiurl = "https://api.dthpp.mercurio.moe";
|
||||||
//const String apiurl = "http://10.0.0.10:9134";
|
//const String apiurl = "http://192.168.1.120:9134";
|
||||||
|
|
|
@ -43,7 +43,7 @@ class _HomePageState extends State<HomePage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Map<String, String>> fetchCommitHashes() async {
|
Future<Map<String, String>> fetchCommitHashes() async {
|
||||||
const apiUrl = '$apiurl/latest-commit-hashes';
|
const apiUrl = '$apiurl/version';
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final response = await http.get(Uri.parse(apiUrl));
|
final response = await http.get(Uri.parse(apiUrl));
|
||||||
|
|
|
@ -4,6 +4,8 @@ import 'package:http/http.dart' as http;
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'home.dart';
|
import 'home.dart';
|
||||||
import '../globals.dart';
|
import '../globals.dart';
|
||||||
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
class LoginPage extends StatefulWidget {
|
class LoginPage extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
|
@ -21,6 +23,17 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
Future<void> _handleAuth() async {
|
Future<void> _handleAuth() async {
|
||||||
final email = _emailController.text.trim();
|
final email = _emailController.text.trim();
|
||||||
final password = _passwordController.text.trim();
|
final password = _passwordController.text.trim();
|
||||||
|
final displayName = _displayNameController.text.trim();
|
||||||
|
|
||||||
|
// Input validation
|
||||||
|
if (email.isEmpty ||
|
||||||
|
password.isEmpty ||
|
||||||
|
(!_isLogin && displayName.isEmpty)) {
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(
|
||||||
|
SnackBar(content: Text('Please fill in all required fields.')),
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
|
@ -36,8 +49,7 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
context, MaterialPageRoute(builder: (context) => HomePage()));
|
context, MaterialPageRoute(builder: (context) => HomePage()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final uid = await _register(
|
final uid = await _register(email, password, displayName);
|
||||||
email, password, _displayNameController.text.trim());
|
|
||||||
if (uid != null) {
|
if (uid != null) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_isLogin = true;
|
_isLogin = true;
|
||||||
|
@ -118,21 +130,61 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
decoration: InputDecoration(labelText: 'Display Name'),
|
decoration: InputDecoration(labelText: 'Display Name'),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
_isLoading
|
if (_isLoading)
|
||||||
? CircularProgressIndicator()
|
CircularProgressIndicator()
|
||||||
: ElevatedButton(
|
else
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
ElevatedButton(
|
||||||
onPressed: _handleAuth,
|
onPressed: _handleAuth,
|
||||||
child: Text(_isLogin ? 'Login' : 'Register'),
|
child: Text(_isLogin ? 'Login' : 'Register'),
|
||||||
),
|
),
|
||||||
TextButton(
|
ElevatedButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
_isLogin = !_isLogin;
|
_isLogin = !_isLogin;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: Text(_isLogin
|
child: Text(_isLogin ? 'Register' : 'Back to Login'),
|
||||||
? 'Don\'t have an account? Register'
|
),
|
||||||
: 'Already have an account? Login'),
|
],
|
||||||
|
),
|
||||||
|
const Spacer(),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
|
children: [
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(FontAwesomeIcons.github),
|
||||||
|
onPressed: () async {
|
||||||
|
final url = Uri.parse(
|
||||||
|
'https://git.mercurio.moe/Mercury/dth-pingpong-mobileapp');
|
||||||
|
if (await canLaunchUrl(url)) {
|
||||||
|
await launchUrl(
|
||||||
|
url,
|
||||||
|
mode: LaunchMode
|
||||||
|
.externalApplication, // Ensures it opens in the browser
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
throw 'Could not launch $url';
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
IconButton(
|
||||||
|
icon: Icon(FontAwesomeIcons.chartSimple),
|
||||||
|
onPressed: () async {
|
||||||
|
final url =
|
||||||
|
Uri.parse('https://kuma.mercurio.moe/status/dthpp');
|
||||||
|
if (await canLaunchUrl(url)) {
|
||||||
|
await launchUrl(
|
||||||
|
url,
|
||||||
|
mode: LaunchMode
|
||||||
|
.externalApplication, // Ensures it opens in the browser
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
throw 'Could not launch $url';
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -13,10 +13,8 @@ class _CreateMatchPageState extends State<CreateMatchPage> {
|
||||||
String? _matchId;
|
String? _matchId;
|
||||||
bool _isLoading = false;
|
bool _isLoading = false;
|
||||||
|
|
||||||
final String _createMatchApiUrl =
|
final String _createMatchApiUrl = '$apiurl/creatematch';
|
||||||
'$apiurl/creatematch'; // Replace with your API endpoint
|
|
||||||
|
|
||||||
// Method to create a match
|
|
||||||
Future<void> _createMatch() async {
|
Future<void> _createMatch() async {
|
||||||
setState(() {
|
setState(() {
|
||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
|
|
|
@ -15,6 +15,8 @@ dependencies:
|
||||||
http: ^1.2.2
|
http: ^1.2.2
|
||||||
logger: ^2.5.0
|
logger: ^2.5.0
|
||||||
package_info: ^2.0.2
|
package_info: ^2.0.2
|
||||||
|
font_awesome_flutter: ^10.8.0
|
||||||
|
url_launcher: ^6.3.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
Loading…
Reference in a new issue