Search in sources :

Example 11 with Void

use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.

the class MembersAdapter method onMemberClick.

public void onMemberClick(GroupVM groupVM, UserVM userVM, boolean isAdministrator, boolean isInvitedByMe, BaseActivity activity) {
    AlertListBuilder alertListBuilder = new AlertListBuilder();
    final ArrayList<UserPhone> phones = userVM.getPhones().get();
    alertListBuilder.addItem(activity.getString(R.string.group_context_message).replace("{0}", userVM.getName().get()), () -> activity.startActivity(Intents.openPrivateDialog(userVM.getId(), true, activity)));
    if (phones.size() != 0) {
        alertListBuilder.addItem(activity.getString(R.string.group_context_call).replace("{0}", userVM.getName().get()), () -> {
            if (phones.size() == 1) {
                activity.startActivity(Intents.call(phones.get(0).getPhone()));
            } else {
                CharSequence[] sequences = new CharSequence[phones.size()];
                for (int i = 0; i < sequences.length; i++) {
                    try {
                        Phonenumber.PhoneNumber number = PhoneNumberUtil.getInstance().parse("+" + phones.get(i).getPhone(), "us");
                        sequences[i] = phones.get(i).getTitle() + ": " + PhoneNumberUtil.getInstance().format(number, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
                    } catch (NumberParseException e) {
                        e.printStackTrace();
                        sequences[i] = phones.get(i).getTitle() + ": +" + phones.get(i).getPhone();
                    }
                }
                new AlertDialog.Builder(activity).setItems(sequences, (dialog1, which1) -> {
                    activity.startActivity(Intents.call(phones.get(which1).getPhone()));
                }).show().setCanceledOnTouchOutside(true);
            }
        });
    }
    alertListBuilder.addItem(activity.getString(R.string.group_context_view).replace("{0}", userVM.getName().get()), () -> ActorSDKLauncher.startProfileActivity(activity, userVM.getId()));
    if (groupVM.getIsCanKickAnyone().get() || (groupVM.getIsCanKickInvited().get() && isInvitedByMe)) {
        alertListBuilder.addItem(activity.getString(R.string.group_context_remove).replace("{0}", userVM.getName().get()), () -> {
            new AlertDialog.Builder(activity).setMessage(activity.getString(R.string.alert_group_remove_text).replace("{0}", userVM.getName().get())).setPositiveButton(R.string.alert_group_remove_yes, (dialog2, which1) -> {
                activity.execute(messenger().kickMember(groupVM.getId(), userVM.getId()), R.string.progress_common, new CommandCallback<Void>() {

                    @Override
                    public void onResult(Void res1) {
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(activity, R.string.toast_unable_kick, Toast.LENGTH_SHORT).show();
                    }
                });
            }).setNegativeButton(R.string.dialog_cancel, null).show().setCanceledOnTouchOutside(true);
        });
    }
    if (groupVM.getIsCanEditAdmins().get() && !userVM.isBot()) {
        alertListBuilder.addItem(!isAdministrator ? activity.getResources().getString(R.string.group_make_admin) : activity.getResources().getString(R.string.group_revoke_admin), () -> {
            if (!isAdministrator) {
                messenger().makeAdmin(groupVM.getId(), userVM.getId()).start(new CommandCallback<Void>() {

                    @Override
                    public void onResult(Void res) {
                    }

                    @Override
                    public void onError(Exception e) {
                    }
                });
            } else {
                messenger().revokeAdmin(groupVM.getId(), userVM.getId()).start(new CommandCallback<Void>() {

                    @Override
                    public void onResult(Void res) {
                    }

                    @Override
                    public void onError(Exception e) {
                    }
                });
            }
        });
    }
    alertListBuilder.build(activity).show().setCanceledOnTouchOutside(true);
}
Also used : AlertDialog(android.app.AlertDialog) Context(android.content.Context) Arrays(java.util.Arrays) ActorSDKMessenger.messenger(im.actor.sdk.util.ActorSDKMessenger.messenger) AlertListBuilder(im.actor.sdk.util.AlertListBuilder) GroupVM(im.actor.core.viewmodel.GroupVM) ArrayList(java.util.ArrayList) Screen(im.actor.sdk.util.Screen) PhoneNumberUtil(com.google.i18n.phonenumbers.PhoneNumberUtil) Toast(android.widget.Toast) AvatarView(im.actor.sdk.view.avatar.AvatarView) View(android.view.View) CommandCallback(im.actor.core.viewmodel.CommandCallback) HolderAdapter(im.actor.sdk.view.adapters.HolderAdapter) Intents(im.actor.sdk.controllers.Intents) ActorSDK(im.actor.sdk.ActorSDK) ActorSDKLauncher(im.actor.sdk.ActorSDKLauncher) Void(im.actor.runtime.actors.messages.Void) Collection(java.util.Collection) GroupMember(im.actor.core.entity.GroupMember) im.actor.runtime.actors.messages(im.actor.runtime.actors.messages) ActorSDKMessenger.users(im.actor.sdk.util.ActorSDKMessenger.users) UserPhone(im.actor.core.viewmodel.UserPhone) BaseActivity(im.actor.sdk.controllers.activity.BaseActivity) ViewGroup(android.view.ViewGroup) ActorBinder(im.actor.sdk.controllers.ActorBinder) AlertDialog(android.app.AlertDialog) R(im.actor.sdk.R) UserVM(im.actor.core.viewmodel.UserVM) TextView(android.widget.TextView) NumberParseException(com.google.i18n.phonenumbers.NumberParseException) Optional(java.util.Optional) Activity(android.app.Activity) ViewHolder(im.actor.sdk.view.adapters.ViewHolder) Phonenumber(com.google.i18n.phonenumbers.Phonenumber) NumberParseException(com.google.i18n.phonenumbers.NumberParseException) UserPhone(im.actor.core.viewmodel.UserPhone) AlertListBuilder(im.actor.sdk.util.AlertListBuilder) NumberParseException(com.google.i18n.phonenumbers.NumberParseException) CommandCallback(im.actor.core.viewmodel.CommandCallback) Void(im.actor.runtime.actors.messages.Void) Phonenumber(com.google.i18n.phonenumbers.Phonenumber)

Example 12 with Void

use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.

the class EditNameFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    type = getArguments().getInt("EXTRA_TYPE");
    id = getArguments().getInt("EXTRA_ID");
    helper = new KeyboardHelper(getActivity());
    View res = inflater.inflate(R.layout.fragment_edit_name, container, false);
    res.setBackgroundColor(ActorSDK.sharedActor().style.getMainBackgroundColor());
    nameEdit = (EditText) res.findViewById(R.id.nameEdit);
    nameEdit.setTextColor(ActorSDK.sharedActor().style.getTextPrimaryColor());
    hintTv = (TextView) res.findViewById(R.id.hint);
    hintTv.setTextColor(ActorSDK.sharedActor().style.getTextHintColor());
    if (type == EditNameActivity.TYPE_ME) {
        UserVM userModel = users().get(myUid());
        nameEdit.setText(userModel.getName().get());
    } else if (type == EditNameActivity.TYPE_NICK) {
        UserVM userModel = users().get(myUid());
        nameEdit.setText(userModel.getNick().get());
        nameEdit.setHint(getString(R.string.nickname_edittext_hint));
        hintTv.setText(getString(R.string.nickname_hint).replace("{appName}", ActorSDK.sharedActor().getAppName()));
    } else if (type == EditNameActivity.TYPE_USER) {
        UserVM userModel = users().get(id);
        nameEdit.setText(userModel.getName().get());
    } else if (type == EditNameActivity.TYPE_GROUP) {
        GroupVM group = groups().get(id);
        nameEdit.setText(group.getName().get());
    } else if (type == EditNameActivity.TYPE_GROUP_THEME) {
        GroupVM group = groups().get(id);
        nameEdit.setText(group.getTheme().get());
    }
    res.findViewById(R.id.dividerTop).setBackgroundColor(ActorSDK.sharedActor().style.getDividerColor());
    res.findViewById(R.id.dividerBot).setBackgroundColor(ActorSDK.sharedActor().style.getDividerColor());
    res.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            getActivity().finish();
        }
    });
    ((TextView) res.findViewById(R.id.cancel)).setTextColor(ActorSDK.sharedActor().style.getTextPrimaryColor());
    res.findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String name = nameEdit.getText().toString().trim();
            if (name.length() == 0) {
                Toast.makeText(getActivity(), R.string.toast_empty_name, Toast.LENGTH_SHORT).show();
                return;
            }
            if (type == EditNameActivity.TYPE_ME) {
                execute(messenger().editMyName(name), R.string.edit_name_process, new CommandCallback<Boolean>() {

                    @Override
                    public void onResult(Boolean res) {
                        getActivity().finish();
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(getActivity(), R.string.toast_unable_change, Toast.LENGTH_SHORT).show();
                    }
                });
            } else if (type == EditNameActivity.TYPE_NICK) {
                execute(messenger().editMyNick(name), R.string.edit_nick_process, new CommandCallback<Boolean>() {

                    @Override
                    public void onResult(Boolean res) {
                        getActivity().finish();
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(getActivity(), R.string.toast_unable_change_nick, Toast.LENGTH_SHORT).show();
                    }
                });
            } else if (type == EditNameActivity.TYPE_USER) {
                execute(messenger().editName(id, name), R.string.edit_name_process, new CommandCallback<Boolean>() {

                    @Override
                    public void onResult(Boolean res) {
                        getActivity().finish();
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(getActivity(), R.string.toast_unable_change, Toast.LENGTH_SHORT).show();
                    }
                });
            } else if (type == EditNameActivity.TYPE_GROUP_THEME) {
                execute(messenger().editGroupTheme(id, name), R.string.edit_theme_process, new CommandCallback<Void>() {

                    @Override
                    public void onResult(Void res) {
                        getActivity().finish();
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(getActivity(), R.string.toast_unable_change, Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
    });
    ((TextView) res.findViewById(R.id.ok)).setTextColor(ActorSDK.sharedActor().style.getTextPrimaryColor());
    return res;
}
Also used : GroupVM(im.actor.core.viewmodel.GroupVM) TextView(android.widget.TextView) View(android.view.View) UserVM(im.actor.core.viewmodel.UserVM) TextView(android.widget.TextView) KeyboardHelper(im.actor.sdk.util.KeyboardHelper) CommandCallback(im.actor.core.viewmodel.CommandCallback) Void(im.actor.runtime.actors.messages.Void)

Example 13 with Void

use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.

the class BlockedListFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View res = inflater.inflate(R.layout.fragment_recycler_list, container, false);
    list = (RecyclerView) res.findViewById(R.id.listView);
    list.setLayoutManager(new LinearLayoutManager(getActivity()));
    emptyView = (TextView) res.findViewById(R.id.emptyView);
    emptyView.setText(R.string.blocked_loading);
    res.setBackgroundColor(ActorSDK.sharedActor().style.getBackyardBackgroundColor());
    emptyView.setTextColor(ActorSDK.sharedActor().style.getTextSecondaryColor());
    adapter = new BlockedAdapter(new ArrayList<User>(), new BlockedAdapter.OnBlockedClickListener() {

        @Override
        public void onClick(UserVM u) {
            execute(messenger().unblockUser(u.getId()).then(new Consumer<Void>() {

                @Override
                public void apply(Void aVoid) {
                    checkBlockedList();
                }
            }));
        }
    });
    list.setAdapter(adapter);
    checkBlockedList();
    return res;
}
Also used : UserVM(im.actor.core.viewmodel.UserVM) Consumer(im.actor.runtime.function.Consumer) ArrayList(java.util.ArrayList) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) Void(im.actor.runtime.actors.messages.Void) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) View(android.view.View)

