refactored the activity module

This commit is contained in:
Ernir Erlingsson
2016-11-17 11:05:00 +01:00
parent 37e61c97ea
commit ab91520813
27 changed files with 244 additions and 135 deletions

View File

@@ -4,6 +4,7 @@ import android.app.Activity;
import org.briarproject.android.blogs.BlogActivity; import org.briarproject.android.blogs.BlogActivity;
import org.briarproject.android.blogs.BlogFragment; import org.briarproject.android.blogs.BlogFragment;
import org.briarproject.android.blogs.BlogModule;
import org.briarproject.android.blogs.BlogPostFragment; import org.briarproject.android.blogs.BlogPostFragment;
import org.briarproject.android.blogs.BlogPostPagerFragment; import org.briarproject.android.blogs.BlogPostPagerFragment;
import org.briarproject.android.blogs.FeedFragment; import org.briarproject.android.blogs.FeedFragment;
@@ -15,10 +16,12 @@ import org.briarproject.android.blogs.RssFeedImportActivity;
import org.briarproject.android.blogs.RssFeedManageActivity; import org.briarproject.android.blogs.RssFeedManageActivity;
import org.briarproject.android.blogs.WriteBlogPostActivity; import org.briarproject.android.blogs.WriteBlogPostActivity;
import org.briarproject.android.contact.ContactListFragment; import org.briarproject.android.contact.ContactListFragment;
import org.briarproject.android.contact.ContactModule;
import org.briarproject.android.contact.ConversationActivity; import org.briarproject.android.contact.ConversationActivity;
import org.briarproject.android.forum.CreateForumActivity; import org.briarproject.android.forum.CreateForumActivity;
import org.briarproject.android.forum.ForumActivity; import org.briarproject.android.forum.ForumActivity;
import org.briarproject.android.forum.ForumListFragment; import org.briarproject.android.forum.ForumListFragment;
import org.briarproject.android.forum.ForumModule;
import org.briarproject.android.introduction.ContactChooserFragment; import org.briarproject.android.introduction.ContactChooserFragment;
import org.briarproject.android.introduction.IntroductionActivity; import org.briarproject.android.introduction.IntroductionActivity;
import org.briarproject.android.introduction.IntroductionMessageFragment; import org.briarproject.android.introduction.IntroductionMessageFragment;
@@ -29,14 +32,20 @@ import org.briarproject.android.keyagreement.ShowQrCodeFragment;
import org.briarproject.android.panic.PanicPreferencesActivity; import org.briarproject.android.panic.PanicPreferencesActivity;
import org.briarproject.android.panic.PanicResponderActivity; import org.briarproject.android.panic.PanicResponderActivity;
import org.briarproject.android.privategroup.conversation.GroupActivity; import org.briarproject.android.privategroup.conversation.GroupActivity;
import org.briarproject.android.privategroup.conversation.GroupConversationModule;
import org.briarproject.android.privategroup.creation.CreateGroupActivity; import org.briarproject.android.privategroup.creation.CreateGroupActivity;
import org.briarproject.android.privategroup.creation.CreateGroupFragment; import org.briarproject.android.privategroup.creation.CreateGroupFragment;
import org.briarproject.android.privategroup.creation.CreateGroupMessageFragment; import org.briarproject.android.privategroup.creation.CreateGroupMessageFragment;
import org.briarproject.android.privategroup.creation.GroupCreateModule;
import org.briarproject.android.privategroup.creation.GroupInviteActivity; import org.briarproject.android.privategroup.creation.GroupInviteActivity;
import org.briarproject.android.privategroup.creation.GroupInviteFragment; import org.briarproject.android.privategroup.creation.GroupInviteFragment;
import org.briarproject.android.privategroup.invitation.GroupInvitationActivity; import org.briarproject.android.privategroup.invitation.GroupInvitationActivity;
import org.briarproject.android.privategroup.invitation.GroupInvitationModule;
import org.briarproject.android.privategroup.list.GroupListFragment; import org.briarproject.android.privategroup.list.GroupListFragment;
import org.briarproject.android.privategroup.list.GroupListModule;
import org.briarproject.android.privategroup.memberlist.GroupMemberListActivity; import org.briarproject.android.privategroup.memberlist.GroupMemberListActivity;
import org.briarproject.android.privategroup.memberlist.GroupMemberModule;
import org.briarproject.android.privategroup.reveal.GroupRevealModule;
import org.briarproject.android.privategroup.reveal.RevealContactsActivity; import org.briarproject.android.privategroup.reveal.RevealContactsActivity;
import org.briarproject.android.privategroup.reveal.RevealContactsFragment; import org.briarproject.android.privategroup.reveal.RevealContactsFragment;
import org.briarproject.android.sharing.BlogInvitationActivity; import org.briarproject.android.sharing.BlogInvitationActivity;
@@ -49,13 +58,19 @@ import org.briarproject.android.sharing.ShareBlogMessageFragment;
import org.briarproject.android.sharing.ShareForumActivity; import org.briarproject.android.sharing.ShareForumActivity;
import org.briarproject.android.sharing.ShareForumFragment; import org.briarproject.android.sharing.ShareForumFragment;
import org.briarproject.android.sharing.ShareForumMessageFragment; import org.briarproject.android.sharing.ShareForumMessageFragment;
import org.briarproject.android.sharing.SharingModule;
import org.thoughtcrime.securesms.components.emoji.EmojiProvider; import org.thoughtcrime.securesms.components.emoji.EmojiProvider;
import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel;
import dagger.Component; import dagger.Component;
@ActivityScope @ActivityScope
@Component(modules = ActivityModule.class, @Component(
modules = {ActivityModule.class, ForumModule.class, SharingModule.class,
BlogModule.class, ContactModule.class, GroupListModule.class,
GroupCreateModule.class, GroupInvitationModule.class,
GroupConversationModule.class, GroupMemberModule.class,
GroupRevealModule.class},
dependencies = AndroidComponent.class) dependencies = AndroidComponent.class)
public interface ActivityComponent { public interface ActivityComponent {

View File

@@ -3,10 +3,6 @@ package org.briarproject.android;
import android.app.Activity; import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import org.briarproject.android.blogs.BlogController;
import org.briarproject.android.blogs.BlogControllerImpl;
import org.briarproject.android.blogs.FeedController;
import org.briarproject.android.blogs.FeedControllerImpl;
import org.briarproject.android.controller.BriarController; import org.briarproject.android.controller.BriarController;
import org.briarproject.android.controller.BriarControllerImpl; import org.briarproject.android.controller.BriarControllerImpl;
import org.briarproject.android.controller.ConfigController; import org.briarproject.android.controller.ConfigController;
@@ -19,28 +15,6 @@ import org.briarproject.android.controller.PasswordController;
import org.briarproject.android.controller.PasswordControllerImpl; import org.briarproject.android.controller.PasswordControllerImpl;
import org.briarproject.android.controller.SetupController; import org.briarproject.android.controller.SetupController;
import org.briarproject.android.controller.SetupControllerImpl; import org.briarproject.android.controller.SetupControllerImpl;
import org.briarproject.android.forum.ForumController;
import org.briarproject.android.forum.ForumControllerImpl;
import org.briarproject.android.privategroup.conversation.GroupController;
import org.briarproject.android.privategroup.conversation.GroupControllerImpl;
import org.briarproject.android.privategroup.creation.CreateGroupController;
import org.briarproject.android.privategroup.creation.CreateGroupControllerImpl;
import org.briarproject.android.privategroup.invitation.GroupInvitationController;
import org.briarproject.android.privategroup.invitation.GroupInvitationControllerImpl;
import org.briarproject.android.privategroup.list.GroupListController;
import org.briarproject.android.privategroup.list.GroupListControllerImpl;
import org.briarproject.android.privategroup.memberlist.GroupMemberListController;
import org.briarproject.android.privategroup.memberlist.GroupMemberListControllerImpl;
import org.briarproject.android.privategroup.reveal.RevealContactsController;
import org.briarproject.android.privategroup.reveal.RevealContactsControllerImpl;
import org.briarproject.android.sharing.BlogInvitationController;
import org.briarproject.android.sharing.BlogInvitationControllerImpl;
import org.briarproject.android.sharing.ForumInvitationController;
import org.briarproject.android.sharing.ForumInvitationControllerImpl;
import org.briarproject.android.sharing.ShareBlogController;
import org.briarproject.android.sharing.ShareBlogControllerImpl;
import org.briarproject.android.sharing.ShareForumController;
import org.briarproject.android.sharing.ShareForumControllerImpl;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
@@ -110,100 +84,6 @@ public class ActivityModule {
return dbController; return dbController;
} }
@ActivityScope
@Provides
GroupListController provideGroupListController(
GroupListControllerImpl groupListController) {
return groupListController;
}
@ActivityScope
@Provides
protected CreateGroupController provideCreateGroupController(
CreateGroupControllerImpl createGroupController) {
return createGroupController;
}
@ActivityScope
@Provides
protected GroupController provideGroupController(
GroupControllerImpl groupController) {
activity.addLifecycleController(groupController);
return groupController;
}
@ActivityScope
@Provides
protected GroupInvitationController provideInvitationGroupController(
GroupInvitationControllerImpl groupInvitationController) {
return groupInvitationController;
}
@ActivityScope
@Provides
protected GroupMemberListController provideGroupMemberListController(
GroupMemberListControllerImpl groupMemberListController) {
return groupMemberListController;
}
@ActivityScope
@Provides
protected RevealContactsController provideRevealContactsController(
RevealContactsControllerImpl revealContactsController) {
return revealContactsController;
}
@ActivityScope
@Provides
protected ForumController provideForumController(
ForumControllerImpl forumController) {
activity.addLifecycleController(forumController);
return forumController;
}
@ActivityScope
@Provides
ShareForumController provideShareForumController(
ShareForumControllerImpl shareForumController) {
return shareForumController;
}
@ActivityScope
@Provides
protected ForumInvitationController provideInvitationForumController(
ForumInvitationControllerImpl forumInvitationController) {
activity.addLifecycleController(forumInvitationController);
return forumInvitationController;
}
@ActivityScope
@Provides
protected BlogInvitationController provideInvitationBlogController(
BlogInvitationControllerImpl blogInvitationController) {
activity.addLifecycleController(blogInvitationController);
return blogInvitationController;
}
@ActivityScope
@Provides
BlogController provideBlogController(BlogControllerImpl blogController) {
activity.addLifecycleController(blogController);
return blogController;
}
@ActivityScope
@Provides
ShareBlogController provideShareBlogController(
ShareBlogControllerImpl shareBlogController) {
return shareBlogController;
}
@ActivityScope
@Provides
FeedController provideFeedController(FeedControllerImpl feedController) {
return feedController;
}
@ActivityScope @ActivityScope
@Provides @Provides
NavDrawerController provideNavDrawerController( NavDrawerController provideNavDrawerController(

View File

@@ -8,6 +8,7 @@ import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import org.briarproject.android.controller.ActivityLifecycleController; import org.briarproject.android.controller.ActivityLifecycleController;
import org.briarproject.android.forum.ForumModule;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -43,6 +44,7 @@ public abstract class BaseActivity extends AppCompatActivity
activityComponent = DaggerActivityComponent.builder() activityComponent = DaggerActivityComponent.builder()
.androidComponent(applicationComponent) .androidComponent(applicationComponent)
.activityModule(getActivityModule()) .activityModule(getActivityModule())
.forumModule(getForumModule())
.build(); .build();
injectActivity(activityComponent); injectActivity(activityComponent);
@@ -61,6 +63,10 @@ public abstract class BaseActivity extends AppCompatActivity
return new ActivityModule(this); return new ActivityModule(this);
} }
protected ForumModule getForumModule() {
return new ForumModule();
}
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();

View File

@@ -29,7 +29,7 @@ import javax.inject.Inject;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
public class BlogControllerImpl extends BaseControllerImpl class BlogControllerImpl extends BaseControllerImpl
implements ActivityLifecycleController, BlogController, EventListener { implements ActivityLifecycleController, BlogController, EventListener {
private static final Logger LOG = private static final Logger LOG =

View File

@@ -0,0 +1,25 @@
package org.briarproject.android.blogs;
import org.briarproject.android.ActivityScope;
import org.briarproject.android.BaseActivity;
import dagger.Module;
import dagger.Provides;
@Module
public class BlogModule {
@ActivityScope
@Provides
BlogController provideBlogController(BaseActivity activity,
BlogControllerImpl blogController) {
activity.addLifecycleController(blogController);
return blogController;
}
@ActivityScope
@Provides
FeedController provideFeedController(FeedControllerImpl feedController) {
return feedController;
}
}

View File

@@ -27,7 +27,7 @@ import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static org.briarproject.api.blogs.BlogManager.CLIENT_ID; import static org.briarproject.api.blogs.BlogManager.CLIENT_ID;
public class FeedControllerImpl extends BaseControllerImpl class FeedControllerImpl extends BaseControllerImpl
implements FeedController { implements FeedController {
private static final Logger LOG = private static final Logger LOG =

View File

@@ -0,0 +1,7 @@
package org.briarproject.android.contact;
import dagger.Module;
@Module
public class ContactModule {
}

View File

@@ -32,7 +32,7 @@ import javax.inject.Inject;
import static java.lang.Math.max; import static java.lang.Math.max;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
public class ForumControllerImpl class ForumControllerImpl
extends ThreadListControllerImpl<Forum, ForumItem, ForumPostHeader, ForumPost, ThreadListListener<ForumPostHeader>> extends ThreadListControllerImpl<Forum, ForumItem, ForumPostHeader, ForumPost, ThreadListListener<ForumPostHeader>>
implements ForumController { implements ForumController {

View File

@@ -0,0 +1,20 @@
package org.briarproject.android.forum;
import org.briarproject.android.ActivityScope;
import org.briarproject.android.BaseActivity;
import dagger.Module;
import dagger.Provides;
@Module
public class ForumModule {
@ActivityScope
@Provides
ForumController provideForumController(BaseActivity activity,
ForumControllerImpl forumController) {
activity.addLifecycleController(forumController);
return forumController;
}
}

View File

@@ -36,7 +36,7 @@ import javax.inject.Inject;
import static java.lang.Math.max; import static java.lang.Math.max;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
public class GroupControllerImpl extends class GroupControllerImpl extends
ThreadListControllerImpl<PrivateGroup, GroupMessageItem, GroupMessageHeader, GroupMessage, GroupListener> ThreadListControllerImpl<PrivateGroup, GroupMessageItem, GroupMessageHeader, GroupMessage, GroupListener>
implements GroupController { implements GroupController {

View File

@@ -0,0 +1,19 @@
package org.briarproject.android.privategroup.conversation;
import org.briarproject.android.ActivityScope;
import org.briarproject.android.BaseActivity;
import dagger.Module;
import dagger.Provides;
@Module
public class GroupConversationModule {
@ActivityScope
@Provides
GroupController provideGroupController(BaseActivity activity,
GroupControllerImpl groupController) {
activity.addLifecycleController(groupController);
return groupController;
}
}

View File

@@ -36,7 +36,7 @@ import static java.util.logging.Level.WARNING;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class CreateGroupControllerImpl extends ContactSelectorControllerImpl class CreateGroupControllerImpl extends ContactSelectorControllerImpl
implements CreateGroupController { implements CreateGroupController {
private static final Logger LOG = private static final Logger LOG =

View File

@@ -0,0 +1,18 @@
package org.briarproject.android.privategroup.creation;
import org.briarproject.android.ActivityScope;
import dagger.Module;
import dagger.Provides;
@Module
public class GroupCreateModule {
@ActivityScope
@Provides
protected CreateGroupController provideCreateGroupController(
CreateGroupControllerImpl createGroupController) {
return createGroupController;
}
}

View File

@@ -25,7 +25,7 @@ import static java.util.logging.Level.WARNING;
import static org.briarproject.api.privategroup.PrivateGroupManager.CLIENT_ID; import static org.briarproject.api.privategroup.PrivateGroupManager.CLIENT_ID;
@NotNullByDefault @NotNullByDefault
public class GroupInvitationControllerImpl class GroupInvitationControllerImpl
extends InvitationControllerImpl<GroupInvitationItem> extends InvitationControllerImpl<GroupInvitationItem>
implements GroupInvitationController { implements GroupInvitationController {

View File

@@ -0,0 +1,17 @@
package org.briarproject.android.privategroup.invitation;
import org.briarproject.android.ActivityScope;
import dagger.Module;
import dagger.Provides;
@Module
public class GroupInvitationModule {
@ActivityScope
@Provides
GroupInvitationController provideInvitationGroupController(
GroupInvitationControllerImpl groupInvitationController) {
return groupInvitationController;
}
}

View File

@@ -38,7 +38,7 @@ import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static org.briarproject.api.privategroup.PrivateGroupManager.CLIENT_ID; import static org.briarproject.api.privategroup.PrivateGroupManager.CLIENT_ID;
public class GroupListControllerImpl extends DbControllerImpl class GroupListControllerImpl extends DbControllerImpl
implements GroupListController, EventListener { implements GroupListController, EventListener {
private static final Logger LOG = private static final Logger LOG =

View File

@@ -0,0 +1,17 @@
package org.briarproject.android.privategroup.list;
import org.briarproject.android.ActivityScope;
import dagger.Module;
import dagger.Provides;
@Module
public class GroupListModule {
@ActivityScope
@Provides
GroupListController provideGroupListController(
GroupListControllerImpl groupListController) {
return groupListController;
}
}

View File

@@ -18,7 +18,7 @@ import javax.inject.Inject;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
public class GroupMemberListControllerImpl extends DbControllerImpl class GroupMemberListControllerImpl extends DbControllerImpl
implements GroupMemberListController { implements GroupMemberListController {
private static final Logger LOG = private static final Logger LOG =

View File

@@ -0,0 +1,17 @@
package org.briarproject.android.privategroup.memberlist;
import org.briarproject.android.ActivityScope;
import dagger.Module;
import dagger.Provides;
@Module
public class GroupMemberModule {
@ActivityScope
@Provides
GroupMemberListController provideGroupMemberListController(
GroupMemberListControllerImpl groupMemberListController) {
return groupMemberListController;
}
}

View File

@@ -0,0 +1,17 @@
package org.briarproject.android.privategroup.reveal;
import org.briarproject.android.ActivityScope;
import dagger.Module;
import dagger.Provides;
@Module
public class GroupRevealModule {
@ActivityScope
@Provides
RevealContactsController provideRevealContactsController(
RevealContactsControllerImpl revealContactsController) {
return revealContactsController;
}
}

View File

@@ -33,7 +33,7 @@ import static org.briarproject.api.privategroup.Visibility.INVISIBLE;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class RevealContactsControllerImpl extends DbControllerImpl class RevealContactsControllerImpl extends DbControllerImpl
implements RevealContactsController { implements RevealContactsController {
private static final Logger LOG = private static final Logger LOG =

View File

@@ -23,7 +23,7 @@ import static java.util.logging.Level.WARNING;
import static org.briarproject.api.blogs.BlogManager.CLIENT_ID; import static org.briarproject.api.blogs.BlogManager.CLIENT_ID;
@NotNullByDefault @NotNullByDefault
public class BlogInvitationControllerImpl class BlogInvitationControllerImpl
extends InvitationControllerImpl<SharingInvitationItem> extends InvitationControllerImpl<SharingInvitationItem>
implements BlogInvitationController { implements BlogInvitationController {

View File

@@ -23,7 +23,7 @@ import static java.util.logging.Level.WARNING;
import static org.briarproject.api.forum.ForumManager.CLIENT_ID; import static org.briarproject.api.forum.ForumManager.CLIENT_ID;
@NotNullByDefault @NotNullByDefault
public class ForumInvitationControllerImpl class ForumInvitationControllerImpl
extends InvitationControllerImpl<SharingInvitationItem> extends InvitationControllerImpl<SharingInvitationItem>
implements ForumInvitationController { implements ForumInvitationController {

View File

@@ -25,7 +25,7 @@ import static java.util.logging.Level.WARNING;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class ShareBlogControllerImpl extends ContactSelectorControllerImpl class ShareBlogControllerImpl extends ContactSelectorControllerImpl
implements ShareBlogController { implements ShareBlogController {
private final static Logger LOG = private final static Logger LOG =

View File

@@ -25,7 +25,7 @@ import static java.util.logging.Level.WARNING;
@Immutable @Immutable
@NotNullByDefault @NotNullByDefault
public class ShareForumControllerImpl extends ContactSelectorControllerImpl class ShareForumControllerImpl extends ContactSelectorControllerImpl
implements ShareForumController { implements ShareForumController {
private final static Logger LOG = private final static Logger LOG =

View File

@@ -0,0 +1,44 @@
package org.briarproject.android.sharing;
import org.briarproject.android.ActivityScope;
import org.briarproject.android.BaseActivity;
import dagger.Module;
import dagger.Provides;
@Module
public class SharingModule {
@ActivityScope
@Provides
ShareForumController provideShareForumController(
ShareForumControllerImpl shareForumController) {
return shareForumController;
}
@ActivityScope
@Provides
BlogInvitationController provideInvitationBlogController(
BaseActivity activity,
BlogInvitationControllerImpl blogInvitationController) {
activity.addLifecycleController(blogInvitationController);
return blogInvitationController;
}
@ActivityScope
@Provides
ForumInvitationController provideInvitationForumController(
BaseActivity activity,
ForumInvitationControllerImpl forumInvitationController) {
activity.addLifecycleController(forumInvitationController);
return forumInvitationController;
}
@ActivityScope
@Provides
ShareBlogController provideShareBlogController(
ShareBlogControllerImpl shareBlogController) {
return shareBlogController;
}
}

View File

@@ -1,6 +1,7 @@
package org.briarproject.android.forum; package org.briarproject.android.forum;
import org.briarproject.android.ActivityModule; import org.briarproject.android.ActivityModule;
import org.briarproject.android.BaseActivity;
import org.briarproject.android.controller.BriarController; import org.briarproject.android.controller.BriarController;
import org.briarproject.android.controller.BriarControllerImpl; import org.briarproject.android.controller.BriarControllerImpl;
import org.briarproject.android.threaded.ThreadItemAdapter; import org.briarproject.android.threaded.ThreadItemAdapter;
@@ -32,8 +33,14 @@ public class TestForumActivity extends ForumActivity {
return c; return c;
} }
};
}
@Override
protected ForumModule getForumModule() {
return new ForumModule() {
@Override @Override
protected ForumController provideForumController( ForumController provideForumController(BaseActivity activity,
ForumControllerImpl forumController) { ForumControllerImpl forumController) {
return Mockito.mock(ForumController.class); return Mockito.mock(ForumController.class);
} }