diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 844307c..2d79768 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,7 +33,8 @@ - + + diff --git a/app/src/main/java/org/mercury_im/messenger/android/Notifications.java b/app/src/main/java/org/mercury_im/messenger/android/Notifications.java index b5061f6..23b9c1a 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/Notifications.java +++ b/app/src/main/java/org/mercury_im/messenger/android/Notifications.java @@ -69,8 +69,7 @@ public class Notifications { Intent tapAction = new Intent(context, ChatActivity.class); tapAction.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - tapAction.putExtra(ChatActivity.EXTRA_JID, chat.getPeer().getAddress()); - tapAction.putExtra(ChatActivity.EXTRA_ACCOUNT, chat.getPeer().getAccount().getId()); + tapAction.putExtra(ChatActivity.EXTRA_CHAT_ID, chat.getId().toString()); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, tapAction, 0); NotificationCompat.Builder builder = new NotificationCompat.Builder(context, diff --git a/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java b/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java index 187d330..014e7da 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java +++ b/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java @@ -4,7 +4,7 @@ import org.mercury_im.messenger.android.MercuryImApplication; import org.mercury_im.messenger.android.di.module.AndroidDatabaseModule; import org.mercury_im.messenger.android.di.module.AndroidSchedulersModule; import org.mercury_im.messenger.android.ui.account.detail.AndroidAccountDetailsViewModel; -import org.mercury_im.messenger.android.ui.roster.contacts.AndroidContactListViewModel; +import org.mercury_im.messenger.android.ui.contacts.AndroidContactListViewModel; import org.mercury_im.messenger.core.di.module.OpenPgpModule; import org.mercury_im.messenger.core.di.module.RxMercuryMessageStoreFactoryModule; import org.mercury_im.messenger.core.di.module.RxMercuryRosterStoreFactoryModule; @@ -26,8 +26,8 @@ import org.mercury_im.messenger.android.ui.chat.ChatInputFragment; import org.mercury_im.messenger.android.ui.chat.ChatInputViewModel; import org.mercury_im.messenger.android.ui.chat.AndroidChatViewModel; import org.mercury_im.messenger.android.ui.chatlist.AndroidChatListViewModel; -import org.mercury_im.messenger.android.ui.roster.contacts.detail.ContactDetailActivity; -import org.mercury_im.messenger.android.ui.roster.contacts.detail.ContactDetailViewModel; +import org.mercury_im.messenger.android.ui.contacts.detail.ContactDetailActivity; +import org.mercury_im.messenger.android.ui.contacts.detail.ContactDetailViewModel; import org.mercury_im.messenger.core.viewmodel.account.LoginViewModel; import javax.inject.Singleton; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/MainActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/MainActivity.java index 57661bb..0e33f95 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/MainActivity.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/MainActivity.java @@ -16,14 +16,14 @@ import com.google.android.material.navigation.NavigationView; import org.mercury_im.messenger.android.MercuryImApplication; import org.mercury_im.messenger.R; -import org.mercury_im.messenger.android.ui.account.detail.AccountDetailsFragment; +import org.mercury_im.messenger.android.ui.account.detail.AccountDetailsActivity; import org.mercury_im.messenger.android.ui.account.DeleteAccountDialogFragment; import org.mercury_im.messenger.android.ui.account.OnAccountListItemClickListener; import org.mercury_im.messenger.android.ui.account.list.AccountListFragment; import org.mercury_im.messenger.core.data.repository.AccountRepository; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.android.ui.chatlist.ChatListFragment; -import org.mercury_im.messenger.android.ui.roster.RosterFragment; +import org.mercury_im.messenger.android.ui.contacts.RosterFragment; import org.mercury_im.messenger.android.ui.settings.SettingsActivity; import javax.inject.Inject; @@ -112,8 +112,9 @@ public class MainActivity extends AppCompatActivity @Override public void onAccountListItemClick(Account item) { - getSupportFragmentManager().beginTransaction() - .replace(R.id.fragment, new AccountDetailsFragment(item.getId())).commit(); + Intent intent = new Intent(this, AccountDetailsActivity.class); + intent.putExtra(AccountDetailsActivity.EXTRA_ACCOUNT_ID, item.getId().toString()); + startActivity(intent); } @Override diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/MercuryActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/MercuryActivity.java new file mode 100644 index 0000000..c317b2c --- /dev/null +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/MercuryActivity.java @@ -0,0 +1,17 @@ +package org.mercury_im.messenger.android.ui; + +import android.content.Intent; +import android.os.Bundle; + +public interface MercuryActivity { + + default Bundle requiredExtras(Bundle savedInstanceState, Intent intent) { + if (savedInstanceState == null) { + savedInstanceState = intent.getExtras(); + } + if (savedInstanceState == null) { + throw new IllegalArgumentException("Missing bundle!"); + } + return savedInstanceState; + } +} diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java new file mode 100644 index 0000000..e2a9dcd --- /dev/null +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/account/detail/AccountDetailsActivity.java @@ -0,0 +1,53 @@ +package org.mercury_im.messenger.android.ui.account.detail; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import org.mercury_im.messenger.R; +import org.mercury_im.messenger.android.ui.MercuryActivity; +import org.mercury_im.messenger.android.util.ArgumentUtils; + +import java.util.UUID; + +import butterknife.ButterKnife; +import lombok.Value; + +public class AccountDetailsActivity extends AppCompatActivity implements MercuryActivity { + + public static final String EXTRA_ACCOUNT_ID = "ACCOUNT_ID"; + + private UUID accountId; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //MercuryImApplication.getApplication().getAppComponent().inject(this); + + Arguments arguments = getArguments(savedInstanceState); + accountId = arguments.getAccountId(); + + bindUiComponents(); + } + + private void bindUiComponents() { + setContentView(R.layout.activity_fragment_container); + ButterKnife.bind(this); + + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragment, new AccountDetailsFragment(accountId), "account_details") + .commit(); + } + + private Arguments getArguments(Bundle bundle) { + bundle = requiredExtras(bundle, getIntent()); + UUID accountId = ArgumentUtils.requireUUID(bundle, EXTRA_ACCOUNT_ID); + return new Arguments(accountId); + } + + @Value + private class Arguments { + UUID accountId; + } +} diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/bookmarks/BookmarkListFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/bookmarks/BookmarkListFragment.java similarity index 94% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/bookmarks/BookmarkListFragment.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/bookmarks/BookmarkListFragment.java index c79eebc..5a30e44 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/bookmarks/BookmarkListFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/bookmarks/BookmarkListFragment.java @@ -1,4 +1,4 @@ -package org.mercury_im.messenger.android.ui.roster.bookmarks; +package org.mercury_im.messenger.android.ui.bookmarks; import android.os.Bundle; import android.view.LayoutInflater; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java b/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java index aee1318..665396d 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java @@ -98,6 +98,10 @@ public class AndroidChatViewModel extends ViewModel implements MercuryAndroidVie getCommonViewModel().sendMessage(body); } + public String getContactId() { + return getContact().getValue().getId().toString(); + } + @Override public ChatViewModel getCommonViewModel() { return commonViewModel; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/chat/ChatActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/chat/ChatActivity.java index eaaf601..6164a7b 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/chat/ChatActivity.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/chat/ChatActivity.java @@ -2,10 +2,8 @@ package org.mercury_im.messenger.android.ui.chat; import android.content.Intent; import android.os.Bundle; -import android.util.Log; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import android.widget.Toast; import androidx.annotation.NonNull; @@ -16,25 +14,27 @@ import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import org.jxmpp.jid.EntityBareJid; -import org.jxmpp.jid.impl.JidCreate; import org.mercury_im.messenger.android.MercuryImApplication; import org.mercury_im.messenger.R; +import org.mercury_im.messenger.android.ui.MercuryActivity; +import org.mercury_im.messenger.android.util.ArgumentUtils; import org.mercury_im.messenger.entity.contact.Peer; -import org.mercury_im.messenger.android.ui.roster.contacts.detail.ContactDetailActivity; +import org.mercury_im.messenger.android.ui.contacts.detail.ContactDetailActivity; import java.util.UUID; import butterknife.BindView; import butterknife.ButterKnife; import io.reactivex.disposables.CompositeDisposable; +import lombok.Value; public class ChatActivity extends AppCompatActivity - implements ChatInputFragment.OnChatInputActionListener, SearchView.OnQueryTextListener { + implements MercuryActivity, ChatInputFragment.OnChatInputActionListener, SearchView.OnQueryTextListener { public static final String EXTRA_CHAT_ID = "CHAT_ID"; - public static final String EXTRA_JID = "JID"; - public static final String EXTRA_ACCOUNT = "ACCOUNT"; + + private final MessagesRecyclerViewAdapter recyclerViewAdapter = new MessagesRecyclerViewAdapter(); + private final CompositeDisposable disposable = new CompositeDisposable(); @BindView(R.id.toolbar) Toolbar toolbar; @@ -42,53 +42,39 @@ public class ChatActivity extends AppCompatActivity @BindView(R.id.recyclerView) RecyclerView recyclerView; - private final MessagesRecyclerViewAdapter recyclerViewAdapter = new MessagesRecyclerViewAdapter(); - private AndroidChatViewModel androidChatViewModel; - - private final CompositeDisposable disposable = new CompositeDisposable(); - private UUID chatId; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + MercuryImApplication.getApplication().getAppComponent().inject(this); + Arguments arguments = getArguments(savedInstanceState); + chatId = arguments.getChatId(); + + androidChatViewModel = new ViewModelProvider(this).get(AndroidChatViewModel.class); + androidChatViewModel.init(chatId); + + bindUiComponents(); + observeViewModel(androidChatViewModel); + } + + private void bindUiComponents() { setContentView(R.layout.activity_chat); ButterKnife.bind(this); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + toolbar.setOnClickListener(v -> { + Intent intent = new Intent(ChatActivity.this, ContactDetailActivity.class); + intent.putExtra(ContactDetailActivity.EXTRA_PEER_ID, androidChatViewModel.getContactId()); + ChatActivity.this.startActivity(intent); + }); + recyclerView.setAdapter(recyclerViewAdapter); recyclerView.setLayoutManager(new LinearLayoutManager(this)); - MercuryImApplication.getApplication().getAppComponent().inject(this); - - if (savedInstanceState == null) { - savedInstanceState = getIntent().getExtras(); - if (savedInstanceState == null) return; - } - - String chatIdString = savedInstanceState.getString(EXTRA_CHAT_ID); - if (chatIdString == null) { - return; - } - - chatId = UUID.fromString(chatIdString); - androidChatViewModel = new ViewModelProvider(this).get(AndroidChatViewModel.class); - androidChatViewModel.init(chatId); - // Listen for updates to contact information and messages - observeViewModel(androidChatViewModel); - - toolbar.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = new Intent(ChatActivity.this, ContactDetailActivity.class); - intent.putExtra(ContactDetailActivity.EXTRA_PEER_ID, androidChatViewModel.getContact().getValue().getId().toString()); - - ChatActivity.this.startActivity(intent); - } - }); } public void observeViewModel(AndroidChatViewModel viewModel) { @@ -204,4 +190,15 @@ public class ChatActivity extends AppCompatActivity onBackPressed(); return true; } + + private Arguments getArguments(Bundle savedInstanceState) { + savedInstanceState = requiredExtras(savedInstanceState, getIntent()); + UUID chatId = ArgumentUtils.requireUUID(savedInstanceState, EXTRA_CHAT_ID); + return new Arguments(chatId); + } + + @Value + private class Arguments { + UUID chatId; + } } diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/AddContactDialogFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/AddContactDialogFragment.java similarity index 99% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/AddContactDialogFragment.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/AddContactDialogFragment.java index 1b7d59e..2d3891c 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/AddContactDialogFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/AddContactDialogFragment.java @@ -1,4 +1,4 @@ -package org.mercury_im.messenger.android.ui.roster.contacts; +package org.mercury_im.messenger.android.ui.contacts; import android.app.AlertDialog; import android.app.Dialog; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/AndroidContactListViewModel.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/AndroidContactListViewModel.java similarity index 97% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/AndroidContactListViewModel.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/AndroidContactListViewModel.java index f70da74..8f7a380 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/AndroidContactListViewModel.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/AndroidContactListViewModel.java @@ -1,4 +1,4 @@ -package org.mercury_im.messenger.android.ui.roster.contacts; +package org.mercury_im.messenger.android.ui.contacts; import android.app.Application; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/ContactListFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/ContactListFragment.java similarity index 96% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/ContactListFragment.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/ContactListFragment.java index d185c1f..3ae9c56 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/ContactListFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/ContactListFragment.java @@ -1,6 +1,5 @@ -package org.mercury_im.messenger.android.ui.roster.contacts; +package org.mercury_im.messenger.android.ui.contacts; -import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/ContactListRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/ContactListRecyclerViewAdapter.java similarity index 95% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/ContactListRecyclerViewAdapter.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/ContactListRecyclerViewAdapter.java index 5e39b1f..de25714 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/ContactListRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/ContactListRecyclerViewAdapter.java @@ -1,4 +1,4 @@ -package org.mercury_im.messenger.android.ui.roster.contacts; +package org.mercury_im.messenger.android.ui.contacts; import android.content.Context; import android.content.Intent; @@ -14,7 +14,7 @@ import androidx.recyclerview.widget.RecyclerView; import org.mercury_im.messenger.R; import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.android.ui.avatar.AvatarDrawable; -import org.mercury_im.messenger.android.ui.roster.contacts.detail.ContactDetailActivity; +import org.mercury_im.messenger.android.ui.contacts.detail.ContactDetailActivity; import org.mercury_im.messenger.android.ui.util.AbstractRecyclerViewAdapter; import java.util.Objects; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/RosterFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/RosterFragment.java similarity index 92% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/RosterFragment.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/RosterFragment.java index 5cbbba9..0468f3e 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/RosterFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/RosterFragment.java @@ -1,4 +1,4 @@ -package org.mercury_im.messenger.android.ui.roster; +package org.mercury_im.messenger.android.ui.contacts; import android.os.Bundle; import android.view.LayoutInflater; @@ -16,8 +16,8 @@ import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; import org.mercury_im.messenger.R; -import org.mercury_im.messenger.android.ui.roster.bookmarks.BookmarkListFragment; -import org.mercury_im.messenger.android.ui.roster.contacts.ContactListFragment; +import org.mercury_im.messenger.android.ui.bookmarks.BookmarkListFragment; +import org.mercury_im.messenger.android.ui.contacts.ContactListFragment; import butterknife.BindView; import butterknife.ButterKnife; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailActivity.java new file mode 100644 index 0000000..415eaa6 --- /dev/null +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailActivity.java @@ -0,0 +1,60 @@ +package org.mercury_im.messenger.android.ui.contacts.detail; + +import android.os.Bundle; +import android.widget.FrameLayout; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.ViewModelProvider; + +import org.mercury_im.messenger.android.MercuryImApplication; +import org.mercury_im.messenger.R; +import org.mercury_im.messenger.android.ui.MercuryActivity; +import org.mercury_im.messenger.android.util.ArgumentUtils; + +import java.util.UUID; + +import butterknife.BindView; +import butterknife.ButterKnife; +import lombok.Value; + +public class ContactDetailActivity extends AppCompatActivity implements MercuryActivity { + public static final String EXTRA_PEER_ID = "PEER_ID"; + + private ContactDetailViewModel androidContactDetailViewModel; + private UUID peerId; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MercuryImApplication.getApplication().getAppComponent().inject(this); + + Arguments arguments = getArguments(savedInstanceState); + peerId = arguments.getPeerId(); + + androidContactDetailViewModel = new ViewModelProvider(this).get(ContactDetailViewModel.class); + androidContactDetailViewModel.init(peerId); + + bindUiComponents(); + } + + private void bindUiComponents() { + setContentView(R.layout.activity_fragment_container); + ButterKnife.bind(this); + + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragment, new ContactDetailFragment(), "contact_details") + .commit(); + } + + private Arguments getArguments(Bundle bundle) { + bundle = requiredExtras(bundle, getIntent()); + UUID peerId = ArgumentUtils.requireUUID(bundle, EXTRA_PEER_ID); + return new Arguments(peerId); + } + + @Value + private class Arguments { + UUID peerId; + } +} diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailFragment.java similarity index 98% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailFragment.java index f86c1f2..8727c36 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailFragment.java @@ -1,4 +1,4 @@ -package org.mercury_im.messenger.android.ui.roster.contacts.detail; +package org.mercury_im.messenger.android.ui.contacts.detail; import android.app.AlertDialog; import android.content.Context; @@ -31,7 +31,6 @@ import org.mercury_im.messenger.R; import org.mercury_im.messenger.android.ui.chat.ChatActivity; import org.mercury_im.messenger.android.util.ColorUtil; import org.mercury_im.messenger.core.viewmodel.openpgp.FingerprintViewItem; -import org.mercury_im.messenger.entity.chat.DirectChat; import java.util.Arrays; import java.util.List; diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailViewModel.java similarity index 97% rename from app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java rename to app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailViewModel.java index 352c186..8dc1db9 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailViewModel.java @@ -1,7 +1,6 @@ -package org.mercury_im.messenger.android.ui.roster.contacts.detail; +package org.mercury_im.messenger.android.ui.contacts.detail; import android.graphics.drawable.Drawable; -import android.util.Log; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -16,7 +15,6 @@ import org.jivesoftware.smack.roster.RosterEntry; import org.jivesoftware.smack.roster.RosterGroup; import org.jivesoftware.smackx.ox.store.definition.OpenPgpTrustStore; import org.jxmpp.jid.BareJid; -import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.Jid; import org.jxmpp.jid.impl.JidCreate; import org.mercury_im.messenger.android.MercuryImApplication; @@ -28,7 +26,6 @@ import org.mercury_im.messenger.core.data.repository.PeerRepository; import org.mercury_im.messenger.core.util.Optional; import org.mercury_im.messenger.core.viewmodel.openpgp.FingerprintViewItem; import org.mercury_im.messenger.entity.chat.Chat; -import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.android.ui.avatar.AvatarDrawable; import org.mercury_im.messenger.core.util.CombinedPresenceListener; import org.pgpainless.key.OpenPgpV4Fingerprint; @@ -81,7 +78,7 @@ public class ContactDetailViewModel extends ViewModel { MercuryImApplication.getApplication().getAppComponent().inject(this); } - public void bind(UUID peerId) { + public void init(UUID peerId) { this.peerId = peerId; disposable.add(peerRepository.getPeer(peerId) diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailActivity.java b/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailActivity.java deleted file mode 100644 index df48a34..0000000 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailActivity.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.mercury_im.messenger.android.ui.roster.contacts.detail; - -import android.os.Bundle; -import android.widget.FrameLayout; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.lifecycle.ViewModelProvider; - -import org.mercury_im.messenger.android.MercuryImApplication; -import org.mercury_im.messenger.R; - -import java.util.UUID; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class ContactDetailActivity extends AppCompatActivity { - public static final String EXTRA_JID = "JID"; - public static final String EXTRA_ACCOUNT = "ACCOUNT"; - public static final String EXTRA_PEER_ID = "PEER_ID"; - - @BindView(R.id.fragment) - FrameLayout container; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_fragment_container); - ButterKnife.bind(this); - - MercuryImApplication.getApplication().getAppComponent().inject(this); - - if (savedInstanceState == null) { - savedInstanceState = getIntent().getExtras(); - if (savedInstanceState == null) return; - } - - String peerIdString = savedInstanceState.getString(EXTRA_PEER_ID); - UUID peerId = UUID.fromString(peerIdString); - - ContactDetailViewModel viewModel = new ViewModelProvider(this).get(ContactDetailViewModel.class); - viewModel.bind(peerId); - - getSupportFragmentManager().beginTransaction().replace(R.id.fragment, new ContactDetailFragment(), "contact_details").commit(); - } -} diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/package-info.java b/app/src/main/java/org/mercury_im/messenger/android/ui/roster/package-info.java deleted file mode 100644 index 3a8ce3d..0000000 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Some Javadoc information about the package. - */ -package org.mercury_im.messenger.android.ui.roster; diff --git a/app/src/main/java/org/mercury_im/messenger/android/util/ArgumentUtils.java b/app/src/main/java/org/mercury_im/messenger/android/util/ArgumentUtils.java new file mode 100644 index 0000000..64e26d5 --- /dev/null +++ b/app/src/main/java/org/mercury_im/messenger/android/util/ArgumentUtils.java @@ -0,0 +1,16 @@ +package org.mercury_im.messenger.android.util; + +import android.os.Bundle; + +import java.util.UUID; + +public class ArgumentUtils { + + public static UUID requireUUID(Bundle bundle, String key) { + String uuidString = bundle.getString(key); + if (uuidString == null) { + throw new IllegalArgumentException("Missing required UUID '" + key + "' (as String)"); + } + return UUID.fromString(uuidString); + } +} diff --git a/app/src/main/res/layout/fragment_bookmarks_list.xml b/app/src/main/res/layout/fragment_bookmarks_list.xml index 02a12a9..fc0fd37 100644 --- a/app/src/main/res/layout/fragment_bookmarks_list.xml +++ b/app/src/main/res/layout/fragment_bookmarks_list.xml @@ -12,7 +12,7 @@ android:layout_height="match_parent" android:scrollbars="vertical" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" - tools:context=".android.ui.roster.contacts.ContactListFragment" + tools:context=".android.ui.contacts.ContactListFragment" tools:listitem="@layout/list_item_chat" /> + tools:context=".android.ui.contacts.ContactListFragment"/>