Compare commits

...

3 Commits

Author SHA1 Message Date
Pascal Abresch 32f39471b8 implemented logout, fixed room view 2019-07-30 14:53:18 +02:00
Pascal Abresch 3426f397ba fixed references 2019-07-30 13:28:52 +02:00
Pascal Abresch 365f1794c0 moved files 2019-07-29 15:22:49 +02:00
4 changed files with 31 additions and 27 deletions

View File

@ -3,6 +3,7 @@ import 'dart:convert';
import 'package:meta/meta.dart';
class Matrix {
// TODO Error handeling
static Future<String> request({@required Uri uri, @required final String method, final String accessToken, final String jsonPayload}) async {
final client = new HttpClient();
@ -23,7 +24,7 @@ class Matrix {
}
}
static Future<String> requestsend({@required Uri uri, @required final function, final String accessToken, final String jsonPayload}) async {
static Future<String> requestsend({@required Uri uri, @required final function, final String accessToken, final String jsonPayload}) async {
return await function(uri).then((req) {
if (accessToken != null) {
req.headers.add("Authorization", "Bearer " + accessToken);
@ -66,4 +67,9 @@ class Matrix {
return json["versions"].cast<String>();
});
}
static Future<void> logout({@required Uri uri, @required final String accessToken}) async {
request(uri: uri.replace(path:"/_matrix/client/r0/logout"), method: "POST", accessToken: accessToken);
}
}

View File

@ -2,7 +2,7 @@ import 'dart:io';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'main.dart';
import 'roomlist';
class LoginPage extends StatefulWidget {
@ -24,10 +24,10 @@ class _LoginPageState extends State<LoginPage> {
String _failureMessage = "";
void _showMainView() {
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (BuildContext context) => MyHomePage(settings: widget.settings)));
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (BuildContext context) => MyHomePage(settings: widget.settings)));
}
void _doLogin() async {
var client = new HttpClient();
await client.postUrl(Uri.parse(_homeServer)

View File

@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'login.dart';
import 'matrix/cs-r0.5.0';
import 'page/room.dart';
import 'login';
import '../matrix/cs-r0.5.0';
import 'room';
void main() async {
var settings = await SharedPreferences.getInstance();
@ -63,7 +63,10 @@ class _MyHomePageState extends State<MyHomePage> {
var set = widget.settings;
set.setBool("logged_in", false);
// TODO Actually invalidate access_token
Matrix.logout(uri: Uri.parse(set.getString("home_server")) , accessToken: set.getString("access_token"));
set.setString("access_token", "");
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (BuildContext context) => LoginPage(settings: widget.settings)));
}
void initState() {
@ -75,26 +78,21 @@ class _MyHomePageState extends State<MyHomePage> {
List<Widget> roomEntries(roomMap) {
List<Widget> newWidgets = new List<Widget>();
roomMap.forEach((roomid, roomname) {
if (roomname != null && roomname != "") {
newWidgets.add(
ListTile(
title: Text(roomname),
onTap: () {
print(roomid);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RoomPage(settings: widget.settings, roomid: roomid, roomname: roomname),
),
);
if (roomname == null || roomname == "") { roomname = roomid; }
newWidgets.add(
ListTile(
title: Text((roomname)),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => RoomPage(settings: widget.settings, roomid: roomid, roomname: roomname),
),
);
}
)
);
} else {
newWidgets.add(ListTile( title: Text(roomid), onTap: () { print(roomid); }));
}
}
)
);
});
return newWidgets;
}