Skip to content

Commit

Permalink
10 - New: Logout;
Browse files Browse the repository at this point in the history
10 - New: Alignment by owner;
10 - New: Order by created;
10 - New: Image upload loader;
  • Loading branch information
90lucasgabriel committed Apr 18, 2021
1 parent ebcdbc0 commit 783761f
Showing 1 changed file with 43 additions and 7 deletions.
50 changes: 43 additions & 7 deletions lib/ui/chat_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ class ChatScreen extends StatefulWidget {

class _ChatScreenState extends State<ChatScreen> {
final GoogleSignIn googleSignin = GoogleSignIn();

User _user;
bool _isLoading = false;

Future<User> _getUser() async {
try {
Expand Down Expand Up @@ -46,7 +48,7 @@ class _ChatScreenState extends State<ChatScreen> {

if (user == null) {
Widget snackbar = SnackBar(
content: Text('Não foi possível realizar o login. Tente novamente.'),
content: Text('Login error. Try again.'),
backgroundColor: Colors.red,
);

Expand All @@ -56,14 +58,18 @@ class _ChatScreenState extends State<ChatScreen> {
return;
}

print(user);
Map<String, dynamic> data = {
'senderUid': user.uid,
'senderName': user.displayName,
'senderPhotoUrl': user.photoURL,
'createdAt': Timestamp.now(),
};

if (file != null) {
setState(() {
_isLoading = true;
});

UploadTask task = FirebaseStorage.instance
.ref()
.child(DateTime.now().millisecondsSinceEpoch.toString())
Expand All @@ -72,6 +78,10 @@ class _ChatScreenState extends State<ChatScreen> {
TaskSnapshot taskSnapshot = await task.whenComplete(() {});
String url = await taskSnapshot.ref.getDownloadURL();
data['imageUrl'] = url;

setState(() {
_isLoading = false;
});
}

if (value != null) {
Expand All @@ -86,22 +96,44 @@ class _ChatScreenState extends State<ChatScreen> {
super.initState();

FirebaseAuth.instance.authStateChanges().listen((user) {
_user = user;
setState(() {
_user = user;
});
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Chat Flutter'),
title: Text(
_user != null ? 'Hello, ${_user.displayName}' : 'Chat Flutter'),
actions: [
if (_user != null)
IconButton(
icon: Icon(Icons.logout),
onPressed: () {
FirebaseAuth.instance.signOut();
GoogleSignIn().signOut();

Widget snackbar = SnackBar(
content: Text('You logged out.'),
);

ScaffoldMessenger.of(context).removeCurrentSnackBar();
ScaffoldMessenger.of(context).showSnackBar(snackbar);
},
),
],
),
body: Column(
children: [
Expanded(
child: StreamBuilder<QuerySnapshot>(
stream:
FirebaseFirestore.instance.collection('messages').snapshots(),
stream: FirebaseFirestore.instance
.collection('messages')
.orderBy('createdAt')
.snapshots(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
Expand All @@ -117,13 +149,17 @@ class _ChatScreenState extends State<ChatScreen> {
itemCount: documentList.length,
reverse: true,
itemBuilder: (context, index) {
return ChatMessage(documentList[index].data(), true);
return ChatMessage(
documentList[index].data(),
documentList[index].data()['senderUid'] ==
_user?.uid);
},
);
}
},
),
),
if (_isLoading) LinearProgressIndicator(),
Input(_sendMessage),
],
),
Expand Down

0 comments on commit 783761f

Please sign in to comment.