Search in sources :

Example 11 with RealmRegisteredInfo

use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.

the class HelperUrl method isInCurrentChat.

private static boolean isInCurrentChat(String userName) {
    if (FragmentChat.lastChatRoomId > 0) {
        return DbManager.getInstance().doRealmTask(realm -> {
            RealmRoom realmRoom = realm.where(RealmRoom.class).equalTo("id", FragmentChat.lastChatRoomId).findFirst();
            String currentChatUserName = "";
            String currentChatInviteLink = "";
            if (realmRoom != null) {
                if (realmRoom.getChannelRoom() != null) {
                    currentChatUserName = realmRoom.getChannelRoom().getUsername();
                    currentChatInviteLink = realmRoom.getChannelRoom().getInviteLink();
                } else if (realmRoom.getGroupRoom() != null) {
                    currentChatUserName = realmRoom.getGroupRoom().getUsername();
                    currentChatInviteLink = realmRoom.getGroupRoom().getInvite_link();
                } else if (realmRoom.getChatRoom() != null) {
                    RealmRegisteredInfo registeredInfo = RealmRegisteredInfo.getRegistrationInfo(realm, realmRoom.getChatRoom().getPeerId());
                    if (registeredInfo != null) {
                        currentChatUserName = registeredInfo.getUsername();
                    }
                }
            }
            if (currentChatUserName != null && currentChatUserName.toLowerCase().equals(userName.toLowerCase())) {
                return true;
            }
            if (currentChatInviteLink != null && currentChatInviteLink.length() > 0) {
                int index = currentChatInviteLink.lastIndexOf("/");
                if (index != -1) {
                    String st = currentChatInviteLink.toLowerCase().substring(index + 1);
                    return st.equals(userName.toLowerCase());
                }
            }
            return false;
        });
    }
    return false;
}
Also used : RealmRoom(net.iGap.realm.RealmRoom) RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo) TextPaint(android.text.TextPaint)

Example 12 with RealmRegisteredInfo

use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.

the class GoToChatActivity method startActivity.

