didvan-app/lib/providers/user_provider.dart

56 lines
1.5 KiB
Dart

import 'dart:io';
import 'package:didvan/models/enums.dart';
import 'package:didvan/models/user.dart';
import 'package:didvan/providers/core_provider.dart';
import 'package:didvan/services/network/request.dart';
import 'package:didvan/services/network/request_helper.dart';
import 'package:hive/hive.dart';
class UserProvider extends CoreProvier {
late User user;
Future<String?> setAndGetToken({String? token}) async {
final box = await Hive.openBox('autherization');
if (token != null) {
await box.put('token', token);
} else {
return box.toMap()['token'];
}
}
Future<void> getUserInfo() async {
final RequestService service = RequestService(RequestHelper.userInfo);
await service.httpGet();
if (service.isSuccess) {
user = User.fromJson(service.result['user']);
return;
}
throw 'Getting user from API failed!';
}
Future<bool> setProfilePhoto(File file) async {
appState = AppState.isolatedBusy;
final RequestService service =
RequestService(RequestHelper.updateUserProfile);
await service.multipart(file);
if (service.isSuccess) {
appState = AppState.idle;
return true;
}
appState = AppState.failed;
return false;
}
Future<void> setUsername(String username) async {
appState = AppState.isolatedBusy;
final RequestService service = RequestService(
RequestHelper.updateUsername,
body: {'username': username},
);
await service.put();
if (service.isSuccess) {
// appState = app
}
}
}