Search in sources :

Example 36 with User

use of com.waz.api.User in project wire-android by wireapp.

the class RootPreferences method sendGenericInvite.

private void sendGenericInvite() {
    if (getControllerFactory() == null || getControllerFactory().isTornDown() || getStoreFactory() == null || getStoreFactory().isTornDown()) {
        return;
    }
    User self = getStoreFactory().getProfileStore().getSelfUser();
    String name = self != null && self.getDisplayName() != null ? self.getDisplayName() : "";
    String username = self != null && self.getUsername() != null ? self.getUsername() : "";
    Intent sharingIntent = IntentUtils.getInviteIntent(getString(R.string.people_picker__invite__share_text__header, name), getString(R.string.people_picker__invite__share_text__body, StringUtils.formatHandle(username)));
    startActivity(Intent.createChooser(sharingIntent, getString(R.string.people_picker__invite__share_details_dialog)));
    ((BaseScalaActivity) getActivity()).injectJava(GlobalTrackingController.class).tagEvent(new OpenedGenericInviteMenuEvent(OpenedGenericInviteMenuEvent.EventContext.SETTINGS));
    ((BaseScalaActivity) getActivity()).injectJava(GlobalTrackingController.class).onApplicationScreen(ApplicationScreen.SEND_GENERIC_INVITE_MENU);
}
Also used : User(com.waz.api.User) GlobalTrackingController(com.waz.zclient.tracking.GlobalTrackingController) OpenedGenericInviteMenuEvent(com.waz.zclient.controllers.tracking.events.connect.OpenedGenericInviteMenuEvent) Intent(android.content.Intent)

Example 37 with User

use of com.waz.api.User in project wire-android by wireapp.

the class ConversationFragment method onErrorCanNotSentMessageToUnverifiedConversation.

private void onErrorCanNotSentMessageToUnverifiedConversation(final ErrorsList.ErrorDescription errorDescription) {
    if (getControllerFactory().getNavigationController().getCurrentPage() != Page.MESSAGE_STREAM) {
        return;
    }
    KeyboardUtils.hideKeyboard(getActivity());
    final IConversation currentConversation = errorDescription.getConversation();
    final Iterable<? extends User> users = currentConversation.getUsers();
    final Map<User, String> userNameMap = new HashMap<>();
    int tmpUnverifiedDevices = 0;
    int userCount = 0;
    final boolean onlySelfChanged;
    for (User user : users) {
        if (user.getVerified() == Verification.VERIFIED) {
            continue;
        }
        userCount++;
        userNameMap.put(user, user.getDisplayName());
        for (OtrClient client : user.getOtrClients()) {
            if (client.getVerified() == Verification.VERIFIED) {
                continue;
            }
            tmpUnverifiedDevices++;
        }
    }
    if (self != null && self.getUser().getVerified() != Verification.VERIFIED) {
        onlySelfChanged = userCount == 0;
        userCount++;
        userNameMap.put(self.getUser(), getString(R.string.conversation_degraded_confirmation__header__you));
        for (OtrClient client : self.getUser().getOtrClients()) {
            if (client.getVerified() == Verification.VERIFIED) {
                continue;
            }
            tmpUnverifiedDevices++;
        }
    } else {
        onlySelfChanged = false;
    }
    final List<String> userNameList = new ArrayList<>(userNameMap.values());
    final int userNameCount = userNameList.size();
    final String header;
    if (userNameCount == 0) {
        header = getResources().getString(R.string.conversation__degraded_confirmation__header__someone);
    } else if (userNameCount == 1) {
        final int unverifiedDevices = Math.max(1, tmpUnverifiedDevices);
        header = getResources().getQuantityString(R.plurals.conversation__degraded_confirmation__header__single_user, unverifiedDevices, userNameList.get(0));
    } else {
        header = getString(R.string.conversation__degraded_confirmation__header__multiple_user, TextUtils.join(", ", userNameList.subList(0, userNameCount - 1)), userNameList.get(userNameCount - 1));
    }
    int tmpMessageCount = 0;
    for (Message m : errorDescription.getMessages()) {
        tmpMessageCount++;
    }
    final int messageCount = Math.max(1, tmpMessageCount);
    final String message = getResources().getQuantityString(R.plurals.conversation__degraded_confirmation__message, messageCount);
    final ConfirmationCallback callback = new ConfirmationCallback() {

        @Override
        public void positiveButtonClicked(boolean checkboxIsSelected) {
            final Iterable<? extends Message> messages = errorDescription.getMessages();
            for (Message message : messages) {
                errorDescription.dismiss();
                message.retry();
            }
        }

        @Override
        public void negativeButtonClicked() {
        }

        @Override
        public void canceled() {
        }

        @Override
        public void onHideAnimationEnd(boolean confirmed, boolean canceled, boolean checkboxIsSelected) {
            if (confirmed || canceled) {
                return;
            }
            if (onlySelfChanged) {
                getContext().startActivity(ZetaPreferencesActivity.getOtrDevicesPreferencesIntent(getContext()));
            } else {
                final View anchorView = ViewUtils.getView(getActivity(), R.id.cursor_menu_item_participant);
                getControllerFactory().getConversationScreenController().showParticipants(anchorView, true);
            }
        }
    };
    final String positiveButton = getString(R.string.conversation__degraded_confirmation__positive_action);
    final String negativeButton = onlySelfChanged ? getString(R.string.conversation__degraded_confirmation__negative_action_self) : getResources().getQuantityString(R.plurals.conversation__degraded_confirmation__negative_action, userCount);
    final ConfirmationRequest request = new ConfirmationRequest.Builder().withHeader(header).withMessage(message).withPositiveButton(positiveButton).withNegativeButton(negativeButton).withConfirmationCallback(callback).withCancelButton().withHeaderIcon(R.drawable.shield_half).withWireTheme(getControllerFactory().getThemeController().getThemeDependentOptionsTheme()).build();
    getControllerFactory().getConfirmationController().requestConfirmation(request, IConfirmationController.CONVERSATION);
}
Also used : User(com.waz.api.User) ConfirmationCallback(com.waz.zclient.controllers.confirmation.ConfirmationCallback) Message(com.waz.api.Message) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) IConversation(com.waz.api.IConversation) ShieldView(com.waz.zclient.ui.views.e2ee.ShieldView) AudioMessageRecordingView(com.waz.zclient.ui.audiomessage.AudioMessageRecordingView) LoadingIndicatorView(com.waz.zclient.views.LoadingIndicatorView) MessagesListView(com.waz.zclient.messages.MessagesListView) View(android.view.View) TextView(android.widget.TextView) TypingIndicatorView(com.waz.zclient.pages.main.conversation.views.TypingIndicatorView) AbsListView(android.widget.AbsListView) ActionMenuView(android.support.v7.widget.ActionMenuView) SuppressLint(android.annotation.SuppressLint) OtrClient(com.waz.api.OtrClient) ConfirmationRequest(com.waz.zclient.controllers.confirmation.ConfirmationRequest)