public void startActivity(FragmentActivity activity) {
    String roomName = "";
    if (FragmentChat.mForwardMessages != null || HelperGetDataFromOtherApp.hasSharedData || FragmentChat.structIGSticker != null) {
        roomName = DbManager.getInstance().doRealmTask(realm -> {
            RealmRoom realmRoom = realm.where(RealmRoom.class).equalTo("id", roomid).findFirst();
            if (realmRoom != null) {
                if (realmRoom.getReadOnly() || hasSendMessagePermission() || (realmRoom.getType() != ProtoGlobal.Room.Type.CHAT && FragmentChat.structIGSticker != null) || (realmRoom.getType() == ProtoGlobal.Room.Type.CHAT && realmRoom.getChatRoom() != null && RealmRoom.isBot(realmRoom.getChatRoom().getPeerId()))) {
                    if (activity != null && !(activity).isFinishing()) {
                        new MaterialDialog.Builder(activity).title(R.string.dialog_readonly_chat).positiveText(R.string.ok).show();
                    }
                    return null;
                }
                return realmRoom.getTitle();
            } else if (peerID > 0) {
                RealmRegisteredInfo _RegisteredInfo = RealmRegisteredInfo.getRegistrationInfo(realm, peerID);
                if (_RegisteredInfo != null) {
                    return _RegisteredInfo.getDisplayName();
                }
            }
            return "";
        });
        if (roomName == null) {
            return;
        }
    }
    if (HelperGetDataFromOtherApp.hasSharedData) {
        String message = G.context.getString(R.string.send_message_to) + " " + roomName;
        MaterialDialog.Builder mDialog = new MaterialDialog.Builder(activity).title(message).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive(new MaterialDialog.SingleButtonCallback() {

            @Override
            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                FragmentChat fragmentChat = new FragmentChat();
                fragmentChat.setArguments(getBundle());
                fragmentChatBackStack(activity);
                new HelperFragment(activity.getSupportFragmentManager(), fragmentChat).setReplace(false).load();
            }
        }).onNegative((dialog, which) -> {
            HelperGetDataFromOtherApp.hasSharedData = false;
            // revert main rooms list from share mode
            if (activity instanceof ActivityMain) {
                ((ActivityMain) activity).checkHasSharedData(false);
            }
        }).neutralText(R.string.another_room).onNeutral((dialog, which) -> dialog.dismiss());
        if (!activity.isFinishing()) {
            mDialog.show();
        }
    } else if (FragmentChat.structIGSticker != null) {
        String message = G.context.getString(R.string.send_message_to) + " " + roomName;
        MaterialDialog.Builder mDialog = new MaterialDialog.Builder(activity).title(message).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive((dialog, which) -> {
            FragmentChat fragmentChat = new FragmentChat();
            fragmentChat.setArguments(getBundle());
            fragmentChatBackStack(activity);
            new HelperFragment(activity.getSupportFragmentManager(), fragmentChat).setReplace(false).load();
        }).onNegative((dialog, which) -> {
            FragmentChat.structIGSticker = null;
            if (activity instanceof ActivityMain) {
                ((ActivityMain) activity).checkHasSharedData(false);
            }
        }).neutralText(R.string.another_room).onNeutral((dialog, which) -> dialog.dismiss());
        if (!activity.isFinishing()) {
            mDialog.show();
        }
    } else if (FragmentChat.mForwardMessages != null) {
        String message = G.context.getString(R.string.send_forward_to) + " " + roomName + "?";
        MaterialDialog.Builder mDialog = new MaterialDialog.Builder(activity).title(message).positiveText(R.string.ok).negativeText(R.string.cancel).onPositive(new MaterialDialog.SingleButtonCallback() {

            @Override
            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                loadChatFragment(activity);
            }
        }).onNegative((dialog, which) -> {
            disableForwardMessage(activity);
            FragmentChat.mForwardMessages = null;
        }).neutralText(R.string.another_room).onNeutral((dialog, which) -> dialog.dismiss());
        if (!(activity).isFinishing()) {
            mDialog.show();
        }
    } else {
        loadChatFragment(activity);
    }
}
Also used : Bundle(android.os.Bundle) RealmRoomAccess(net.iGap.realm.RealmRoomAccess) ActivityMain(net.iGap.activities.ActivityMain) NonNull(androidx.annotation.NonNull) AccountManager(net.iGap.module.accountManager.AccountManager) DialogAction(com.afollestad.materialdialogs.DialogAction) RealmRoom(net.iGap.realm.RealmRoom) FragmentActivity(androidx.fragment.app.FragmentActivity) G(net.iGap.G) Lifecycle(androidx.lifecycle.Lifecycle) List(java.util.List) RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo) FragmentChat(net.iGap.fragments.FragmentChat) Fragment(androidx.fragment.app.Fragment) ProtoGlobal(net.iGap.proto.ProtoGlobal) R(net.iGap.R) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) DbManager(net.iGap.module.accountManager.DbManager) Log(android.util.Log) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo) ActivityMain(net.iGap.activities.ActivityMain) DialogAction(com.afollestad.materialdialogs.DialogAction) NonNull(androidx.annotation.NonNull) RealmRoom(net.iGap.realm.RealmRoom) FragmentChat(net.iGap.fragments.FragmentChat)

Example 13 with RealmRegisteredInfo

use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.

the class HelperGetAction method getMultipleAction.

/**
 * search structActions list for this roomId and return correct string for show in toolbar
 *
 * @param roomId current roomId
 * @return text for show in toolbar
 */
