80 lines
2.5 KiB
Dart
80 lines
2.5 KiB
Dart
import 'dart:async';
|
|
import 'dart:convert';
|
|
import 'dart:core';
|
|
import 'dart:io';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:invoiceninja/redux/static/static_state.dart';
|
|
import 'package:invoiceninja/redux/auth/auth_state.dart';
|
|
import 'package:invoiceninja/redux/company/company_state.dart';
|
|
import 'package:invoiceninja/redux/ui/ui_state.dart';
|
|
import 'package:meta/meta.dart';
|
|
import 'package:invoiceninja/data/models/serializers.dart';
|
|
import 'package:invoiceninja/data/file_storage.dart';
|
|
|
|
class PersistenceRepository {
|
|
final FileStorage fileStorage;
|
|
|
|
const PersistenceRepository({
|
|
@required this.fileStorage,
|
|
});
|
|
|
|
|
|
Future<File> saveCompanyState(CompanyState state) async {
|
|
final data = serializers.serializeWith(CompanyState.serializer, state);
|
|
return await fileStorage.save(json.encode(data));
|
|
}
|
|
|
|
Future<CompanyState> loadCompanyState() async {
|
|
final String data = await fileStorage.load();
|
|
return serializers.deserializeWith(CompanyState.serializer, json.decode(data));
|
|
//return compute(_deserialize, data);
|
|
}
|
|
|
|
|
|
Future<File> saveAuthState(AuthState state) async {
|
|
final data = serializers.serializeWith(AuthState.serializer, state);
|
|
return await fileStorage.save(json.encode(data));
|
|
}
|
|
|
|
Future<AuthState> loadAuthState() async {
|
|
final String data = await fileStorage.load();
|
|
return serializers.deserializeWith(AuthState.serializer, json.decode(data));
|
|
}
|
|
|
|
|
|
Future<File> saveStaticState(StaticState state) async {
|
|
final data = serializers.serializeWith(StaticState.serializer, state);
|
|
return await fileStorage.save(json.encode(data));
|
|
}
|
|
|
|
Future<StaticState> loadStaticState() async {
|
|
final String data = await fileStorage.load();
|
|
return serializers.deserializeWith(StaticState.serializer, json.decode(data));
|
|
}
|
|
|
|
|
|
Future<File> saveUIState(UIState state) async {
|
|
final data = serializers.serializeWith(UIState.serializer, state);
|
|
return await fileStorage.save(json.encode(data));
|
|
}
|
|
|
|
Future<UIState> loadUIState() async {
|
|
final String data = await fileStorage.load();
|
|
return serializers.deserializeWith(UIState.serializer, json.decode(data));
|
|
}
|
|
|
|
|
|
Future<FileSystemEntity> delete() async {
|
|
return await fileStorage.exists().then((exists) => exists ? fileStorage.delete() : null);
|
|
}
|
|
|
|
Future<bool> exists() async {
|
|
return await fileStorage.exists();
|
|
}
|
|
}
|
|
|
|
/*
|
|
AppState _deserialize(String data) {
|
|
return serializers.deserializeWith(AppState.serializer, json.decode(data));
|
|
}
|
|
*/ |