Example 38 with User

use of com.waz.api.User in project wire-android by wireapp.

the class SendConnectRequestFragment method onConnectUserUpdated.

//////////////////////////////////////////////////////////////////////////////////////////
//
//  IConnectStoreObserver
//
//////////////////////////////////////////////////////////////////////////////////////////
@Override
public void onConnectUserUpdated(final User user, final IConnectStore.UserRequester userRequester) {
    if (this.userRequester != userRequester) {
        return;
    }
    imageAssetImageViewProfile.connectImageAsset(user.getPicture());
    displayNameTextView.setText(user.getName());
    userDetailsView.setUser(user);
    connectButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (user == null || getStoreFactory() == null || getStoreFactory().isTornDown()) {
                return;
            }
            User me = getStoreFactory().getProfileStore().getSelfUser();
            String myName = me != null ? me.getName() : "";
            String otherName = user.getName();
            String message = getString(R.string.connect__message, otherName, myName);
            IConversation conversation = getStoreFactory().getConnectStore().connectToNewUser(user, message);
            trackSendConnectRequest(user);
            if (conversation != null) {
                KeyboardUtils.hideKeyboard(getActivity());
                getContainer().onConnectRequestWasSentToUser();
            }
        }
    });
    if (userRequester == IConnectStore.UserRequester.PARTICIPANTS) {
        footerMenu.setRightActionText(getString(R.string.glyph__minus));
    }
    footerMenu.setCallback(new FooterMenuCallback() {

        @Override
        public void onLeftActionClicked() {
            showConnectButtonInsteadOfFooterMenu();
        }

        @Override
        public void onRightActionClicked() {
            if (userRequester == IConnectStore.UserRequester.PARTICIPANTS) {
                getContainer().showRemoveConfirmation(user);
            }
        }
    });
    if (userRequester == IConnectStore.UserRequester.PARTICIPANTS) {
        footerMenu.setVisibility(View.VISIBLE);
        connectButton.setVisibility(View.GONE);
    } else {
        footerMenu.setVisibility(View.GONE);
        connectButton.setVisibility(View.VISIBLE);
    }
}
Also used : User(com.waz.api.User) IConversation(com.waz.api.IConversation) FooterMenuCallback(com.waz.zclient.views.menus.FooterMenuCallback) ImageAssetImageView(com.waz.zclient.views.images.ImageAssetImageView) View(android.view.View) UserDetailsView(com.waz.zclient.ui.views.UserDetailsView) TextView(android.widget.TextView)

Example 39 with User

use of com.waz.api.User in project wire-android by wireapp.

the class ParticipantBodyFragment method conversationUpdated.

