mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 00:05:16 +00:00
Start to integrate data conservation policy
This commit is contained in:
44
lib/helpers/server_config_helper.dart
Normal file
44
lib/helpers/server_config_helper.dart
Normal file
@ -0,0 +1,44 @@
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:comunic/models/server_config.dart';
|
||||
|
||||
/// Server configuration helper
|
||||
///
|
||||
/// @author Pierre Hubert
|
||||
|
||||
class ServerConfigurationHelper {
|
||||
static ServerConfig _config;
|
||||
|
||||
/// Make sure the configuration has been correctly loaded
|
||||
static Future<void> ensureLoaded() async {
|
||||
if (_config != null) return;
|
||||
|
||||
final response =
|
||||
(await APIRequest.withoutLogin("server/config").execWithThrow())
|
||||
.getObject();
|
||||
|
||||
final dataConservationPolicy = response["data_conservation_policy"];
|
||||
|
||||
_config = ServerConfig(
|
||||
dataConservationPolicy: ServerDataConservationPolicy(
|
||||
minInactiveAccountLifetime:
|
||||
dataConservationPolicy["min_inactive_account_lifetime"],
|
||||
minNotificationLifetime:
|
||||
dataConservationPolicy["min_notification_lifetime"],
|
||||
minCommentsLifetime: dataConservationPolicy["min_comments_lifetime"],
|
||||
minPostsLifetime: dataConservationPolicy["min_posts_lifetime"],
|
||||
minConversationMessagesLifetime:
|
||||
dataConservationPolicy["min_conversation_messages_lifetime"],
|
||||
minLikesLifetime: dataConservationPolicy["min_likes_lifetime"],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// Get current server configuration, throwing if it is not loaded yet
|
||||
static ServerConfig get config {
|
||||
if (_config == null)
|
||||
throw Exception(
|
||||
"Trying to access server configuration but it is not loaded yet!");
|
||||
|
||||
return _config;
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
import 'package:comunic/enums/user_page_visibility.dart';
|
||||
import 'package:comunic/models/account_image_settings.dart';
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:comunic/models/data_conservation_policy_settings.dart';
|
||||
import 'package:comunic/models/general_settings.dart';
|
||||
import 'package:comunic/models/new_emoji.dart';
|
||||
import 'package:comunic/models/security_settings.dart';
|
||||
@ -193,4 +194,42 @@ class SettingsHelper {
|
||||
.addString("security_answer_2", newSettings.securityAnswer2)
|
||||
.execWithThrow();
|
||||
}
|
||||
|
||||
/// Get account data conservation policy settings
|
||||
///
|
||||
/// Throws in case of failure
|
||||
static Future<DataConservationPolicySettings>
|
||||
getDataConservationPolicy() async {
|
||||
final response =
|
||||
(await APIRequest.withLogin("settings/get_data_conservation_policy")
|
||||
.execWithThrow())
|
||||
.getObject();
|
||||
|
||||
return DataConservationPolicySettings(
|
||||
inactiveAccountLifeTime: response["inactive_account_lifetime"],
|
||||
notificationLifetime: response["notification_lifetime"],
|
||||
commentsLifetime: response["comments_lifetime"],
|
||||
postsLifetime: response["posts_lifetime"],
|
||||
conversationMessagesLifetime:
|
||||
response["conversation_messages_lifetime"],
|
||||
likesLifetime: response["likes_lifetime"]);
|
||||
}
|
||||
|
||||
/// Apply new data conservation policy settings
|
||||
///
|
||||
/// Throws in case of failure
|
||||
static Future<void> setDataConservationPolicy(
|
||||
String password, DataConservationPolicySettings newSettings) async {
|
||||
await APIRequest(uri: "settings/set_data_conservation_policy", needLogin: true)
|
||||
.addString("password", password)
|
||||
.addInt("inactive_account_lifetime",
|
||||
newSettings.inactiveAccountLifeTime ?? 0)
|
||||
.addInt("notification_lifetime", newSettings.notificationLifetime ?? 0)
|
||||
.addInt("comments_lifetime", newSettings.commentsLifetime ?? 0)
|
||||
.addInt("posts_lifetime", newSettings.postsLifetime ?? 0)
|
||||
.addInt("conversation_messages_lifetime",
|
||||
newSettings.conversationMessagesLifetime ?? 0)
|
||||
.addInt("likes_lifetime", newSettings.likesLifetime ?? 0)
|
||||
.execWithThrow();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user