From aa75aea1809450f289fe45a67440f4efc30a3286 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sun, 1 Sep 2019 04:56:23 +0200 Subject: [PATCH] introduce bottomNavigationView --- .../messenger/di/component/AppComponent.java | 4 + .../mercury_im/messenger/ui/MainActivity.java | 63 +++++++++++-- .../ui/chat/ChatRecyclerViewAdapter.java | 1 + .../ui/chatlist/ChatListFragment.java | 66 +++++++++++++ .../chatlist/ChatListRecyclerViewAdapter.java | 94 +++++++++++++++++++ .../ui/chatlist/ChatListViewModel.java | 40 ++++++++ .../messenger/ui/login/AccountsFragment.java | 2 +- .../ui/login/AccountsRecyclerViewAdapter.java | 4 +- .../messenger/ui/roster/RosterFragment.java | 10 +- .../ui/roster/RosterRecyclerViewAdapter.java | 5 +- .../drawable/ic_account_circle_black_24dp.xml | 9 ++ .../drawable/ic_people_outline_black_24dp.xml | 9 ++ .../drawable/ic_person_outline_black_24dp.xml | 9 ++ app/src/main/res/layout/activity_main.xml | 12 +-- app/src/main/res/layout/content_main.xml | 10 +- app/src/main/res/layout/content_roster.xml | 9 ++ .../main/res/layout/fragment_chat_list.xml | 18 ++++ .../res/layout/fragment_roster_entry_list.xml | 6 +- .../main/res/layout/recycler_view_item_1.xml | 52 ---------- ...m.xml => recycler_view_item_chat_list.xml} | 22 ++--- app/src/main/res/menu/bottom_menu_main.xml | 16 ++++ app/src/main/res/values/strings.xml | 3 + .../core/centers/NotificationCenter.java | 13 +++ 23 files changed, 384 insertions(+), 93 deletions(-) create mode 100644 app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListFragment.java create mode 100644 app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java create mode 100644 app/src/main/res/drawable/ic_account_circle_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_people_outline_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_person_outline_black_24dp.xml create mode 100644 app/src/main/res/layout/content_roster.xml create mode 100644 app/src/main/res/layout/fragment_chat_list.xml delete mode 100644 app/src/main/res/layout/recycler_view_item_1.xml rename app/src/main/res/layout/{recycler_view_item.xml => recycler_view_item_chat_list.xml} (70%) create mode 100644 app/src/main/res/menu/bottom_menu_main.xml create mode 100644 core/src/main/java/org/mercury_im/messenger/core/centers/NotificationCenter.java diff --git a/app/src/main/java/org/mercury_im/messenger/di/component/AppComponent.java b/app/src/main/java/org/mercury_im/messenger/di/component/AppComponent.java index 8288a3b..46188c6 100644 --- a/app/src/main/java/org/mercury_im/messenger/di/component/AppComponent.java +++ b/app/src/main/java/org/mercury_im/messenger/di/component/AppComponent.java @@ -10,6 +10,7 @@ import org.mercury_im.messenger.ui.chat.ChatActivity; import org.mercury_im.messenger.ui.chat.ChatInputFragment; import org.mercury_im.messenger.ui.chat.ChatInputViewModel; import org.mercury_im.messenger.ui.chat.ChatViewModel; +import org.mercury_im.messenger.ui.chatlist.ChatListViewModel; import org.mercury_im.messenger.ui.login.AccountsActivity; import org.mercury_im.messenger.ui.login.AccountsViewModel; import org.mercury_im.messenger.ui.login.LoginActivity; @@ -48,6 +49,8 @@ public interface AppComponent { void inject(ChatInputFragment chatInputFragment); + void inject(ChatListViewModel chatListViewModel); + // ViewModels @@ -70,4 +73,5 @@ public interface AppComponent { // Connectors void inject(PlainMessageStore messageHandler); + } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/MainActivity.java b/app/src/main/java/org/mercury_im/messenger/ui/MainActivity.java index 04d0b6f..7791a44 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/MainActivity.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/MainActivity.java @@ -5,33 +5,53 @@ import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; +import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.google.android.material.navigation.NavigationView; import org.mercury_im.messenger.MercuryImApplication; import org.mercury_im.messenger.R; +import org.mercury_im.messenger.persistence.model.AccountModel; +import org.mercury_im.messenger.ui.chatlist.ChatListFragment; import org.mercury_im.messenger.ui.login.AccountsActivity; +import org.mercury_im.messenger.ui.login.AccountsFragment; import org.mercury_im.messenger.ui.login.LoginActivity; import org.mercury_im.messenger.ui.roster.RosterFragment; import org.mercury_im.messenger.ui.settings.SettingsActivity; -public class MainActivity extends AppCompatActivity { +import butterknife.BindView; +import butterknife.ButterKnife; + +public class MainActivity extends AppCompatActivity + implements NavigationView.OnNavigationItemSelectedListener, + AccountsFragment.OnAccountListItemClickListener { + + @BindView(R.id.toolbar) + Toolbar toolbar; + + @BindView(R.id.bottom_navigation) + BottomNavigationView bottomNavigationView; + + private ChatListFragment chatListFragment = new ChatListFragment(); + private RosterFragment rosterFragment = new RosterFragment(); + private AccountsFragment accountsFragment = new AccountsFragment(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - Toolbar toolbar = findViewById(R.id.toolbar); + ButterKnife.bind(this); setSupportActionBar(toolbar); + bottomNavigationView.setOnNavigationItemSelectedListener(this::onNavigationItemSelected); + MercuryImApplication.getApplication().getAppComponent().inject(this); - - FragmentManager fm = getSupportFragmentManager(); - - FloatingActionButton fab = findViewById(R.id.fab); } @Override @@ -61,4 +81,35 @@ public class MainActivity extends AppCompatActivity { return super.onOptionsItemSelected(item); } + + + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + switch (menuItem.getItemId()) { + + case R.id.entry_chats: + transaction.replace(R.id.fragment, chatListFragment).commit(); + return true; + + case R.id.entry_contacts: + transaction.replace(R.id.fragment, rosterFragment).commit(); + return true; + + case R.id.entry_accounts: + transaction.replace(R.id.fragment, accountsFragment).commit(); + return true; + } + return false; + } + + @Override + public void onAccountListItemClick(AccountModel item) { + + } + + @Override + public void onAccountListItemLongClick(AccountModel item) { + + } } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatRecyclerViewAdapter.java index fbd17a8..15467a7 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatRecyclerViewAdapter.java @@ -1,5 +1,6 @@ package org.mercury_im.messenger.ui.chat; +import android.text.util.Linkify; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListFragment.java b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListFragment.java new file mode 100644 index 0000000..78b2639 --- /dev/null +++ b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListFragment.java @@ -0,0 +1,66 @@ +package org.mercury_im.messenger.ui.chatlist; + +import android.content.Context; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProviders; +import androidx.recyclerview.widget.RecyclerView; + +import org.mercury_im.messenger.R; + +import butterknife.BindView; +import butterknife.ButterKnife; + +import static org.mercury_im.messenger.MercuryImApplication.TAG; + +public class ChatListFragment extends Fragment { + + private ChatListViewModel viewModel; + + @BindView(R.id.chat_list__recycler_view) + RecyclerView recyclerView; + private final ChatListRecyclerViewAdapter recyclerViewAdapter = new ChatListRecyclerViewAdapter(); + + public ChatListFragment() { + + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_chat_list, container, false); + ButterKnife.bind(this, view); + + recyclerView.setAdapter(recyclerViewAdapter); + return view; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + viewModel = ViewModelProviders.of(getActivity()).get(ChatListViewModel.class); + viewModel.getChats().observe(this, chatModels -> { + if (chatModels == null) { + Log.d(TAG, "Displaying null chats"); + return; + } + Log.d(TAG, "Displaying " + chatModels.size() + " chats"); + recyclerViewAdapter.setItems(chatModels); + }); + } +} diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java new file mode 100644 index 0000000..3cc1ee1 --- /dev/null +++ b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java @@ -0,0 +1,94 @@ +package org.mercury_im.messenger.ui.chatlist; + +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityOptionsCompat; +import androidx.recyclerview.widget.RecyclerView; + +import org.jivesoftware.smackx.colors.ConsistentColor; +import org.jxmpp.jid.EntityBareJid; +import org.mercury_im.messenger.R; +import org.mercury_im.messenger.persistence.model.ChatModel; +import org.mercury_im.messenger.persistence.room.model.RoomChatModel; +import org.mercury_im.messenger.persistence.room.model.RoomContactModel; +import org.mercury_im.messenger.ui.chat.ChatActivity; +import org.mercury_im.messenger.util.ColorUtil; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import de.hdodenhof.circleimageview.CircleImageView; + +public class ChatListRecyclerViewAdapter + extends RecyclerView.Adapter { + + private List chatModelList; + + public ChatListRecyclerViewAdapter() { + this.chatModelList = new ArrayList<>(); + } + + @NonNull + @Override + public ChatListItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new ChatListItemViewHolder(parent.getContext(), LayoutInflater.from(parent.getContext()) + .inflate(R.layout.recycler_view_item_chat_list, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull ChatListItemViewHolder holder, int position) { + ChatModel model = chatModelList.get(position); + holder.bind(model); + } + + @Override + public int getItemCount() { + return chatModelList.size(); + } + + public void setItems(List chatModels) { + this.chatModelList = chatModels; + notifyDataSetChanged(); + } + + public class ChatListItemViewHolder extends RecyclerView.ViewHolder { + + private View view; + + @BindView(R.id.chat_name) + TextView nameView; + + @BindView(R.id.chat_message) + TextView chatMessage; + + @BindView(R.id.chat_time) + TextView chatTime; + + @BindView(R.id.chat_avatar) + CircleImageView avatarView; + + Context context; + + public ChatListItemViewHolder(Context context, View itemView) { + super(itemView); + this.context = context; + this.view = itemView; + ButterKnife.bind(this, view); + } + + void bind(ChatModel chatModel) { + String name = chatModel.getPeerEntityId() + ""; + nameView.setText(name); + } + } +} diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java index 4a03982..30e2a3f 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java @@ -1,7 +1,47 @@ package org.mercury_im.messenger.ui.chatlist; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; +import org.mercury_im.messenger.MercuryImApplication; +import org.mercury_im.messenger.persistence.model.ChatModel; +import org.mercury_im.messenger.persistence.repository.ChatRepository; + +import java.util.List; + +import javax.inject.Inject; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; + public class ChatListViewModel extends ViewModel { + @Inject + ChatRepository chatRepository; + + private CompositeDisposable disposable = new CompositeDisposable(); + + private final MutableLiveData> chats = new MutableLiveData<>(); + + public ChatListViewModel() { + MercuryImApplication.getApplication().getAppComponent().inject(this); + + disposable.add(chatRepository.getAllChats() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe((Consumer>) chats::setValue)); + } + + public LiveData> getChats() { + return chats; + } + + @Override + protected void onCleared() { + super.onCleared(); + disposable.dispose(); + } } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsFragment.java b/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsFragment.java index 2eb964c..a382a0f 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsFragment.java @@ -62,7 +62,7 @@ public class AccountsFragment extends Fragment { recyclerView = (RecyclerView) view; Context context = view.getContext(); recyclerView.setLayoutManager(new LinearLayoutManager(context)); - this.adapter = new AccountsRecyclerViewAdapter(viewModel.getAccounts().getValue(), accountClickListener); + this.adapter = new AccountsRecyclerViewAdapter(accountClickListener); viewModel.getAccounts().observe(this, roomAccountModels -> adapter.setValues(roomAccountModels)); recyclerView.setAdapter(adapter); } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsRecyclerViewAdapter.java index 44315e7..b13bc25 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/login/AccountsRecyclerViewAdapter.java @@ -26,8 +26,8 @@ public class AccountsRecyclerViewAdapter extends RecyclerView.Adapter mValues; private final OnAccountListItemClickListener mListener; - public AccountsRecyclerViewAdapter(List items, OnAccountListItemClickListener listener) { - mValues = items != null ? items : new ArrayList<>(); + public AccountsRecyclerViewAdapter(OnAccountListItemClickListener listener) { + mValues = new ArrayList<>(); mListener = listener; } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterFragment.java b/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterFragment.java index 7920016..7ebd0fb 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterFragment.java @@ -15,6 +15,9 @@ import org.mercury_im.messenger.R; import java.util.ArrayList; +import butterknife.BindView; +import butterknife.ButterKnife; + import static androidx.constraintlayout.widget.Constraints.TAG; /** @@ -24,9 +27,9 @@ public class RosterFragment extends Fragment { private RosterViewModel rosterViewModel; - private RosterRecyclerViewAdapter recyclerViewAdapter; - + @BindView(R.id.roster_entry_list__recycler_view) RecyclerView recyclerView; + private final RosterRecyclerViewAdapter recyclerViewAdapter = new RosterRecyclerViewAdapter(); public RosterFragment() { @@ -36,9 +39,8 @@ public class RosterFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_roster_entry_list, container, false); + ButterKnife.bind(this, view); - recyclerView = view.findViewById(R.id.roster_entry_list__recycler_view); - recyclerViewAdapter = new RosterRecyclerViewAdapter(new ArrayList<>()); recyclerView.setAdapter(recyclerViewAdapter); return view; diff --git a/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterRecyclerViewAdapter.java index 5e9eba9..03127f2 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/roster/RosterRecyclerViewAdapter.java @@ -20,6 +20,7 @@ import org.mercury_im.messenger.persistence.room.model.RoomContactModel; import org.mercury_im.messenger.ui.chat.ChatActivity; import org.mercury_im.messenger.util.ColorUtil; +import java.util.ArrayList; import java.util.List; import butterknife.BindView; @@ -31,8 +32,8 @@ public class RosterRecyclerViewAdapter private List entryModelList; - public RosterRecyclerViewAdapter(List entryModelList) { - this.entryModelList = entryModelList; + public RosterRecyclerViewAdapter() { + this.entryModelList = new ArrayList<>(); } @NonNull diff --git a/app/src/main/res/drawable/ic_account_circle_black_24dp.xml b/app/src/main/res/drawable/ic_account_circle_black_24dp.xml new file mode 100644 index 0000000..7678580 --- /dev/null +++ b/app/src/main/res/drawable/ic_account_circle_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_people_outline_black_24dp.xml b/app/src/main/res/drawable/ic_people_outline_black_24dp.xml new file mode 100644 index 0000000..15d27f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_people_outline_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_person_outline_black_24dp.xml b/app/src/main/res/drawable/ic_person_outline_black_24dp.xml new file mode 100644 index 0000000..f182b8d --- /dev/null +++ b/app/src/main/res/drawable/ic_person_outline_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 23ed83f..0c9d99b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -22,12 +22,12 @@ - + android:layout_gravity="bottom" + android:background="@color/colorPrimary" + app:menu="@menu/bottom_menu_main" /> \ No newline at end of file diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 20d1f7c..102adbb 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -1,9 +1,9 @@ - + + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_roster.xml b/app/src/main/res/layout/content_roster.xml new file mode 100644 index 0000000..20d1f7c --- /dev/null +++ b/app/src/main/res/layout/content_roster.xml @@ -0,0 +1,9 @@ + diff --git a/app/src/main/res/layout/fragment_chat_list.xml b/app/src/main/res/layout/fragment_chat_list.xml new file mode 100644 index 0000000..cc92936 --- /dev/null +++ b/app/src/main/res/layout/fragment_chat_list.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_roster_entry_list.xml b/app/src/main/res/layout/fragment_roster_entry_list.xml index b030c22..c23f302 100644 --- a/app/src/main/res/layout/fragment_roster_entry_list.xml +++ b/app/src/main/res/layout/fragment_roster_entry_list.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.roster.RosterFragment" - tools:showIn="@layout/activity_main"> + tools:showIn="@layout/content_roster"> - - + tools:listitem="@layout/recycler_view_item_chat_list" /> \ No newline at end of file diff --git a/app/src/main/res/layout/recycler_view_item_1.xml b/app/src/main/res/layout/recycler_view_item_1.xml deleted file mode 100644 index 87ae671..0000000 --- a/app/src/main/res/layout/recycler_view_item_1.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/recycler_view_item.xml b/app/src/main/res/layout/recycler_view_item_chat_list.xml similarity index 70% rename from app/src/main/res/layout/recycler_view_item.xml rename to app/src/main/res/layout/recycler_view_item_chat_list.xml index 87ae671..894bd3b 100644 --- a/app/src/main/res/layout/recycler_view_item.xml +++ b/app/src/main/res/layout/recycler_view_item_chat_list.xml @@ -6,8 +6,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + app:layout_constraintBottom_toTopOf="@+id/chat_message" /> \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_menu_main.xml b/app/src/main/res/menu/bottom_menu_main.xml new file mode 100644 index 0000000..789ed3e --- /dev/null +++ b/app/src/main/res/menu/bottom_menu_main.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5cd2297..75b98d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -119,5 +119,8 @@ Reply Add Reaction Details + Chats + Contacts + Accounts diff --git a/core/src/main/java/org/mercury_im/messenger/core/centers/NotificationCenter.java b/core/src/main/java/org/mercury_im/messenger/core/centers/NotificationCenter.java new file mode 100644 index 0000000..7cc290b --- /dev/null +++ b/core/src/main/java/org/mercury_im/messenger/core/centers/NotificationCenter.java @@ -0,0 +1,13 @@ +package org.mercury_im.messenger.core.centers; + +import javax.inject.Inject; + +public class NotificationCenter { + + private final ConnectionCenter connectionCenter; + + @Inject + public NotificationCenter(ConnectionCenter connectionCenter) { + this.connectionCenter = connectionCenter; + } +}