feat: Implement switching between accounts (multi user support), still WIP

This commit is contained in:
Anton Stubenbord
2023-04-21 01:32:43 +02:00
parent 1334f546ee
commit 95dd0a2405
50 changed files with 1055 additions and 721 deletions

View File

@@ -0,0 +1,14 @@
import 'package:json_annotation/json_annotation.dart';
part 'paperless_ui_settings_model.g.dart';
@JsonSerializable(fieldRename: FieldRename.snake)
class PaperlessUiSettingsModel {
final String displayName;
PaperlessUiSettingsModel({required this.displayName});
factory PaperlessUiSettingsModel.fromJson(Map<String, dynamic> json) =>
_$PaperlessUiSettingsModelFromJson(json);
Map<String, dynamic> toJson() => _$PaperlessUiSettingsModelToJson(this);
}

View File

@@ -1,7 +1,9 @@
import 'package:paperless_api/src/models/paperless_server_information_model.dart';
import 'package:paperless_api/src/models/paperless_server_statistics_model.dart';
import 'package:paperless_api/src/models/paperless_ui_settings_model.dart';
abstract class PaperlessServerStatsApi {
Future<PaperlessServerInformationModel> getServerInformation();
Future<PaperlessServerStatisticsModel> getServerStatistics();
Future<PaperlessUiSettingsModel> getUiSettings();
}

View File

@@ -5,6 +5,7 @@ import 'package:http/http.dart';
import 'package:paperless_api/src/models/paperless_server_exception.dart';
import 'package:paperless_api/src/models/paperless_server_information_model.dart';
import 'package:paperless_api/src/models/paperless_server_statistics_model.dart';
import 'package:paperless_api/src/models/paperless_ui_settings_model.dart';
import 'paperless_server_stats_api.dart';
@@ -21,15 +22,12 @@ class PaperlessServerStatsApiImpl implements PaperlessServerStatsApi {
@override
Future<PaperlessServerInformationModel> getServerInformation() async {
final response = await client.get("/api/ui_settings/");
final version = response
.headers[PaperlessServerInformationModel.versionHeader]?.first ??
'unknown';
final apiVersion = int.tryParse(response
.headers[PaperlessServerInformationModel.apiVersionHeader]?.first ??
'1');
final version =
response.headers[PaperlessServerInformationModel.versionHeader]?.first ?? 'unknown';
final apiVersion = int.tryParse(
response.headers[PaperlessServerInformationModel.apiVersionHeader]?.first ?? '1');
final String username = response.data['username'];
final String host = response
.headers[PaperlessServerInformationModel.hostHeader]?.first ??
final String host = response.headers[PaperlessServerInformationModel.hostHeader]?.first ??
response.headers[PaperlessServerInformationModel.hostHeader]?.first ??
('${response.requestOptions.uri.host}:${response.requestOptions.uri.port}');
return PaperlessServerInformationModel(
@@ -48,4 +46,13 @@ class PaperlessServerStatsApiImpl implements PaperlessServerStatsApi {
}
throw const PaperlessServerException.unknown();
}
@override
Future<PaperlessUiSettingsModel> getUiSettings() async {
final response = await client.get("/api/ui_settings/");
if (response.statusCode == 200) {
return PaperlessUiSettingsModel.fromJson(response.data);
}
throw const PaperlessServerException.unknown();
}
}