From e02ab259b658c4acf6aaf799cd32e93a36b620dd Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Fri, 12 Mar 2021 16:19:07 +0100 Subject: [PATCH] Updated conversations policy --- lib/helpers/server_config_helper.dart | 68 +++++++++++++++------------ lib/models/server_config.dart | 28 ++++++++++- pubspec.lock | 2 +- 3 files changed, 66 insertions(+), 32 deletions(-) diff --git a/lib/helpers/server_config_helper.dart b/lib/helpers/server_config_helper.dart index c2e2511..47a7ed6 100644 --- a/lib/helpers/server_config_helper.dart +++ b/lib/helpers/server_config_helper.dart @@ -19,38 +19,46 @@ class ServerConfigurationHelper { final passwordPolicy = response["password_policy"]; final dataConservationPolicy = response["data_conservation_policy"]; + final conversationsPolicy = response["conversations_policy"]; _config = ServerConfig( - minSupportedMobileVersion: - Version.parse(response["min_supported_mobile_version"]), - termsURL: response["terms_url"], - playStoreURL: response["play_store_url"], - androidDirectDownloadURL: response["android_direct_download_url"], - passwordPolicy: PasswordPolicy( - allowMailInPassword: passwordPolicy["allow_email_in_password"], - allowNameInPassword: passwordPolicy["allow_name_in_password"], - minPasswordLength: passwordPolicy["min_password_length"], - minNumberUpperCaseLetters: - passwordPolicy["min_number_upper_case_letters"], - minNumberLowerCaseLetters: - passwordPolicy["min_number_lower_case_letters"], - minNumberDigits: passwordPolicy["min_number_digits"], - minNumberSpecialCharacters: - passwordPolicy["min_number_special_characters"], - minCategoriesPresence: passwordPolicy["min_categories_presence"], - ), - 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"], - ), - ); + minSupportedMobileVersion: + Version.parse(response["min_supported_mobile_version"]), + termsURL: response["terms_url"], + playStoreURL: response["play_store_url"], + androidDirectDownloadURL: response["android_direct_download_url"], + passwordPolicy: PasswordPolicy( + allowMailInPassword: passwordPolicy["allow_email_in_password"], + allowNameInPassword: passwordPolicy["allow_name_in_password"], + minPasswordLength: passwordPolicy["min_password_length"], + minNumberUpperCaseLetters: + passwordPolicy["min_number_upper_case_letters"], + minNumberLowerCaseLetters: + passwordPolicy["min_number_lower_case_letters"], + minNumberDigits: passwordPolicy["min_number_digits"], + minNumberSpecialCharacters: + passwordPolicy["min_number_special_characters"], + minCategoriesPresence: passwordPolicy["min_categories_presence"], + ), + 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"], + ), + conversationsPolicy: ConversationsPolicy( + minMessageLen: conversationsPolicy["min_message_len"], + maxMessageLen: conversationsPolicy["max_message_len"], + allowedFilesType: conversationsPolicy["allowed_files_type"].cast(), + filesMaxSize: conversationsPolicy["files_max_size"], + writingEventInterval: conversationsPolicy["writing_event_interval"], + writingEventLifetime: conversationsPolicy["writing_event_lifetime"], + )); } /// Get current server configuration, throwing if it is not loaded yet diff --git a/lib/models/server_config.dart b/lib/models/server_config.dart index ebcf4ed..5e48390 100644 --- a/lib/models/server_config.dart +++ b/lib/models/server_config.dart @@ -57,6 +57,29 @@ class ServerDataConservationPolicy { assert(minLikesLifetime != null); } +class ConversationsPolicy { + final int minMessageLen; + final int maxMessageLen; + final List allowedFilesType; + final int filesMaxSize; + final int writingEventInterval; + final int writingEventLifetime; + + const ConversationsPolicy({ + @required this.minMessageLen, + @required this.maxMessageLen, + @required this.allowedFilesType, + @required this.filesMaxSize, + @required this.writingEventInterval, + @required this.writingEventLifetime, + }) : assert(minMessageLen != null), + assert(maxMessageLen != null), + assert(allowedFilesType != null), + assert(filesMaxSize != null), + assert(writingEventInterval != null), + assert(writingEventLifetime != null); +} + class ServerConfig { final Version minSupportedMobileVersion; final String termsURL; @@ -64,6 +87,7 @@ class ServerConfig { final String androidDirectDownloadURL; final PasswordPolicy passwordPolicy; final ServerDataConservationPolicy dataConservationPolicy; + final ConversationsPolicy conversationsPolicy; const ServerConfig({ @required this.minSupportedMobileVersion, @@ -72,10 +96,12 @@ class ServerConfig { @required this.androidDirectDownloadURL, @required this.passwordPolicy, @required this.dataConservationPolicy, + @required this.conversationsPolicy, }) : assert(minSupportedMobileVersion != null), assert(termsURL != null), assert(playStoreURL != null), assert(androidDirectDownloadURL != null), assert(passwordPolicy != null), - assert(dataConservationPolicy != null); + assert(dataConservationPolicy != null), + assert(conversationsPolicy != null); } diff --git a/pubspec.lock b/pubspec.lock index df40425..fc39f68 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -290,7 +290,7 @@ packages: source: hosted version: "0.1.1" image: - dependency: "direct main" + dependency: transitive description: name: image url: "https://pub.dartlang.org"