private static String getMultipleAction(long roomId) {
    ProtoGlobal.ClientAction latestAction = getLatestAction(roomId);
    if (latestAction == null) {
        return null;
    } else {
        return DbManager.getInstance().doRealmTask(realm -> {
            int count = 0;
            StructAction latestStruct = null;
            Iterator<StructAction> iterator1 = structActions.iterator();
            ArrayList<Long> userIds = new ArrayList<>();
            while (iterator1.hasNext()) {
                StructAction struct = iterator1.next();
                if (struct.roomId == roomId && struct.action == latestAction) {
                    if (!userIds.contains(struct.userId)) {
                        userIds.add(struct.userId);
                        latestStruct = struct;
                        count++;
                    }
                }
            }
            if (count == 1) {
                RealmRegisteredInfo realmRegisteredInfo = RealmRegisteredInfo.getRegistrationInfo(realm, latestStruct.userId);
                if (realmRegisteredInfo != null && realmRegisteredInfo.getDisplayName().length() > 0) {
                    String action;
                    if (HelperCalander.isPersianUnicode) {
                        action = "\u200F" + realmRegisteredInfo.getDisplayName() + " " + convertActionEnum(latestStruct.action);
                    } else {
                        action = "\u200E" + realmRegisteredInfo.getDisplayName() + " " + G.fragmentActivity.getResources().getString(R.string.is) + " " + convertActionEnum(latestStruct.action);
                    }
                    return action;
                } else {
                    return null;
                }
            } else if (count < Config.GROUP_SHOW_ACTIONS_COUNT) {
                StringBuilder concatenatedNames = new StringBuilder();
                Iterator<StructAction> iterator = structActions.iterator();
                while (iterator.hasNext()) {
                    StructAction struct = iterator.next();
                    if (struct.roomId == roomId && struct.action == latestAction) {
                        RealmRegisteredInfo realmRegisteredInfo = RealmRegisteredInfo.getRegistrationInfo(realm, struct.userId);
                        if (realmRegisteredInfo != null) {
                            concatenatedNames.append(realmRegisteredInfo.getDisplayName()).append(" , ");
                        }
                    }
                }
                if ((concatenatedNames.length() == 0) || concatenatedNames.length() == 0) {
                    return null;
                }
                concatenatedNames = new StringBuilder(concatenatedNames.substring(0, concatenatedNames.length() - 1));
                if (HelperCalander.isPersianUnicode) {
                    return "\u200F" + concatenatedNames + " " + HelperConvertEnumToString.convertActionEnum(latestAction);
                } else {
                    return concatenatedNames + " " + G.fragmentActivity.getResources().getString(R.string.are) + " " + convertActionEnum(latestAction);
                }
            } else {
                if (HelperCalander.isPersianUnicode) {
                    return "\u200F" + count + " " + G.fragmentActivity.getResources().getString(R.string.members_are) + " " + convertActionEnum(latestAction);
                } else {
                    return count + " " + G.fragmentActivity.getResources().getString(R.string.members_are) + " " + convertActionEnum(latestAction);
                }
            }
        });
    }
}
Also used : ArrayList(java.util.ArrayList) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) Iterator(java.util.Iterator) ProtoGlobal(net.iGap.proto.ProtoGlobal) RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo)

Example 14 with RealmRegisteredInfo

use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.

the class ActivityPopUpNotification method setImageAndTextAppBar.