Example 14 with Void

use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.

the class ArchivedDialogsActor method onLoadMore.

private void onLoadMore(boolean init, RpcCallback<ResponseLoadArchived> callback) {
    if (init || isLoading) {
        // 
        if (lastCallback != null) {
            lastCallback.onError(new RpcException(TAG, 0, "callback replaced", false, null));
        }
    }
    lastCallback = callback;
    if (isLoading && !init) {
        return;
    }
    if (init) {
        if (lastRequest != -1) {
            cancelRequest(lastRequest);
        }
        nextOffset = null;
    }
    isLoading = true;
    Log.d(TAG, "Loading archived dialogs");
    api(new RequestLoadArchived(nextOffset, LIMIT, ApiSupportConfiguration.OPTIMIZATIONS)).chain(r -> updates().applyRelatedData(r.getUsers(), r.getGroups())).chain(r -> updates().loadRequiredPeers(r.getUserPeers(), r.getGroupPeers())).then(r -> onLoadedMore(r)).failure(e -> lastCallback.onError((RpcException) e));
}
Also used : RequestLoadArchived(im.actor.core.api.rpc.RequestLoadArchived) ApiSupportConfiguration(im.actor.core.modules.api.ApiSupportConfiguration) ModuleContext(im.actor.core.modules.ModuleContext) ModuleActor(im.actor.core.modules.ModuleActor) Consumer(im.actor.runtime.function.Consumer) Void(im.actor.runtime.actors.messages.Void) RpcCallback(im.actor.core.network.RpcCallback) Log(im.actor.runtime.Log) ResponseLoadArchived(im.actor.core.api.rpc.ResponseLoadArchived) RpcException(im.actor.core.network.RpcException) RpcException(im.actor.core.network.RpcException) RequestLoadArchived(im.actor.core.api.rpc.RequestLoadArchived)

