use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.
the class UserRouter method checkIsInPhoneBook.
@Verified
protected Promise<Void> checkIsInPhoneBook(User user) {
if (!config().isEnableOnClientPrivacy()) {
return Promise.success(null);
}
Log.d("ON_CLIENT_PRIVACY", "checking " + user.getName() + " is in phone book");
return getPhoneBook().flatMap(new Function<List<PhoneBookContact>, Promise<Void>>() {
@Override
public Promise<Void> apply(List<PhoneBookContact> phoneBookContacts) {
return new Promise<Void>(resolver -> {
List<ContactRecord> userRecords = user.getRecords();
Log.d("ON_CLIENT_PRIVACY", "phonebook have " + phoneBookContacts.size() + " records");
Log.d("ON_CLIENT_PRIVACY", "user have " + userRecords.size() + " records");
outer: for (ContactRecord record : userRecords) {
for (PhoneBookContact phoneBookContact : phoneBookContacts) {
for (PhoneBookPhone phone1 : phoneBookContact.getPhones()) {
if (record.getRecordType() == ContactRecordType.PHONE) {
if (record.getRecordData().equals(phone1.getNumber() + "")) {
context().getContactsModule().markInPhoneBook(user.getUid());
getUserVM(user.getUid()).isInPhoneBook().change(true);
Log.d("ON_CLIENT_PRIVACY", "in record book!");
break outer;
}
}
}
for (PhoneBookEmail email : phoneBookContact.getEmails()) {
if (record.getRecordType() == ContactRecordType.EMAIL) {
if (record.getRecordData().equals(email.getEmail())) {
context().getContactsModule().markInPhoneBook(user.getUid());
getUserVM(user.getUid()).isInPhoneBook().change(true);
Log.d("ON_CLIENT_PRIVACY", "in record book!");
break outer;
}
}
}
}
}
Log.d("ON_CLIENT_PRIVACY", "finish check");
resolver.result(null);
});
}
});
}
use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.
the class ConversationHistoryActor method onLoadMore.
private void onLoadMore() {
if (isFreezed || historyLoaded) {
return;
}
isFreezed = true;
api(new RequestLoadHistory(buidOutPeer(peer), historyMaxDate, null, LIMIT, ApiSupportConfiguration.OPTIMIZATIONS)).chain(r -> updates().applyRelatedData(r.getUsers(), r.getGroups())).chain(r -> updates().loadRequiredPeers(r.getUserPeers(), r.getGroupPeers())).flatMap(r -> {
Log.d("HistoryActor", "Apply " + historyMaxDate);
return applyHistory(peer, r.getHistory());
}).map(r -> {
Log.d("HistoryActor", "Applied");
isFreezed = false;
unstashAll();
return null;
});
}
use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.
the class UpdateProcessor method processUpdate.
public Promise<Void> processUpdate(Update update) {
// Small hack for stopping typing indicator
if (update instanceof UpdateMessage) {
UpdateMessage message = (UpdateMessage) update;
typingProcessor.onMessage(message.getPeer(), message.getSenderUid());
}
for (SequenceProcessor sequenceProcessor : sequenceProcessors) {
Promise<Void> res = sequenceProcessor.process(update);
if (res != null) {
return res;
}
}
return Promise.success(null);
}
use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.
the class GroupAvatarChangeActor method removeAvatar.
public void removeAvatar(final int gid) {
if (currentTasks.containsKey(gid)) {
context().getFilesModule().cancelUpload(currentTasks.get(gid));
currentTasks.remove(gid);
}
final long rid = RandomUtils.nextRid();
currentTasks.put(gid, rid);
tasksMap.put(rid, gid);
Group group = context().getGroupsModule().getGroups().getValue(gid);
ApiGroupOutPeer outPeer = new ApiGroupOutPeer(gid, group.getAccessHash());
context().getProfileModule().getOwnAvatarVM().getUploadState().change(new AvatarUploadState(null, true));
api(new RequestRemoveGroupAvatar(outPeer, rid, ApiSupportConfiguration.OPTIMIZATIONS)).flatMap(responseSeqDate -> updates().applyUpdate(responseSeqDate.getSeq(), responseSeqDate.getState(), new UpdateGroupAvatarChangedObsolete(gid, rid, myUid(), null, responseSeqDate.getDate()))).then(aVoid -> avatarChanged(gid, rid)).failure(e -> {
if (!tasksMap.containsKey(rid)) {
return;
}
final int gid2 = tasksMap.get(rid);
if (currentTasks.get(gid) != rid) {
return;
}
currentTasks.remove(gid2);
tasksMap.remove(rid);
context().getGroupsModule().getAvatarVM(gid2).getUploadState().change(new AvatarUploadState(null, false));
});
}
use of im.actor.runtime.actors.messages.Void in project actor-platform by actorapp.
the class AddMemberFragment method onItemClicked.
@Override
public void onItemClicked(Contact contact) {
final UserVM userModel = users().get(contact.getUid());
for (GroupMember uid : groupVM.getMembers().get()) {
if (uid.getUid() == userModel.getId()) {
Toast.makeText(getActivity(), R.string.toast_already_member, Toast.LENGTH_SHORT).show();
return;
}
}
new AlertDialog.Builder(getActivity()).setMessage(getString(R.string.alert_group_add_text).replace("{0}", userModel.getName().get())).setPositiveButton(R.string.alert_group_add_yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog2, int which) {
execute(messenger().inviteMember(groupVM.getId(), userModel.getId()), R.string.progress_common, new CommandCallback<Void>() {
@Override
public void onResult(Void res) {
getActivity().finish();
}
@Override
public void onError(Exception e) {
Toast.makeText(getActivity(), R.string.toast_unable_add, Toast.LENGTH_SHORT).show();
}
});
}
}).setNegativeButton(R.string.dialog_cancel, null).show().setCanceledOnTouchOutside(true);
}
Aggregations