93 lines
2.5 KiB
Dart
93 lines
2.5 KiB
Dart
|
import 'dart:async';
|
||
|
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter/widgets.dart';
|
||
|
import 'package:photos/core/configuration.dart';
|
||
|
import 'package:photos/core/event_bus.dart';
|
||
|
import 'package:photos/events/user_authenticated_event.dart';
|
||
|
import 'package:photos/ui/common_elements.dart';
|
||
|
import 'package:photos/ui/email_entry_page.dart';
|
||
|
import 'package:photos/ui/passphrase_entry_page.dart';
|
||
|
import 'package:photos/ui/passphrase_reentry_page.dart';
|
||
|
|
||
|
class SignInHeader extends StatefulWidget {
|
||
|
const SignInHeader({Key key}) : super(key: key);
|
||
|
|
||
|
@override
|
||
|
_SignInHeaderState createState() => _SignInHeaderState();
|
||
|
}
|
||
|
|
||
|
class _SignInHeaderState extends State<SignInHeader> {
|
||
|
StreamSubscription _userAuthEventSubscription;
|
||
|
|
||
|
@override
|
||
|
void initState() {
|
||
|
_userAuthEventSubscription =
|
||
|
Bus.instance.on<UserAuthenticatedEvent>().listen((event) {
|
||
|
setState(() {});
|
||
|
});
|
||
|
super.initState();
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
void dispose() {
|
||
|
_userAuthEventSubscription.cancel();
|
||
|
super.dispose();
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
if (Configuration.instance.hasConfiguredAccount()) {
|
||
|
return Container();
|
||
|
}
|
||
|
return Container(
|
||
|
padding: EdgeInsets.all(8),
|
||
|
child: Column(
|
||
|
children: [
|
||
|
Text(
|
||
|
"Preserve Your Memories",
|
||
|
style: TextStyle(
|
||
|
fontSize: 16,
|
||
|
),
|
||
|
),
|
||
|
Container(
|
||
|
width: double.infinity,
|
||
|
height: 64,
|
||
|
padding: EdgeInsets.all(8),
|
||
|
child: button(
|
||
|
"Sign In",
|
||
|
fontSize: 18,
|
||
|
onPressed: () {
|
||
|
var page;
|
||
|
if (Configuration.instance.getToken() == null) {
|
||
|
page = EmailEntryPage();
|
||
|
} else {
|
||
|
// No key
|
||
|
if (Configuration.instance.getKeyAttributes() != null) {
|
||
|
// Yet to set or decrypt the key
|
||
|
page = PassphraseReentryPage();
|
||
|
} else {
|
||
|
// Never had a key
|
||
|
page = PassphraseEntryPage();
|
||
|
}
|
||
|
}
|
||
|
Navigator.of(context).push(
|
||
|
MaterialPageRoute(
|
||
|
builder: (BuildContext context) {
|
||
|
return page;
|
||
|
},
|
||
|
),
|
||
|
);
|
||
|
},
|
||
|
),
|
||
|
),
|
||
|
Padding(padding: EdgeInsets.all(4)),
|
||
|
Divider(
|
||
|
height: 2,
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|