Example 15 with Void

use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.

the class RouterActor method onPeersChanged.

// 
// Peer Changed
// 
private Promise<Void> onPeersChanged(List<User> users, List<Group> groups) {
    Promise<Void> res = Promise.success(null);
    boolean isActiveNeedUpdate = false;
    for (User u : users) {
        if (!isActiveNeedUpdate) {
            for (ActiveDialogGroup g : activeDialogStorage.getGroups()) {
                if (g.getPeers().contains(u.peer())) {
                    isActiveNeedUpdate = true;
                    break;
                }
            }
        }
        res = res.chain(v -> getDialogsRouter().onUserChanged(u));
    }
    for (Group group : groups) {
        if (!isActiveNeedUpdate) {
            for (ActiveDialogGroup g : activeDialogStorage.getGroups()) {
                if (g.getPeers().contains(group.peer())) {
                    isActiveNeedUpdate = true;
                    break;
                }
            }
        }
        res = res.chain(v -> getDialogsRouter().onGroupChanged(group));
    }
    if (isActiveNeedUpdate) {
        notifyActiveDialogsVM();
    }
    return res;
}
Also used : DialogsInt(im.actor.core.modules.messaging.dialogs.DialogsInt) RouterDifferenceStart(im.actor.core.modules.messaging.router.entity.RouterDifferenceStart) ModuleContext(im.actor.core.modules.ModuleContext) ApiMessageReaction(im.actor.core.api.ApiMessageReaction) UpdateChatGroupsChanged(im.actor.core.api.updates.UpdateChatGroupsChanged) UpdateMessage(im.actor.core.api.updates.UpdateMessage) ActiveDialogStorage(im.actor.core.modules.messaging.router.entity.ActiveDialogStorage) RouterApplyChatHistory(im.actor.core.modules.messaging.router.entity.RouterApplyChatHistory) RouterApplyDialogsHistory(im.actor.core.modules.messaging.router.entity.RouterApplyDialogsHistory) Avatar(im.actor.core.entity.Avatar) JavaUtil(im.actor.core.util.JavaUtil) RouterMessageUpdate(im.actor.core.modules.messaging.router.entity.RouterMessageUpdate) DialogSmall(im.actor.core.viewmodel.DialogSmall) TextContent(im.actor.core.entity.content.TextContent) ApiDialogGroup(im.actor.core.api.ApiDialogGroup) EntityConverter.convert(im.actor.core.entity.EntityConverter.convert) ApiSupportConfiguration(im.actor.core.modules.api.ApiSupportConfiguration) UpdateMessageReadByMe(im.actor.core.api.updates.UpdateMessageReadByMe) RequestLoadGroupedDialogs(im.actor.core.api.rpc.RequestLoadGroupedDialogs) UpdateReactionsUpdate(im.actor.core.api.updates.UpdateReactionsUpdate) Void(im.actor.runtime.actors.messages.Void) DialogHistory(im.actor.core.modules.messaging.history.entity.DialogHistory) RouterDifferenceEnd(im.actor.core.modules.messaging.router.entity.RouterDifferenceEnd) Reaction(im.actor.core.entity.Reaction) AssertUtils.assertTrue(im.actor.core.util.AssertUtils.assertTrue) RouterConversationVisible(im.actor.core.modules.messaging.router.entity.RouterConversationVisible) List(java.util.List) ModuleActor(im.actor.core.modules.ModuleActor) RouterOutgoingSent(im.actor.core.modules.messaging.router.entity.RouterOutgoingSent) ArrayListDialogSmall(im.actor.core.viewmodel.generics.ArrayListDialogSmall) CursorReceiverActor(im.actor.core.modules.messaging.actions.CursorReceiverActor) UpdateMessageDelete(im.actor.core.api.updates.UpdateMessageDelete) UpdateChatDropCache(im.actor.core.api.updates.UpdateChatDropCache) UpdateMessageContentChanged(im.actor.core.api.updates.UpdateMessageContentChanged) Peer(im.actor.core.entity.Peer) MessageState(im.actor.core.entity.MessageState) RouterChangedContent(im.actor.core.modules.messaging.router.entity.RouterChangedContent) Message(im.actor.core.entity.Message) UpdateMessageReceived(im.actor.core.api.updates.UpdateMessageReceived) RouterAppHidden(im.actor.core.modules.messaging.router.entity.RouterAppHidden) Promise(im.actor.runtime.promise.Promise) RouterResetChat(im.actor.core.modules.messaging.router.entity.RouterResetChat) UpdateChatClear(im.actor.core.api.updates.UpdateChatClear) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ConversationState(im.actor.core.entity.ConversationState) AbsModule(im.actor.core.modules.AbsModule) User(im.actor.core.entity.User) RouterAppVisible(im.actor.core.modules.messaging.router.entity.RouterAppVisible) UpdateMessageSent(im.actor.core.api.updates.UpdateMessageSent) UpdateMessageRead(im.actor.core.api.updates.UpdateMessageRead) ListEngine(im.actor.runtime.storage.ListEngine) PeerType(im.actor.core.entity.PeerType) AbsContent(im.actor.core.entity.content.AbsContent) IOException(java.io.IOException) Group(im.actor.core.entity.Group) RouterConversationHidden(im.actor.core.modules.messaging.router.entity.RouterConversationHidden) RouterOutgoingError(im.actor.core.modules.messaging.router.entity.RouterOutgoingError) CursorReaderActor(im.actor.core.modules.messaging.actions.CursorReaderActor) RouterPeersChanged(im.actor.core.modules.messaging.router.entity.RouterPeersChanged) RouterMessageOnlyActive(im.actor.core.modules.messaging.router.entity.RouterMessageOnlyActive) RouterNewMessages(im.actor.core.modules.messaging.router.entity.RouterNewMessages) RouterOutgoingMessage(im.actor.core.modules.messaging.router.entity.RouterOutgoingMessage) SenderActor(im.actor.core.modules.messaging.actions.SenderActor) DialogGroup(im.actor.core.viewmodel.DialogGroup) ActiveDialogGroup(im.actor.core.modules.messaging.router.entity.ActiveDialogGroup) RouterDeletedMessages(im.actor.core.modules.messaging.router.entity.RouterDeletedMessages) ContentDescription(im.actor.core.entity.ContentDescription) Log(im.actor.runtime.Log) KeyValueEngine(im.actor.runtime.storage.KeyValueEngine) UpdateChatDelete(im.actor.core.api.updates.UpdateChatDelete) ApiDialogShort(im.actor.core.api.ApiDialogShort) Update(im.actor.core.network.parser.Update) ApiDialogGroup(im.actor.core.api.ApiDialogGroup) Group(im.actor.core.entity.Group) DialogGroup(im.actor.core.viewmodel.DialogGroup) ActiveDialogGroup(im.actor.core.modules.messaging.router.entity.ActiveDialogGroup) User(im.actor.core.entity.User) ActiveDialogGroup(im.actor.core.modules.messaging.router.entity.ActiveDialogGroup) Void(im.actor.runtime.actors.messages.Void)

Aggregations

Void (im.actor.runtime.actors.messages.Void)37 ModuleContext (im.actor.core.modules.ModuleContext)16 ModuleActor (im.actor.core.modules.ModuleActor)15 RpcException (im.actor.core.network.RpcException)15 CommandCallback (im.actor.core.viewmodel.CommandCallback)15 ArrayList (java.util.ArrayList)15 List (java.util.List)13 Log (im.actor.runtime.Log)12 Promise (im.actor.runtime.promise.Promise)11 Peer (im.actor.core.entity.Peer)10 UsedByApp (im.actor.core.js.annotations.UsedByApp)9 JsPromiseExecutor (im.actor.runtime.js.utils.JsPromiseExecutor)9 Message (im.actor.core.entity.Message)8 UserVM (im.actor.core.viewmodel.UserVM)8 Update (im.actor.core.network.parser.Update)7 HashSet (java.util.HashSet)7 Group (im.actor.core.entity.Group)6 User (im.actor.core.entity.User)6 ApiSupportConfiguration (im.actor.core.modules.api.ApiSupportConfiguration)6 AlertDialog (android.app.AlertDialog)5