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 shouldEnableProfilePictures();
boolean shouldEnableDisappearingMessages(); boolean shouldEnableDisappearingMessages();
boolean shouldEnablePrivateGroupsInCore();
boolean shouldEnableForumsInCore();
boolean shouldEnableBlogsInCore();
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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