@Override
public void conversationUpdated(final IConversation conversation) {
    footerMenu.setVisibility(View.VISIBLE);
    if (conversation.getType() == IConversation.Type.ONE_TO_ONE) {
        footerMenu.setLeftActionText(getString(R.string.glyph__plus));
        topBorder.setVisibility(View.INVISIBLE);
        footerMenu.setRightActionText(getString(R.string.glyph__more));
        getStoreFactory().getSingleParticipantStore().setUser(conversation.getOtherParticipant());
    } else {
        imageAssetImageView.setVisibility(View.GONE);
        // Check if self user is member for group conversation
        if (conversation.isMemberOfConversation()) {
            footerMenu.setLeftActionText(getString(R.string.glyph__add_people));
            footerMenu.setRightActionText(getString(R.string.glyph__more));
            footerMenu.setLeftActionLabelText(getString(R.string.conversation__action__add_people));
        } else {
            footerMenu.setLeftActionText("");
            footerMenu.setRightActionText("");
            footerMenu.setLeftActionLabelText("");
        }
        if (lastParticipantAboveFooter()) {
            topBorder.setVisibility(View.INVISIBLE);
        } else {
            topBorder.setVisibility(View.VISIBLE);
        }
    }
    footerMenu.setCallback(new FooterMenuCallback() {

        @Override
        public void onLeftActionClicked() {
            if (userRequester == IConnectStore.UserRequester.POPOVER) {
                final User user = getStoreFactory().getSingleParticipantStore().getUser();
                if (user.isMe()) {
                    getControllerFactory().getConversationScreenController().hideParticipants(true, false);
                    // Go to conversation with this user
                    getControllerFactory().getPickUserController().hidePickUserWithoutAnimations(getContainer().getCurrentPickerDestination());
                    getStoreFactory().getConversationStore().setCurrentConversation(user.getConversation(), ConversationChangeRequester.START_CONVERSATION);
                    return;
                }
            }
            if (!conversation.isMemberOfConversation()) {
                return;
            }
            ((BaseScalaActivity) getActivity()).injectJava(GlobalTrackingController.class).tagEvent(new OpenedGroupActionEvent());
            getControllerFactory().getConversationScreenController().addPeopleToConversation();
        }

        @Override
        public void onRightActionClicked() {
            getStoreFactory().getNetworkStore().doIfHasInternetOrNotifyUser(new NetworkAction() {

                @Override
                public void execute(NetworkMode networkMode) {
                    if (!conversation.isMemberOfConversation()) {
                        return;
                    }
                    if (userRequester == IConnectStore.UserRequester.POPOVER) {
                        User otherUser = conversation.getOtherParticipant();
                        getContainer().toggleBlockUser(otherUser, otherUser.getConnectionStatus() != User.ConnectionStatus.BLOCKED);
                    } else {
                        getControllerFactory().getConversationScreenController().showConversationMenu(IConversationScreenController.CONVERSATION_DETAILS, conversation, null);
                    }
                }

                @Override
                public void onNoNetwork() {
                    ViewUtils.showAlertDialog(getActivity(), R.string.alert_dialog__no_network__header, R.string.leave_conversation_failed__message, R.string.alert_dialog__confirmation, null, true);
                }
            });
        }
    });
}
Also used : User(com.waz.api.User) BaseScalaActivity(com.waz.zclient.BaseScalaActivity) OpenedGroupActionEvent(com.waz.zclient.controllers.tracking.events.group.OpenedGroupActionEvent) FooterMenuCallback(com.waz.zclient.views.menus.FooterMenuCallback) NetworkMode(com.waz.api.NetworkMode) NetworkAction(com.waz.zclient.core.stores.network.NetworkAction)

Example 40 with User

use of com.waz.api.User in project wire-android by wireapp.

the class ParticipantBodyFragment method onItemClick.

//////////////////////////////////////////////////////////////////////////////////////////
//
//  Notifications
//
//////////////////////////////////////////////////////////////////////////////////////////
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    User user = participantsAdapter.getItem(position);
    getControllerFactory().getConversationScreenController().showUser(user);
}
Also used : User(com.waz.api.User)

Aggregations

User (com.waz.api.User)46 Test (org.junit.Test)15 IConversation (com.waz.api.IConversation)9 UserDetailsView (com.waz.zclient.ui.views.UserDetailsView)9 OtrClient (com.waz.api.OtrClient)8 ViewTest (com.waz.zclient.testutils.ViewTest)8 FragmentTest (com.waz.zclient.testutils.FragmentTest)7 SelectedTopUser (com.waz.zclient.controllers.tracking.events.connect.SelectedTopUser)5 View (android.view.View)4 GlobalTrackingController (com.waz.zclient.tracking.GlobalTrackingController)4 ArrayList (java.util.ArrayList)4 Intent (android.content.Intent)3 ContactDetails (com.waz.api.ContactDetails)3 AbsListView (android.widget.AbsListView)2 TextView (android.widget.TextView)2 OpenedGenericInviteMenuEvent (com.waz.zclient.controllers.tracking.events.connect.OpenedGenericInviteMenuEvent)2 FooterMenuCallback (com.waz.zclient.views.menus.FooterMenuCallback)2 SuppressLint (android.annotation.SuppressLint)1 Handler (android.os.Handler)1 ActionMenuView (android.support.v7.widget.ActionMenuView)1