feat: login key / create account

closes #4
This commit is contained in:
2025-05-12 10:46:46 +01:00
parent a304182e55
commit 658bddbef0
17 changed files with 445 additions and 72 deletions

View File

@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:ndk/shared/nips/nip19/nip19.dart';
import 'package:zap_stream_flutter/login.dart';
import 'package:zap_stream_flutter/main.dart';
import 'package:zap_stream_flutter/theme.dart';
import 'package:zap_stream_flutter/widgets/button.dart';
class LoginInputPage extends StatefulWidget {
const LoginInputPage({super.key});
@override
State<StatefulWidget> createState() => _LoginInputPage();
}
class _LoginInputPage extends State<LoginInputPage> {
final TextEditingController _controller = TextEditingController();
String? _error;
@override
Widget build(BuildContext context) {
return Column(
spacing: 20,
children: [
TextFormField(
controller: _controller,
decoration: InputDecoration(labelText: "npub/nsec"),
),
BasicButton.text(
"Login",
onTap: () async {
try {
final keyData = Nip19.decode(_controller.text);
if (keyData.isNotEmpty) {
loginData.value = LoginAccount.nip19(_controller.text);
context.go("/");
} else {
throw "Invalid key";
}
} catch (e) {
setState(() {
_error = e.toString();
});
}
},
),
if (_error != null)
Text(
_error!,
style: TextStyle(color: WARNING, fontWeight: FontWeight.bold),
),
],
);
}
}