Mercury-IM/app/src/main/java/org/mercury_im/messenger/android/ui/contacts/detail/ContactDetailActivity.java

78 lines
2.4 KiB
Java

package org.mercury_im.messenger.android.ui.contacts.detail;
import android.os.Bundle;
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.di.module.AndroidSchedulersModule;
import org.mercury_im.messenger.android.ui.base.MercuryActivity;
import org.mercury_im.messenger.android.util.ArgumentUtils;
import org.mercury_im.messenger.core.data.repository.PeerRepository;
import java.util.UUID;
import javax.inject.Inject;
import butterknife.ButterKnife;
import io.reactivex.Completable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import lombok.Value;
public class ContactDetailActivity extends AppCompatActivity implements MercuryActivity {
public static final String EXTRA_PEER_ID = "PEER_ID";
private AndroidContactDetailViewModel androidContactDetailViewModel;
private UUID peerId;
Disposable disposable;
@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(AndroidContactDetailViewModel.class);
bindUiComponents();
disposable = androidContactDetailViewModel.init(peerId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
}
private void bindUiComponents() {
setContentView(R.layout.layout_top_toolbar);
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;
}
@Override
protected void onDestroy() {
super.onDestroy();
disposable.dispose();
}
}