// private void setUpEmojiPopup() {
// setEmojiColor(new Theme().getRootColor(this), new Theme().getTitleTextColor(this), new Theme().getTitleTextColor(this));
// }
// 
// private void setEmojiColor(int BackgroundColor, int iconColor, int dividerColor) {
// emojiPopup = EmojiPopup.Builder.fromRootView(findViewById(R.id.ac_ll_parent_notification)).setOnEmojiBackspaceClickListener(new OnEmojiBackspaceClickListener() {
// @Override
// public void onEmojiBackspaceClick(View v) {
// 
// }
// }).setOnEmojiPopupShownListener(new OnEmojiPopupShownListener() {
// @Override
// public void onEmojiPopupShown() {
// changeEmojiButtonImageResource(R.string.md_black_keyboard_with_white_keys);
// }
// }).setOnSoftKeyboardOpenListener(new OnSoftKeyboardOpenListener() {
// @Override
// public void onKeyboardOpen(final int keyBoardHeight) {
// 
// }
// }).setOnEmojiPopupDismissListener(new OnEmojiPopupDismissListener() {
// @Override
// public void onEmojiPopupDismiss() {
// changeEmojiButtonImageResource(R.string.md_emoticon_with_happy_face);
// }
// }).setOnSoftKeyboardCloseListener(new OnSoftKeyboardCloseListener() {
// @Override
// public void onKeyboardClose() {
// emojiPopup.dismiss();
// }
// })
// .setBackgroundColor(BackgroundColor)
// .setIconColor(iconColor)
// .setDividerColor(dividerColor)
// .build(edtChat);
// }
private void setImageAndTextAppBar(int position) {
    if (mList.size() == 0)
        return;
    initialize = mList.get(position).initialize;
    color = mList.get(position).color;
    txtName.setText(mList.get(position).name);
    DbManager.getInstance().doRealmTask(realm -> {
        RealmRegisteredInfo realmRegisteredInfo = RealmRegisteredInfo.getRegistrationInfo(realm, mList.get(position).senderId);
        if (realmRegisteredInfo != null) {
            if (realmRegisteredInfo.getStatus().equals(ProtoGlobal.RegisteredUser.Status.EXACTLY.toString())) {
                txtLastSeen.setText(LastSeenTimeUtil.computeTime(txtLastSeen.getContext(), realmRegisteredInfo.getId(), realmRegisteredInfo.getLastSeen(), false));
            } else {
                txtLastSeen.setText(realmRegisteredInfo.getStatus());
            }
        } else {
            txtLastSeen.setText("");
        }
        setAvatar(realmRegisteredInfo, realm);
    });
}
Also used : RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo)

Example 15 with RealmRegisteredInfo

use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.

the class SearchFragment method fillChat.

private void fillChat(String text) {
    DbManager.getInstance().doRealmTask(realm -> {
        final RealmResults<RealmRegisteredInfo> results;
        if (searchTxt.startsWith("@")) {
            results = realm.where(RealmRegisteredInfo.class).contains("username", text, Case.INSENSITIVE).equalTo("isBot", false).findAll();
        } else {
            results = realm.where(RealmRegisteredInfo.class).equalTo("isBot", false).beginGroup().contains("username", text, Case.INSENSITIVE).or().contains("displayName", text, Case.INSENSITIVE).endGroup().findAll();
        }
        if (results != null && results.size() > 0) {
            addHeader(G.fragmentActivity.getResources().getString(R.string.member));
            for (RealmRegisteredInfo contact : results) {
                StructSearch item = new StructSearch();
                item.name = contact.getDisplayName();
                item.isVerified = contact.isVerified();
                item.time = contact.getLastSeen();
                item.userName = contact.getUsername();
                item.comment = "";
                item.id = contact.getId();
                item.idDetectAvatar = contact.getId();
                item.type = SearchType.contact;
                item.initials = contact.getInitials();
                item.color = contact.getColor();
                item.avatar = contact.getLastAvatar(realm);
                list.add(item);
            }
        }
    });
}
Also used : RealmRegisteredInfo(net.iGap.realm.RealmRegisteredInfo)

Aggregations

RealmRegisteredInfo (net.iGap.realm.RealmRegisteredInfo)37 ArrayList (java.util.ArrayList)15 View (android.view.View)13 RealmRoom (net.iGap.realm.RealmRoom)12 List (java.util.List)11 TextView (android.widget.TextView)10 RecyclerView (androidx.recyclerview.widget.RecyclerView)10 G (net.iGap.G)10 R (net.iGap.R)10 DbManager (net.iGap.module.accountManager.DbManager)10 ProtoGlobal (net.iGap.proto.ProtoGlobal)10 ViewGroup (android.view.ViewGroup)9 AvatarHandler (net.iGap.helper.avatar.AvatarHandler)9 Bundle (android.os.Bundle)8 AppCompatTextView (androidx.appcompat.widget.AppCompatTextView)8 File (java.io.File)8 Log (android.util.Log)7 LayoutInflater (android.view.LayoutInflater)7 Nullable (androidx.annotation.Nullable)7 RequestUserInfo (net.iGap.request.RequestUserInfo)7