1
0
mirror of https://github.com/go-vikunja/app synced 2024-06-02 18:49:47 +00:00
app-mirror-github/lib/api/user_implementation.dart

66 lines
2.0 KiB
Dart
Raw Normal View History

2018-09-17 13:35:57 +00:00
import 'dart:async';
2018-09-22 20:56:16 +00:00
import 'package:vikunja_app/api/client.dart';
import 'package:vikunja_app/api/service.dart';
import 'package:vikunja_app/models/user.dart';
import 'package:vikunja_app/service/services.dart';
2018-09-17 13:35:57 +00:00
class UserAPIService extends APIService implements UserService {
UserAPIService(Client client) : super(client);
2018-09-17 13:35:57 +00:00
@override
Future<UserTokenPair> login(String username, password,
{bool rememberMe = false, String? totp}) async {
2023-05-10 20:20:01 +00:00
var body = {
'long_token': rememberMe,
'password': password,
'username': username,
2023-05-10 20:20:01 +00:00
};
if (totp != null) {
2023-05-10 20:20:01 +00:00
body['totp_passcode'] = totp;
}
2023-05-10 20:20:01 +00:00
var response = await client.post('/login', body: body);
var token = response?.body["token"];
if (token == null || response == null || response.error != null)
2023-05-10 20:20:01 +00:00
return Future.value(UserTokenPair(null, null,
error: response != null ? response.body["code"] : 0,
errorString:
response != null ? response.body["message"] : "Login error"));
client.configure(token: token);
return UserAPIService(client)
2018-09-17 13:35:57 +00:00
.getCurrentUser()
.then((user) => UserTokenPair(user, token));
}
2018-10-08 14:26:01 +00:00
@override
Future<UserTokenPair?> register(String username, email, password) async {
2018-10-08 14:26:01 +00:00
var newUser = await client.post('/register', body: {
'username': username,
'email': email,
'password': password
}).then((resp) => resp?.body['username']);
2018-10-08 14:26:01 +00:00
return login(newUser, password);
}
2018-09-17 13:35:57 +00:00
@override
Future<User> getCurrentUser() {
return client.get('/user').then((map) => User.fromJson(map?.body));
2018-09-17 13:35:57 +00:00
}
2023-12-23 21:38:16 +00:00
@override
Future<UserSettings?> setCurrentUserSettings(
UserSettings userSettings) async {
return client
.post('/user/settings/general', body: userSettings.toJson())
.then((response) {
if (response == null) return null;
2023-12-23 21:38:16 +00:00
return userSettings;
});
}
@override
Future<String?> getToken() {
return client.post('/user/token').then((value) => value?.body["token"]);
}
2018-09-17 13:35:57 +00:00
}