Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.platfomni.rulybka.ui.menu;
- import android.Manifest;
- import android.arch.lifecycle.ViewModelProvider;
- import android.arch.lifecycle.ViewModelProviders;
- import android.content.ActivityNotFoundException;
- import android.content.Context;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.support.annotation.NonNull;
- import android.support.annotation.Nullable;
- import android.view.View;
- import android.widget.LinearLayout;
- import com.google.gson.internal.LinkedTreeMap;
- import com.mbiamont.ga_annotations.annotation.TrackEvent;
- import com.mbiamont.ga_annotations.annotation.TrackScreen;
- import com.platfomni.rulybka.R;
- import com.platfomni.rulybka.analytics.AnEvents;
- import com.platfomni.rulybka.ui.auth.AuthActivity;
- import com.platfomni.rulybka.ui.city_choose.CityChooseActivity;
- import com.platfomni.rulybka.ui.common.BasePageInjectableFragment;
- import com.platfomni.rulybka.ui.dashboard.DashboardFragment;
- import com.platfomni.rulybka.ui.feedback.FeedbackFragment;
- import com.platfomni.rulybka.ui.web.WebFragment;
- import com.platfomni.rulybka.ui.widget.MenuItemView;
- import com.platfomni.rulybka.util.GAUtils;
- import com.platfomni.rulybka.util.MailUtils;
- import com.platfomni.rulybka.valueobject.Client;
- import com.platfomni.rulybka.valueobject.Parameter;
- import com.platfomni.rulybka.valueobject.Resource;
- import java.util.Map;
- import javax.inject.Inject;
- import butterknife.BindView;
- import butterknife.OnClick;
- public class MenuFragment extends BasePageInjectableFragment {
- @BindView(R.id.my_city)
- protected MenuItemView myCity;
- @BindView(R.id.report)
- protected LinearLayout report;
- Client client;
- String messageTheme;
- @Inject
- ViewModelProvider.Factory viewModelFactory;
- private MenuViewModel viewModel;
- public MenuFragment() {
- // Required empty public constructor
- }
- public static MenuFragment newInstance() {
- return new MenuFragment();
- }
- @TrackScreen(name = AnEvents.SCREEN_MENU)
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- }
- @Override
- public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- }
- @Override
- public void onResume() {
- super.onResume();
- viewModel.getClient().observe(this, this::showClient);
- }
- @Override
- public void onActivityCreated(@Nullable final Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- viewModel = ViewModelProviders.of(this, viewModelFactory).get(MenuViewModel.class);
- viewModel.getCurrentCity().observe(this, city -> {
- myCity.setClarification(city.getName());
- });
- viewModel.getClient().observe(this, this::showClient);
- }
- private void showClient(Resource<Client> resource) {
- if (resource != null) {
- client = resource.data;
- }
- }
- @Override
- public CharSequence getTitle(final Context context, final int toolbarFreeWidth) {
- return context.getString(R.string.label_menu);
- }
- @Override
- protected int getLayoutResId() {
- return R.layout.menu_fragment;
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_REPORT, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick(R.id.report)
- protected void onReportClick() {
- viewModel.getErrorNumber().observe(this, this::sendMail);
- }
- private void openUrl(Resource<Parameter> resource) {
- if (resource.isSucceed() && resource.data != null) {
- switch (resource.data.getKey()) {
- case Parameter.SOCIAL_URL_TM:
- openTelegram(resource.data.getValue());
- break;
- case Parameter.SOCIAL_URL_IG:
- openInstagram(resource.data.getValue());
- break;
- case Parameter.SOCIAL_URL_VK:
- openVK(resource.data.getValue());
- break;
- case Parameter.SOCIAL_URL_OK:
- openOK(resource.data.getValue());
- break;
- }
- }
- }
- private void sendMail(Resource<Object> objectResource) {
- if (objectResource.isLoading()) return;
- if (objectResource.isError()) {
- messageTheme = "Сообщение о проблеме";
- } else if (objectResource.data != null) {
- Map<String, String> mapError = ((LinkedTreeMap) objectResource.data);
- String errorNumber = mapError.get("error_number");
- messageTheme = "Сообщение о проблеме № " + errorNumber;
- }
- if (Build.VERSION.SDK_INT >= 23) {
- if (getActivity().checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
- MailUtils.sendUserMail(getActivity(), getString(R.string.email_support), true, messageTheme);
- } else {
- requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
- }
- } else {
- MailUtils.sendUserMail(getActivity(), getString(R.string.email_support), true, messageTheme);
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- if (requestCode == 1) {
- boolean havePermissions = grantResults[0] == PackageManager.PERMISSION_GRANTED;
- MailUtils.sendUserMail(getActivity(), getString(R.string.email_support), havePermissions, messageTheme);
- }
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_LK, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick(R.id.dashboard)
- protected void onDashBoardClick() {
- GAUtils.sendEvent(GAUtils.TRANSITION_SPECIALS_TO_LK);
- if (viewModel.hasAccount()) {
- nextFragment(DashboardFragment.newInstance());
- } else {
- AuthActivity.start(getActivity());
- }
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_SPECIALS_FEEDBACK, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick(R.id.feedback)
- protected void onFeedbackClick() {
- GAUtils.sendEvent(GAUtils.TRANSITION_SPECIALS_TO_SPECIALS_FEEDBACK);
- nextFragment(FeedbackFragment.newInstance());
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_CITY_CHOOSE, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick(R.id.my_city)
- protected void onMyCityClick() {
- GAUtils.sendEvent(GAUtils.TRANSITION_SPECIALS_TO_CITY_CHOOSE);
- CityChooseActivity.start(getActivity());
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_AGREEMENTS, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick(R.id.agreement)
- protected void onAgreementClick() {
- GAUtils.sendEvent(GAUtils.TRANSITION_SPECIALS_TO_AGREEMENTS);
- nextFragment(WebFragment.newInstance(WebFragment.TYPE_AGREEMENT));
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_AGREEMENTS, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick(R.id.talkAboutProblem)
- protected void onProblemClick() {
- GAUtils.sendEvent(GAUtils.TRANSITION_SPECIALS_TO_AGREEMENTS);
- viewModel.getErrorNumber().observe(this, this::sendMail);
- }
- @TrackEvent(action = AnEvents.TRANSITION_SPECIALS_TO_AGREEMENTS, category = AnEvents.CATEGORY_INFO, label = AnEvents.LABEL_VIEW)
- @OnClick({R.id.telegram, R.id.oklassniki, R.id.instagram, R.id.vk})
- protected void onMessangerClick(View v) {
- String key = "";
- switch (v.getId()) {
- case R.id.telegram:
- viewModel.getTelegramUrl().observe(this, this::openUrl);
- break;
- case R.id.instagram:
- viewModel.getInstaUrl().observe(this, this::openUrl);
- break;
- case R.id.vk:
- viewModel.getVkUrl().observe(this, this::openUrl);
- break;
- case R.id.oklassniki:
- viewModel.getOkUrl().observe(this, this::openUrl);
- break;
- }
- }
- private void openTelegram(String value) {
- try {
- Uri telegramUri = Uri.parse("tg://resolve?domain=" + value.split("me/")[1]);
- Intent telegramIntent = new Intent(Intent.ACTION_VIEW, telegramUri);
- startActivity(telegramIntent);
- } catch (ActivityNotFoundException e) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(value)));
- } catch (Exception e) {
- e.getLocalizedMessage();
- }
- }
- private void openInstagram(String value) {
- try {
- Uri instaUri = Uri.parse("http://instagram.com/_u/" + value.split("com/")[1]);
- Intent telegramIntent = new Intent(Intent.ACTION_VIEW, instaUri);
- startActivity(telegramIntent);
- } catch (ActivityNotFoundException e) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(value)));
- } catch (Exception e) {
- e.getLocalizedMessage();
- }
- }
- private void openVK(String value) {
- try {
- Uri vkUri = Uri.parse(value);
- Intent vkIntent = new Intent(Intent.ACTION_VIEW, vkUri);
- vkIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(vkIntent);
- } catch (ActivityNotFoundException e) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(value)));
- } catch (Exception e) {
- e.getLocalizedMessage();
- }
- }
- private void openOK(String value) {
- try {
- Uri okUri = Uri.parse(value);
- Intent okIntent = new Intent(Intent.ACTION_VIEW, okUri);
- startActivity(okIntent);
- } catch (ActivityNotFoundException e) {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(value)));
- } catch (Exception e) {
- e.getLocalizedMessage();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement