diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java index fbc22d6dfbd1909692ee410f1c11bf1dc210c527..b7b0c330498d582ce30802389c14aeedd5dd2e32 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java @@ -16,13 +16,13 @@ import com.ninja.mobile.communicator.data.models.events.ServerData; import com.ninja.mobile.communicator.data.models.mqtt.Auth; import com.ninja.mobile.communicator.data.models.mqtt.BaseModelMQQT; import com.ninja.mobile.communicator.data.models.mqtt.Confirm; -import com.ninja.mobile.communicator.data.models.mqtt.DecodeFactory; import com.ninja.mobile.communicator.data.models.mqtt.DeleteUser; import com.ninja.mobile.communicator.data.models.mqtt.Friend; import com.ninja.mobile.communicator.data.models.mqtt.History; import com.ninja.mobile.communicator.data.models.mqtt.Io; import com.ninja.mobile.communicator.data.models.mqtt.Person; import com.ninja.mobile.communicator.data.models.mqtt.Profile; +import com.ninja.mobile.communicator.data.models.mqtt.Response; import com.ninja.mobile.communicator.data.models.mqtt.Roster; import com.ninja.mobile.communicator.data.models.mqtt.Token; import com.ninja.mobile.communicator.data.server.bert.BertAtom; @@ -42,7 +42,6 @@ import io.reactivex.Single; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import io.reactivex.subjects.BehaviorSubject; -import timber.log.Timber; /** * Created by Max Chervatiuk on 22.06.17. @@ -104,13 +103,25 @@ public class DataManager { public Observable getInputSubject() { return mBus.getInputSubject() + .filter(data -> data.getData() != null) .doOnNext(this::handleRequest); } private void handleRequest(Data data) { if (data instanceof ServerData) { ServerData serverData = (ServerData) data; - tryToSaveToken(serverData); + Response response = new Response(serverData.getData().getPayload()); + if (response.data instanceof Auth) { + tryToSaveToken((Auth) response.data); + } else if (response.data instanceof Io) { + Io io = (Io) response.data; + if (io.isSuccess() && io.data instanceof Auth) { + tryToSaveToken((Auth) io.data); + } + if (Io.Responses.NOT_AUTHORIZED.equalsIgnoreCase(io.getStatus())) { + requestSms(getPhoneNumber(), false); + } + } } else { } @@ -122,17 +133,9 @@ public class DataManager { .map(data -> (ErrorMessage) data); } - - private void tryToSaveToken(ServerData serverData) { - try { - Object o = DecodeFactory.decode(serverData.getData().getPayload()); - if (o instanceof Io && ((Io) o).data instanceof Auth) { - mToken = new Token(((Auth) ((Io) o).data).token); - mPreferenceHelper.saveToken(mToken); - } - } catch (Exception e) { - Timber.i(e); - } + private void tryToSaveToken(Auth auth) { + mToken = new Token(auth.token); + mPreferenceHelper.saveToken(mToken); } //Preferences @@ -292,8 +295,6 @@ public class DataManager { } - - // =========================================================================================== // private Handler mHandler; // public void runTokenUpdater() { diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java index 820afb9f3ce8f5f51e5844119da84e46eddbd4c3..60d3cb95c4820b615ce3a8c63f2e24ec729b262e 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java @@ -88,4 +88,18 @@ public class Auth extends BaseModelMQQT { result = 31 * result + (services != null ? services.hashCode() : 0); return result; } + + @Override public String toString() { + return "Auth{" + + "token='" + token + '\'' + + ", dev_key='" + dev_key + '\'' + + ", user_id='" + user_id + '\'' + + ", phone='" + phone + '\'' + + ", clientId='" + clientId + '\'' + + ", type=" + type + + ", sms_code='" + sms_code + '\'' + + ", attempts=" + attempts + + ", services=" + services + + '}'; + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java index c606c0d86725fdc7f0c877a56cc8f7303eadffcf..08da3969ffbfa92f1c40d55c2dd568264e821ede 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/BaseModelMQQT.java @@ -1,15 +1,20 @@ package com.ninja.mobile.communicator.data.models.mqtt; +import android.os.Build; + import com.ninja.mobile.communicator.data.models.mqtt.annotations.Order; import com.ninja.mobile.communicator.data.server.bert.BertAtom; import com.ninja.mobile.communicator.data.server.bert.BertDecoder; import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.io.InvalidObjectException; +import java.util.Locale; import timber.log.Timber; +import static android.telephony.PhoneNumberUtils.formatNumber; + /** * Created by dmitro.boiko on 04/07/2017. */ @@ -55,4 +60,19 @@ public abstract class BaseModelMQQT { } return null; } + + public String getFormattedPhone(String phoneNumber) { + if (phoneNumber != null) { + int i = phoneNumber.indexOf("+"); + if (i == -1) { + phoneNumber = "+" + phoneNumber; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + phoneNumber = formatNumber(phoneNumber, Locale.getDefault().getCountry()); + } else { + phoneNumber = formatNumber(phoneNumber); + } + } + return phoneNumber; + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java index 75f278be2305e9898e71f439ad9c49b2ed1c1fb5..9eed21849e5d4cfb6e0281c6675ba3fac5650e47 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Contact.java @@ -12,6 +12,9 @@ import java.util.Random; import java.util.UUID; public class Contact extends BaseModelMQQT implements Parcelable { + public static final String FRIEND = "friend"; + public static final String REQUESTED = "not_confirmed"; + public static final String ACCEPT = "confirm"; @Order(1) public String phoneId; @Order(2) public String avatar; @@ -33,8 +36,8 @@ public class Contact extends BaseModelMQQT implements Parcelable { } public String getPhone() { - if (!TextUtils.isEmpty(person_id)) { - String[] split = person_id.split("_"); + if (!TextUtils.isEmpty(phoneId)) { + String[] split = phoneId.split("_"); return split[0]; } return null; diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Error.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Error.java index 1e72df5f4cff125ad4df8c5dfb50abd2995fb623..49d739f7dc4b860865660bdf33a0dbcf05dbb96e 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Error.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Error.java @@ -46,4 +46,10 @@ public class Error extends BaseModelMQQT { @Override public Object encode() { return null; } + + @Override public String toString() { + return "Error{" + + "msg=" + msg + + '}'; + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java index b4beed8dae8167754952804925b65bf6671d1856..cbf4c49846c776aac9635409c862b8354d8e3287 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java @@ -71,7 +71,7 @@ public class Io extends BaseModelMQQT { } public interface Responses { - + String NOT_AUTHORIZED = "not_authorized"; String LOGIN = "login"; String SMS_SEND = "sms_send"; String NOT_VERIFIED = "not_verified"; @@ -83,4 +83,14 @@ public class Io extends BaseModelMQQT { String SESSION_NOT_FOUND = "session_not_found"; String ALREADY_REGISTERED = "already_registered"; } + + @Override public String toString() { + String mCode = code != null ? code.toString() : "null"; + String mData = data != null ? data.toString() : "null"; + return + "Io{" + + "code=" + mCode + + ", data=" + mData + + '}'; + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java index f56ee121e8d3c4157eb04ea3c3219c1e363aac95..4cd49855f1747c51028f89f3e8a891b20232a61d 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Roster.java @@ -1,9 +1,7 @@ package com.ninja.mobile.communicator.data.models.mqtt; -import android.os.Build; import android.os.Parcel; import android.os.Parcelable; -import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import com.ninja.mobile.communicator.data.models.mqtt.annotations.Order; @@ -11,10 +9,6 @@ import com.ninja.mobile.communicator.data.server.bert.BertAtom; import com.ninja.mobile.communicator.data.server.bert.BertTuple; import java.util.ArrayList; -import java.util.Locale; -import java.util.Random; - -import static android.telephony.PhoneNumberUtils.formatNumber; public class Roster extends BaseModelMQQT implements Parcelable { @@ -36,31 +30,6 @@ public class Roster extends BaseModelMQQT implements Parcelable { return phone + "_" + id; } - public static Roster getMockData() { - Roster roster = new Roster(); - roster.id = new Random().nextLong(); - roster.names = "names"; - roster.surnames = "Surnames"; - for (int i = 0; i < 20; i++) { - roster.userlist.add(Contact.getMockData()); - } - return roster; - } - - public String getFormattedPhone() { - String phoneNumber = phone; - int i = phone.indexOf("+"); - if (i == -1) { - phoneNumber = "+" + phoneNumber; - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - phoneNumber = PhoneNumberUtils.formatNumber(phoneNumber, Locale.getDefault().getCountry()); - } else { - phoneNumber = formatNumber(phoneNumber); - } - return phoneNumber; - } - @Override public Roster decode(BertTuple bertTuple) { return null; } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java index 337d2edbf99dfd5ecda28ee6f30502b74dfcacce..de68b8801f0138fd5a6d3c1cd98c5c4e07746aec 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java @@ -3,9 +3,7 @@ package com.ninja.mobile.communicator.data.server; import android.app.Service; import android.content.Context; import android.content.Intent; -import android.os.Handler; import android.os.IBinder; -import android.os.Message; import android.support.annotation.Nullable; import com.ninja.mobile.communicator.BuildConfig; @@ -103,7 +101,7 @@ public class PahoService extends Service { if (data instanceof SendMessage) { SendMessage sendMessage = (SendMessage) data; PostData postData = sendMessage.getData(); - logSentMsg(sendMessage.getData().eventTopic.name(), postData.data); + logSentMsg(sendMessage.getData().eventTopic.name() + " " + getAuthTopic(), postData.data); PahoService.this.publishMessage(sendMessage.getData().eventTopic.ordinal(), getAuthTopic(), postData.data); } else if (data instanceof SubscribeMessage) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..9b0d1a5044cee4da137560612346727a7b095fb1 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/HistoryPresenter.java @@ -0,0 +1,31 @@ +package com.ninja.mobile.communicator.mvp.presenters; + +import com.arellomobile.mvp.InjectViewState; +import com.ninja.mobile.communicator.data.models.LocalContact; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.data.models.mqtt.Response; +import com.ninja.mobile.communicator.mvp.view.HistoryView; + + +@InjectViewState +public class HistoryPresenter extends BasePresenter { + + + + @Override protected Class[] getFilter() { + //TODO HZ + return new Class[0]; + } + + @Override protected void handleResponse(Response response) { + //TODO HZ + } + + public void getHistory(){ + getViewState().setAllContacts(mDataManager.getProfile().getRoster().userlist); + } + + public void acceptContact(Contact item) { + //TODO + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java index 422f05369d7c79d79d5d8947d15f1647ee7b2e70..0800ca3e1810dd4f5a7db73adfe2d9ccba50e45c 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java @@ -72,6 +72,7 @@ public class LoginPresenter extends BasePresenter { getViewState().showProgressDialog(); String phone = getPhone(); mLoginType = loginType; + mDataManager.setPhoneNumber(phone); switch (loginType) { case Sms: mDataManager.requestSms(phone, false); @@ -257,7 +258,6 @@ public class LoginPresenter extends BasePresenter { private void loginUser(Profile profile) { mDataManager.saveProfile(profile); - mDataManager.setPhoneNumber(getPhone()); if (StringUtils.isNotEmpty(profile.getRoster().names)) { navigateToMainScreen(); mDataManager.setIsUserConfirmed(); diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java new file mode 100644 index 0000000000000000000000000000000000000000..f0cde78ea5189bdb4fd20f27e219fc8c40778dfb --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/HistoryView.java @@ -0,0 +1,16 @@ +package com.ninja.mobile.communicator.mvp.view; + +import com.arellomobile.mvp.MvpView; +import com.ninja.mobile.communicator.data.models.LocalContact; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; + +import java.util.List; + +public interface HistoryView extends MvpView { + + void setAllContacts(List contactList); + + void showLocalProgress(); + + void hideLocalProgress(); +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java index c74bdb53b304abbdd07302dc05d6ba675dcd80de..8599818540ff2494fc2a58ef81a3256a8d3f2db3 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/HomeActivity.java @@ -15,6 +15,7 @@ import com.ninja.mobile.communicator.ui.base.BaseActivity; import com.ninja.mobile.communicator.ui.base.BaseFragment; import com.ninja.mobile.communicator.ui.fragments.contacts.AddContactByPhoneFragment; import com.ninja.mobile.communicator.ui.fragments.contacts.ContactsFragment; +import com.ninja.mobile.communicator.ui.fragments.contacts.HistoryFragment; import com.ninja.mobile.communicator.ui.fragments.profile.MyProfileFragment; import com.ninja.mobile.communicator.ui.fragments.profile.UserProfileFragment; import com.ninja.mobile.communicator.ui.views.CascadeWheel; @@ -74,6 +75,10 @@ public class HomeActivity extends BaseActivity implements HomeView { navigateToContacts(); break; + case Chats: + havigateToHistory(); + break; + case Search: navigateToAddContact(); break; @@ -114,6 +119,12 @@ public class HomeActivity extends BaseActivity implements HomeView { NynjaApp.getRouter().replaceScreen(MyProfileFragment.class.getSimpleName()); } + + //TODO add at wheel lvl 2 + private void havigateToHistory(){ + NynjaApp.getRouter().replaceScreen(HistoryFragment.class.getSimpleName()); + } + @Override public void showInternetError() { } @@ -157,6 +168,8 @@ public class HomeActivity extends BaseActivity implements HomeView { Object transitionData = replace.getTransitionData(); if (transitionData instanceof Contact) fragment = UserProfileFragment.newInstance((Contact) transitionData); + } else if (HistoryFragment.class.getSimpleName().equalsIgnoreCase(screenKey)){ + fragment = HistoryFragment.newInstance(); } return fragment; } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..44b198c248ccf830e764acca1a2a434324c0dda2 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/HistoryAdapter.java @@ -0,0 +1,35 @@ +package com.ninja.mobile.communicator.ui.adapters; + +import android.view.ViewGroup; + +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.intetfaces.OnItemClickListener; +import com.ninja.mobile.communicator.ui.adapters.viewholders.HistoryVh; +import com.ninja.mobile.communicator.ui.base.BaseAdapter; +import com.ninja.mobile.communicator.ui.base.BaseViewHolder; + +import java.util.List; + +public class HistoryAdapter extends BaseAdapter { + + + public HistoryAdapter(List list) { + super(list); + } + + public HistoryAdapter(List list, OnItemClickListener onItemClickListener) { + super(list, onItemClickListener); + } + + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return new HistoryVh(parent); + } + + @Override + public void onBindViewHolder(BaseViewHolder holder, int position) { + holder.setData(getItem(position)); + } + + +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java new file mode 100644 index 0000000000000000000000000000000000000000..b1391f20f033bea14ab56be061762c5c4353ce4f --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/adapters/viewholders/HistoryVh.java @@ -0,0 +1,57 @@ +package com.ninja.mobile.communicator.ui.adapters.viewholders; + +import android.support.v4.content.ContextCompat; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.bumptech.glide.Glide; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.ui.base.BaseViewHolder; + +import butterknife.BindView; + +public class HistoryVh extends BaseViewHolder { + @BindView(R.id.li_histore_tv_name) TextView mName; + @BindView(R.id.li_history_tv_phone) TextView mPhone; + @BindView(R.id.li_history_tv_status) TextView mAdd; + @BindView(R.id.li_history_iv_photo) ImageView mPhoto; + + public HistoryVh(ViewGroup parent) { + super(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_history, parent, false)); + } + + @Override public void setData(Contact item) { + mName.setText(item.getFullName()); + mPhone.setText(item.getPhone()); + + if (item.status != null) { + String status = item.status.toString(); + + if (Contact.FRIEND.equalsIgnoreCase(status)) { + mAdd.setText(getContext().getString(R.string.history_added)); + mAdd.setGravity(Gravity.END | Gravity.CENTER_VERTICAL); + mAdd.setBackground(null); + mAdd.setTextColor(ContextCompat.getColor(getContext(), R.color.white)); + } else if (Contact.ACCEPT.equalsIgnoreCase(status)) { + mAdd.setText(getContext().getString(R.string.history_accept)); + mAdd.setGravity(Gravity.CENTER); + mAdd.setBackgroundResource(R.drawable.red_round_button); + mAdd.setTextColor(ContextCompat.getColor(getContext(), R.color.pencil_color)); + } else if (Contact.REQUESTED.equalsIgnoreCase(status)) { + mAdd.setText(getContext().getString(R.string.history_requested)); + mAdd.setGravity(Gravity.END | Gravity.CENTER_VERTICAL); + mAdd.setBackground(null); + mAdd.setTextColor(ContextCompat.getColor(getContext(), R.color.colorAccent)); + } + } + Glide.with(getContext()) + .load(item.avatar == null ? "" : item.avatar) + .placeholder(R.drawable.contact_placeholder) + .into(mPhoto); + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..d4a1e828d26fa9d54805ffcb46bad80639a2bfee --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/contacts/HistoryFragment.java @@ -0,0 +1,66 @@ +package com.ninja.mobile.communicator.ui.fragments.contacts; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ProgressBar; + +import com.arellomobile.mvp.presenter.InjectPresenter; +import com.ninja.mobile.communicator.R; +import com.ninja.mobile.communicator.data.models.mqtt.Contact; +import com.ninja.mobile.communicator.data.models.mqtt.History; +import com.ninja.mobile.communicator.mvp.presenters.HistoryPresenter; +import com.ninja.mobile.communicator.mvp.view.HistoryView; +import com.ninja.mobile.communicator.ui.adapters.HistoryAdapter; +import com.ninja.mobile.communicator.ui.base.BaseFragment; + +import java.util.List; + +import butterknife.BindView; + +public class HistoryFragment extends BaseFragment implements HistoryView { + + @BindView(R.id.f_history_recycler) RecyclerView mRecyclerView; + @BindView(R.id.f_history_progress) ProgressBar mProgressBar; + + @InjectPresenter HistoryPresenter mPresenter; + + private HistoryAdapter mAdapter; + + public static HistoryFragment newInstance(){ + return new HistoryFragment(); + } + + @Nullable @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_history, container, false); + } + + + @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + getHistory(); + } + + private void getHistory() { + mPresenter.getHistory(); + } + + @Override public void setAllContacts(List contactList) { + mAdapter = new HistoryAdapter(contactList, (item, position) -> mPresenter.acceptContact(item)); + mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + mRecyclerView.setAdapter(mAdapter); + } + + @Override public void showLocalProgress() { + mProgressBar.setVisibility(View.VISIBLE); + } + + @Override public void hideLocalProgress() { + mProgressBar.setVisibility(View.GONE); + } +} diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java index 7779eae3f7913c2bf63680331585ee9ca0c469eb..1fbc06f4f257437fde669fd1559a5d0ada280350 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/MyProfileFragment.java @@ -163,7 +163,7 @@ public class MyProfileFragment extends BaseFragment implements MyProfileView, public void initPerson(Profile profile) { Roster roster = profile.getRoster(); mUserName.setText(roster.getFullName()); - mUserPhone.setText(roster.getFormattedPhone()); + mUserPhone.setText(roster.getFormattedPhone(roster.phone)); } @Override @@ -191,7 +191,7 @@ public class MyProfileFragment extends BaseFragment implements MyProfileView, private void setPersonModel(Profile profile) { Roster roster = profile.getRoster(); mUserName.setText(roster.getFullName()); - mUserPhone.setText(roster.getFormattedPhone()); + mUserPhone.setText(roster.getFormattedPhone(roster.phone)); } private void decodePhotoFromGallery(Intent data) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java index e678f07de338173cfe5cf5211abc63ee229b66f8..a580885f48439b40641a4c5e768623112b5cf2cd 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/profile/UserProfileFragment.java @@ -60,7 +60,7 @@ public class UserProfileFragment extends BaseFragment implements UserProfileView private void initViews(@NonNull Contact contact) { mUserName.setText(contact.getFullName()); - mUserPhone.setText(contact.getPhone()); + mUserPhone.setText(contact.getFormattedPhone(contact.getPhone())); mAddContact.setVisibility(contact.isFriend() ? View.INVISIBLE : View.VISIBLE); } diff --git a/app/src/main/res/drawable/temp_shadow_history_background.xml b/app/src/main/res/drawable/temp_shadow_history_background.xml new file mode 100644 index 0000000000000000000000000000000000000000..b00f8088c09a42cc3195af243b217d37f447fb24 --- /dev/null +++ b/app/src/main/res/drawable/temp_shadow_history_background.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml new file mode 100644 index 0000000000000000000000000000000000000000..305a09be23dfcff1bc5e14b7a86bc91a957b0eb2 --- /dev/null +++ b/app/src/main/res/layout/fragment_history.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_history.xml b/app/src/main/res/layout/item_history.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc1aed663302a572a4f0e479820832ab169d142e --- /dev/null +++ b/app/src/main/res/layout/item_history.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + \ 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 dd25dfb6ccb215d49c987ad6cb76f9d26ecf9034..8aafca50e3a020edfffc491b5087888cae988cc5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,4 +54,9 @@ Enter Phone Number User is not found. + + Accept + Added + Requested +