Add feature flags for private groups, forums and blogs

This commit is contained in:
Sebastian Kürten
2022-01-06 11:04:18 +01:00
parent 65be2d2b26
commit 707802c459
10 changed files with 109 additions and 26 deletions

View File

@@ -10,4 +10,10 @@ public interface FeatureFlags {
boolean shouldEnableProfilePictures();
boolean shouldEnableDisappearingMessages();
boolean shouldEnablePrivateGroupsInCore();
boolean shouldEnableForumsInCore();
boolean shouldEnableBlogsInCore();
}

View File

@@ -24,6 +24,21 @@ public class TestFeatureFlagModule {
public boolean shouldEnableDisappearingMessages() {
return true;
}
@Override
public boolean shouldEnablePrivateGroupsInCore() {
return true;
}
@Override
public boolean shouldEnableForumsInCore() {
return true;
}
@Override
public boolean shouldEnableBlogsInCore() {
return true;
}
};
}
}

View File

@@ -339,6 +339,21 @@ public class AppModule {
public boolean shouldEnableDisappearingMessages() {
return true;
}
@Override
public boolean shouldEnablePrivateGroupsInCore() {
return true;
}
@Override
public boolean shouldEnableForumsInCore() {
return true;
}
@Override
public boolean shouldEnableBlogsInCore() {
return true;
}
};
}
}

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.blog;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.data.MetadataEncoder;
@@ -35,7 +36,10 @@ public class BlogModule {
@Singleton
BlogManager provideBlogManager(BlogManagerImpl blogManager,
LifecycleManager lifecycleManager, ContactManager contactManager,
ValidationManager validationManager) {
ValidationManager validationManager, FeatureFlags featureFlags) {
if (!featureFlags.shouldEnableBlogsInCore()) {
return blogManager;
}
lifecycleManager.registerOpenDatabaseHook(blogManager);
contactManager.registerContactHook(blogManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, MAJOR_VERSION,
@@ -60,12 +64,14 @@ public class BlogModule {
ValidationManager validationManager, GroupFactory groupFactory,
MessageFactory messageFactory, BlogFactory blogFactory,
ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock) {
Clock clock, FeatureFlags featureFlags) {
BlogPostValidator validator = new BlogPostValidator(groupFactory,
messageFactory, blogFactory, clientHelper, metadataEncoder,
clock);
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
if (featureFlags.shouldEnableBlogsInCore()) {
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
}
return validator;
}

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.feed;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.event.EventBus;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.briar.api.blog.BlogManager;
@@ -23,7 +24,10 @@ public class FeedModule {
@Singleton
FeedManager provideFeedManager(FeedManagerImpl feedManager,
LifecycleManager lifecycleManager, EventBus eventBus,
BlogManager blogManager) {
BlogManager blogManager, FeatureFlags featureFlags) {
if (!featureFlags.shouldEnableBlogsInCore()) {
return feedManager;
}
lifecycleManager.registerOpenDatabaseHook(feedManager);
eventBus.addListener(feedManager);
blogManager.registerRemoveBlogHook(feedManager);

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.forum;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.data.MetadataEncoder;
import org.briarproject.bramble.api.sync.validation.ValidationManager;
@@ -30,7 +31,11 @@ public class ForumModule {
@Provides
@Singleton
ForumManager provideForumManager(ForumManagerImpl forumManager,
ValidationManager validationManager) {
ValidationManager validationManager,
FeatureFlags featureFlags) {
if (!featureFlags.shouldEnableForumsInCore()) {
return forumManager;
}
validationManager.registerIncomingMessageHook(CLIENT_ID, MAJOR_VERSION,
forumManager);
return forumManager;
@@ -51,11 +56,14 @@ public class ForumModule {
@Singleton
ForumPostValidator provideForumPostValidator(
ValidationManager validationManager, ClientHelper clientHelper,
MetadataEncoder metadataEncoder, Clock clock) {
MetadataEncoder metadataEncoder, Clock clock,
FeatureFlags featureFlags) {
ForumPostValidator validator = new ForumPostValidator(clientHelper,
metadataEncoder, clock);
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
if (featureFlags.shouldEnableForumsInCore()) {
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
}
return validator;
}

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.privategroup;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.data.MetadataEncoder;
import org.briarproject.bramble.api.sync.validation.ValidationManager;
@@ -32,7 +33,11 @@ public class PrivateGroupModule {
@Singleton
PrivateGroupManager provideGroupManager(
PrivateGroupManagerImpl groupManager,
ValidationManager validationManager) {
ValidationManager validationManager,
FeatureFlags featureFlags) {
if (!featureFlags.shouldEnablePrivateGroupsInCore()) {
return groupManager;
}
validationManager.registerIncomingMessageHook(CLIENT_ID, MAJOR_VERSION,
groupManager);
return groupManager;
@@ -56,12 +61,14 @@ public class PrivateGroupModule {
PrivateGroupFactory privateGroupFactory,
ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock, GroupInvitationFactory groupInvitationFactory,
ValidationManager validationManager) {
ValidationManager validationManager, FeatureFlags featureFlags) {
GroupMessageValidator validator = new GroupMessageValidator(
privateGroupFactory, clientHelper, metadataEncoder, clock,
groupInvitationFactory);
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
if (featureFlags.shouldEnablePrivateGroupsInCore()) {
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
}
return validator;
}

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.privategroup.invitation;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.cleanup.CleanupManager;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.ContactManager;
@@ -43,7 +44,10 @@ public class GroupInvitationModule {
PrivateGroupManager privateGroupManager,
ConversationManager conversationManager,
ClientVersioningManager clientVersioningManager,
CleanupManager cleanupManager) {
CleanupManager cleanupManager, FeatureFlags featureFlags) {
if (!featureFlags.shouldEnablePrivateGroupsInCore()) {
return groupInvitationManager;
}
lifecycleManager.registerOpenDatabaseHook(groupInvitationManager);
validationManager.registerIncomingMessageHook(CLIENT_ID, MAJOR_VERSION,
groupInvitationManager);
@@ -69,12 +73,15 @@ public class GroupInvitationModule {
ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock, PrivateGroupFactory privateGroupFactory,
MessageEncoder messageEncoder,
ValidationManager validationManager) {
ValidationManager validationManager,
FeatureFlags featureFlags) {
GroupInvitationValidator validator = new GroupInvitationValidator(
clientHelper, metadataEncoder, clock, privateGroupFactory,
messageEncoder);
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
if (featureFlags.shouldEnablePrivateGroupsInCore()) {
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
validator);
}
return validator;
}

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.sharing;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.cleanup.CleanupManager;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.contact.ContactManager;
@@ -60,12 +61,15 @@ public class SharingModule {
BlogSharingValidator provideBlogSharingValidator(
ValidationManager validationManager, MessageEncoder messageEncoder,
ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock, BlogFactory blogFactory) {
Clock clock, BlogFactory blogFactory, FeatureFlags featureFlags) {
BlogSharingValidator validator = new BlogSharingValidator(
messageEncoder, clientHelper, metadataEncoder, clock,
blogFactory);
validationManager.registerMessageValidator(BlogSharingManager.CLIENT_ID,
BlogSharingManager.MAJOR_VERSION, validator);
if (featureFlags.shouldEnableBlogsInCore()) {
validationManager.registerMessageValidator(
BlogSharingManager.CLIENT_ID,
BlogSharingManager.MAJOR_VERSION, validator);
}
return validator;
}
@@ -77,7 +81,10 @@ public class SharingModule {
ConversationManager conversationManager, BlogManager blogManager,
ClientVersioningManager clientVersioningManager,
BlogSharingManagerImpl blogSharingManager,
CleanupManager cleanupManager) {
CleanupManager cleanupManager, FeatureFlags featureFlags) {
if (!featureFlags.shouldEnableBlogsInCore()) {
return blogSharingManager;
}
lifecycleManager.registerOpenDatabaseHook(blogSharingManager);
contactManager.registerContactHook(blogSharingManager);
validationManager.registerIncomingMessageHook(
@@ -122,13 +129,15 @@ public class SharingModule {
ForumSharingValidator provideForumSharingValidator(
ValidationManager validationManager, MessageEncoder messageEncoder,
ClientHelper clientHelper, MetadataEncoder metadataEncoder,
Clock clock, ForumFactory forumFactory) {
Clock clock, ForumFactory forumFactory, FeatureFlags featureFlags) {
ForumSharingValidator validator = new ForumSharingValidator(
messageEncoder, clientHelper, metadataEncoder, clock,
forumFactory);
validationManager.registerMessageValidator(
ForumSharingManager.CLIENT_ID,
ForumSharingManager.MAJOR_VERSION, validator);
if (featureFlags.shouldEnableForumsInCore()) {
validationManager.registerMessageValidator(
ForumSharingManager.CLIENT_ID,
ForumSharingManager.MAJOR_VERSION, validator);
}
return validator;
}
@@ -140,7 +149,10 @@ public class SharingModule {
ConversationManager conversationManager, ForumManager forumManager,
ClientVersioningManager clientVersioningManager,
ForumSharingManagerImpl forumSharingManager,
CleanupManager cleanupManager) {
CleanupManager cleanupManager, FeatureFlags featureFlags) {
if (!featureFlags.shouldEnableForumsInCore()) {
return forumSharingManager;
}
lifecycleManager.registerOpenDatabaseHook(forumSharingManager);
contactManager.registerContactHook(forumSharingManager);
validationManager.registerIncomingMessageHook(

View File

@@ -107,5 +107,8 @@ internal class HeadlessModule(private val appDir: File) {
override fun shouldEnableImageAttachments() = false
override fun shouldEnableProfilePictures() = false
override fun shouldEnableDisappearingMessages() = false
override fun shouldEnablePrivateGroupsInCore() = false
override fun shouldEnableForumsInCore() = true
override fun shouldEnableBlogsInCore() = true
}
}