use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.
the class FragmentChat method initMain.
private void initMain() {
HelperGetMessageState.clearMessageViews();
initPinedMessage();
viewMicRecorder = rootView.findViewById(R.id.layout_mic_recorde);
prgWaiting = rootView.findViewById(R.id.chl_prgWaiting);
AppUtils.setProgresColler(prgWaiting);
voiceRecord = new VoiceRecord(G.fragmentActivity, viewMicRecorder, viewAttachFile, this);
prgWaiting.setVisibility(View.VISIBLE);
txtEmptyMessages = rootView.findViewById(R.id.empty_messages);
if (isBot) {
txtEmptyMessages.setText(G.fragmentActivity.getResources().getString(R.string.empty_text_dr_bot));
txtChannelMute.setText(R.string.start);
iconChannelMute.setText("");
}
lastDateCalendar.clear();
locationManager = (LocationManager) G.fragmentActivity.getSystemService(LOCATION_SERVICE);
/**
* Hint: don't need to get info here. currently do this action in {{@link #startPageFastInitialize()}}
* Bundle extras = getArguments();
* if (extras != null) {
* mRoomId = extras.getLong("RoomId");
* isGoingFromUserLink = extras.getBoolean("GoingFromUserLink");
* isNotJoin = extras.getBoolean("ISNotJoin");
* userName = extras.getString("UserName");
* messageId = extras.getLong("MessageId");
* }
*/
/**
* get userId . use in chat set action.
*/
RealmUserInfo realmUserInfo = DbManager.getInstance().doRealmTask(realm -> {
return realm.where(RealmUserInfo.class).findFirst();
});
if (realmUserInfo == null) {
// finish();
finishChat();
return;
}
userId = realmUserInfo.getUserId();
managedRoom = getRoom();
if (managedRoom != null) {
// room exist
title = managedRoom.getTitle();
initialize = managedRoom.getInitials();
color = managedRoom.getColor();
isChatReadOnly = managedRoom.getReadOnly();
unreadCount = managedRoom.getUnreadCount();
savedScrollMessageId = managedRoom.getLastScrollPositionMessageId();
savedScrollDocumentId = managedRoom.getLastScrollPositionDocumentId();
firstVisiblePositionOffset = managedRoom.getLastScrollPositionOffset();
if (messageId != 0) {
savedScrollMessageId = messageId;
savedScrollDocumentId = documentId;
firstVisiblePositionOffset = 0;
}
if (chatType == CHAT) {
RealmRegisteredInfo realmRegisteredInfo = DbManager.getInstance().doRealmTask(realm -> {
return RealmRegisteredInfo.getRegistrationInfo(realm, chatPeerId);
});
if (realmRegisteredInfo != null) {
initialize = realmRegisteredInfo.getInitials();
color = realmRegisteredInfo.getColor();
phoneNumber = realmRegisteredInfo.getPhoneNumber();
if (realmRegisteredInfo.getId() == Config.drIgapPeerId) {
// if (realmRegisteredInfo.getUsername().equalsIgnoreCase("")) {
initDrBot();
}
} else {
title = managedRoom.getTitle();
initialize = managedRoom.getInitials();
color = managedRoom.getColor();
userStatus = G.fragmentActivity.getResources().getString(R.string.last_seen_recently);
}
} else if (chatType == GROUP) {
RealmGroupRoom realmGroupRoom = managedRoom.getGroupRoom();
groupRole = realmGroupRoom.getRole();
groupParticipantsCountLabel = realmGroupRoom.getParticipantsCountLabel();
} else if (chatType == CHANNEL) {
RealmChannelRoom realmChannelRoom = managedRoom.getChannelRoom();
channelRole = realmChannelRoom.getRole();
channelParticipantsCountLabel = realmChannelRoom.getParticipantsCountLabel();
}
} else {
// chatPeerId = extras.getLong("peerId");
chatType = CHAT;
RealmRegisteredInfo realmRegisteredInfo = DbManager.getInstance().doRealmTask(realm -> {
return RealmRegisteredInfo.getRegistrationInfo(realm, chatPeerId);
});
if (realmRegisteredInfo != null) {
title = realmRegisteredInfo.getDisplayName();
initialize = realmRegisteredInfo.getInitials();
color = realmRegisteredInfo.getColor();
lastSeen = realmRegisteredInfo.getLastSeen();
userStatus = realmRegisteredInfo.getStatus();
}
}
initComponent();
initAppbarSelected();
getDraft();
getUserInfo();
insertSharedData();
if (structIGSticker != null) {
G.handler.postDelayed(() -> sendStickerAsMessage(structIGSticker), 1000);
}
RealmRoomMessage rm = null;
RealmResults<RealmRoomMessage> result = DbManager.getInstance().doRealmTask(realm -> {
return realm.where(RealmRoomMessage.class).equalTo("roomId", mRoomId).findAll();
});
if (result.size() > 0) {
rm = result.last();
if (rm != null && rm.getMessage() != null) {
if (rm.getRealmAdditional() != null && (rm.getRealmAdditional().getAdditionalType() == Additional.WEB_VIEW.getAdditional())) {
String additionalData = rm.getRealmAdditional().getAdditionalData();
if (!additionalData.isEmpty())
openWebViewForSpecialUrlChat(additionalData);
}
}
}
FragmentShearedMedia.goToPositionFromShardMedia = new FragmentShearedMedia.GoToPositionFromShardMedia() {
@Override
public void goToPosition(Long messageId, long documentId) {
if (messageId != 0) {
savedScrollMessageId = messageId;
savedScrollDocumentId = documentId;
firstVisiblePositionOffset = 0;
if (goToPositionWithAnimation(savedScrollMessageId, 2000)) {
savedScrollMessageId = 0;
savedScrollDocumentId = 0;
} else {
RealmRoomMessage rm = DbManager.getInstance().doRealmTask(realm -> {
return realm.where(RealmRoomMessage.class).equalTo("messageId", messageId).findFirst();
});
rm = RealmRoomMessage.getFinalMessage(rm);
if (rm != null) {
resetMessagingValue();
savedScrollMessageId = FragmentChat.messageId = messageId;
savedScrollDocumentId = FragmentChat.documentId = documentId;
firstVisiblePositionOffset = 0;
getMessages();
}
}
}
}
};
sendChatTracker();
}
use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.
the class FragmentBlockedUser method onViewCreated.
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
blockedUserToolbar = new Toolbar(getContext());
blockedUserToolbar.setBackIcon(new BackDrawable(false));
blockedUserToolbar.setTitle(getString(R.string.Block_Users));
blockedUserToolbar.setListener(i -> {
switch(i) {
case -1:
popBackStackFragment();
break;
}
});
ViewGroup layoutToolbar = view.findViewById(R.id.fbu_layout_toolbar);
layoutToolbar.addView(blockedUserToolbar, LayoutCreator.createLinear(LayoutCreator.MATCH_PARENT, LayoutCreator.dp(56), Gravity.TOP));
RecyclerView realmRecyclerView = view.findViewById(R.id.fbu_realm_recycler_view);
realmRecyclerView.setItemViewCacheSize(100);
realmRecyclerView.setItemAnimator(null);
realmRecyclerView.setLayoutManager(new LinearLayoutManager(G.fragmentActivity));
RealmResults<RealmRegisteredInfo> results = DbManager.getInstance().doRealmTask(realm -> {
return realm.where(RealmRegisteredInfo.class).equalTo("blockUser", true).findAll();
});
BlockListAdapter blockListAdapter = new BlockListAdapter(results.sort("displayName"));
realmRecyclerView.setAdapter(blockListAdapter);
fastScroller = view.findViewById(R.id.fast_scroller);
if (realmRecyclerView.getAdapter().getItemCount() > 0) {
fastScroller.setRecyclerView(realmRecyclerView);
} else {
fastScroller.setVisibility(View.GONE);
}
}
use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.
the class FragmentChat method startPageFastInitialize.
/**
* set just important item to view in onCreate and load another objects in onResume
* actions : set app color, load avatar, set background, set title, set status chat or member for group or channel
*/
private void startPageFastInitialize() {
Bundle extras = getArguments();
if (extras != null) {
mRoomId = extras.getLong("RoomId");
isGoingFromUserLink = extras.getBoolean("GoingFromUserLink");
isNotJoin = extras.getBoolean("ISNotJoin");
userName = extras.getString("UserName");
messageId = extras.getLong("MessageId");
documentId = extras.getLong("DocumentId");
chatPeerId = extras.getLong("peerId");
}
attachFile = new AttachFile(G.fragmentActivity);
RealmRoom realmRoom = getRoom();
pageSettings();
// avi = (AVLoadingIndicatorView) rootView.findViewById(R.id.avi);
verifiedIcon.setVisibility(View.GONE);
/**
* need this info for load avatar
*/
if (realmRoom != null) {
chatType = realmRoom.getType();
if (chatType == CHAT) {
chatPeerId = realmRoom.getChatRoom().getPeerId();
RealmRegisteredInfo realmRegisteredInfo = DbManager.getInstance().doRealmTask(realm -> {
return RealmRegisteredInfo.getRegistrationInfo(realm, chatPeerId);
});
if (realmRegisteredInfo != null) {
title = realmRegisteredInfo.getDisplayName();
lastSeen = realmRegisteredInfo.getLastSeen();
userStatus = realmRegisteredInfo.getStatus();
isBot = realmRegisteredInfo.isBot();
if (isBot) {
if (getMessagesCount() == 0) {
layoutMute.setVisibility(View.VISIBLE);
txtChannelMute.setText(R.string.start);
iconChannelMute.setText("");
View layoutAttach = rootView.findViewById(R.id.layout_attach_file);
layoutAttach.setVisibility(View.GONE);
layoutMute.setOnClickListener(v -> {
if (!isChatReadOnly) {
edtChat.setText("/Start");
imvSendButton.performClick();
removeStartButton();
}
});
isShowStartButton = true;
}
}
if (realmRegisteredInfo.isVerified()) {
verifiedIcon.setVisibility(View.VISIBLE);
}
} else {
/**
* when userStatus isn't EXACTLY lastSeen time not used so don't need
* this time and also this time not exist in room info
*/
title = realmRoom.getTitle();
userStatus = G.fragmentActivity.getResources().getString(R.string.last_seen_recently);
}
} else {
mRoomId = realmRoom.getId();
title = realmRoom.getTitle();
if (chatType == GROUP && realmRoom.getGroupRoom() != null) {
groupParticipantsCountLabel = realmRoom.getGroupRoom().getParticipantsCountLabel();
isPublicGroup = roomIsPublic = !realmRoom.getGroupRoom().isPrivate();
} else if (chatType == CHANNEL && realmRoom.getChannelRoom() != null) {
groupParticipantsCountLabel = realmRoom.getChannelRoom().getParticipantsCountLabel();
showVoteChannel = realmRoom.getChannelRoom().isReactionStatus();
if (realmRoom.getChannelRoom().isVerified()) {
verifiedIcon.setVisibility(View.VISIBLE);
}
roomIsPublic = !realmRoom.getChannelRoom().isPrivate();
}
}
if (chatType == CHAT) {
setUserStatus(userStatus, lastSeen);
} else if ((chatType == GROUP) || (chatType == CHANNEL)) {
if (groupParticipantsCountLabel != null) {
if (HelperString.isNumeric(groupParticipantsCountLabel) && Integer.parseInt(groupParticipantsCountLabel) == 1) {
mToolbar.setSubTitle(groupParticipantsCountLabel + " " + G.fragmentActivity.getResources().getString(R.string.one_member_chat));
} else {
mToolbar.setSubTitle(groupParticipantsCountLabel + " " + G.fragmentActivity.getResources().getString(R.string.member_chat));
}
// avi.setVisibility(View.GONE);
}
}
} else if (chatPeerId != 0) {
/**
* when user start new chat this block will be called
*/
chatType = CHAT;
RealmRegisteredInfo realmRegisteredInfo = DbManager.getInstance().doRealmTask(realm -> {
return RealmRegisteredInfo.getRegistrationInfo(realm, chatPeerId);
});
title = realmRegisteredInfo.getDisplayName();
lastSeen = realmRegisteredInfo.getLastSeen();
userStatus = realmRegisteredInfo.getStatus();
setUserStatus(userStatus, lastSeen);
}
if (title != null) {
mToolbar.setTitle(EmojiManager.getInstance().replaceEmoji(title, null));
}
/**
* change english number to persian number
*/
if (HelperCalander.isPersianUnicode) {
mToolbar.setTitle(EmojiManager.getInstance().replaceEmoji(mToolbar.getTitleTextView().getText().toString(), mToolbar.getTitleTextView().getPaint().getFontMetricsInt()));
mToolbar.setSubTitle(convertToUnicodeFarsiNumber(mToolbar.getSubTitleText()));
}
/**
* hint: don't check isCloudRoom with (( RealmRoom.isCloudRoom(mRoomId, realm); ))
* because in first time room not exist in RealmRoom and value is false always.
* so just need to check this value with chatPeerId
*/
if (chatPeerId == AccountManager.getInstance().getCurrentUser().getId()) {
isCloudRoom = true;
}
viewAttachFile = rootView.findViewById(R.id.layout_attach_file);
iconMute = mToolbar.getMuteIcon();
if (realmRoom != null) {
iconMute.setVisibility(realmRoom.getMute() ? View.VISIBLE : View.GONE);
isMuteNotification = realmRoom.getMute();
isChatReadOnly = realmRoom.getReadOnly();
}
// gone video , voice button call then if status was ok visible them
// mHelperToolbar.getSecondRightButton().setVisibility(View.GONE);
callItem.setVisibility(View.GONE);
if (isChatReadOnly) {
viewAttachFile.setVisibility(View.GONE);
(rootView.findViewById(R.id.chl_recycler_view_chat)).setPadding(0, 0, 0, 0);
} else if (chatType == CHAT && AccountManager.getInstance().getCurrentUser().getId() != chatPeerId && !isBot) {
// gone or visible view call
RealmCallConfig callConfig = DbManager.getInstance().doRealmTask(realm -> {
return realm.where(RealmCallConfig.class).findFirst();
});
if (callConfig != null) {
if (callConfig.isVoice_calling()) {
// mHelperToolbar.getSecondRightButton().setVisibility(View.VISIBLE);
callItem.setVisibility(View.VISIBLE);
} else {
callItem.setVisibility(View.VISIBLE);
// mHelperToolbar.getSecondRightButton().setVisibility(View.GONE);
}
} else {
new RequestSignalingGetConfiguration().signalingGetConfiguration();
}
}
createMoreItems();
manageExtraLayout();
}
use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.
the class FragmentChat method onResume.
@Override
public void onResume() {
isPaused = false;
super.onResume();
if (showKeyboardOnResume || (keyboardViewVisible && keyboardView != null && keyboardView.getCurrentMode() == KeyboardView.MODE_KEYBOARD)) {
showPopup(KeyboardView.MODE_KEYBOARD);
openKeyboardInternal(edtChat);
}
if (FragmentShearedMedia.list != null && FragmentShearedMedia.list.size() > 0) {
deleteSelectedMessageFromAdapter(FragmentShearedMedia.list);
FragmentShearedMedia.list.clear();
}
canUpdateAfterDownload = true;
G.handler.postDelayed(new Runnable() {
@Override
public void run() {
if (getActivity() == null || getActivity().isFinishing() || !isAdded()) {
return;
}
initLayoutHashNavigationCallback();
showSpamBar();
updateShowItemInScreen();
if (isGoingFromUserLink) {
new RequestClientSubscribeToRoom().clientSubscribeToRoom(mRoomId);
}
DbManager.getInstance().doRealmTask(realm -> {
final RealmRoom room = realm.where(RealmRoom.class).equalTo("id", mRoomId).findFirst();
if (room != null) {
if (G.connectionState == ConnectionState.CONNECTING || G.connectionState == ConnectionState.WAITING_FOR_NETWORK) {
setConnectionText(G.connectionState);
} else {
if (room.getType() != CHAT) {
/**
* set member count
* set this code in onResume for update this value when user
* come back from profile activities
*/
String members = null;
if (room.getType() == GROUP && room.getGroupRoom() != null) {
members = room.getGroupRoom().getParticipantsCountLabel();
} else if (room.getType() == CHANNEL && room.getChannelRoom() != null) {
members = room.getChannelRoom().getParticipantsCountLabel();
}
final String finalMembers = members;
if (finalMembers != null) {
if (finalMembers != null && HelperString.isNumeric(finalMembers) && Integer.parseInt(finalMembers) == 1) {
mToolbar.setSubTitle(finalMembers + " " + G.fragmentActivity.getResources().getString(R.string.one_member_chat));
} else {
mToolbar.setSubTitle(finalMembers + " " + G.fragmentActivity.getResources().getString(R.string.member_chat));
}
if (HelperCalander.isPersianUnicode)
mToolbar.setSubTitle(convertToUnicodeFarsiNumber(mToolbar.getSubTitleText()));
}
} else {
RealmRegisteredInfo realmRegisteredInfo = RealmRegisteredInfo.getRegistrationInfo(realm, room.getChatRoom().getPeerId());
if (realmRegisteredInfo != null) {
setUserStatus(realmRegisteredInfo.getStatus(), realmRegisteredInfo.getLastSeen());
}
}
}
}
/**
* hint: should use from this method here because we need checkAction
* changeState after set members count for avoid from hide action if exist
*/
checkAction();
if (room != null) {
mToolbar.setTitle(EmojiManager.getInstance().replaceEmoji(room.getTitle(), null));
}
});
try {
mediaContainer.didLayoutChanged();
} catch (Exception e) {
e.printStackTrace();
}
}
}, Config.LOW_START_PAGE_TIME);
mRoomIdStatic = mRoomId;
lastChatRoomId = mRoomId;
titleStatic = title;
G.onUserInfoResponse = this;
G.onSetAction = this;
G.onUserUpdateStatus = this;
G.onLastSeenUpdateTiming = this;
G.onChatDelete = this;
G.onConnectionChangeStateChat = this;
HelperNotification.getInstance().cancelNotification();
G.onBotClick = this;
/*finishActivity = new FinishActivity() {
@Override
public void finishActivity() {
// ActivityChat.this.finish();
finishChat();
}
};*/
initCallbacks();
HelperNotification.getInstance().isChatRoomNow = true;
onUpdateUserOrRoomInfo = messageId -> {
if (messageId != null && messageId.length() > 0) {
G.handler.post(() -> {
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
if (linearLayoutManager != null) {
int start = linearLayoutManager.findFirstVisibleItemPosition();
if (start < 0) {
start = 0;
}
for (int i = start; i < mAdapter.getItemCount() && i < start + 15; i++) {
try {
MessageObject messageObject = mAdapter.getItem(i).messageObject;
if (messageObject != null && (String.valueOf(messageObject.id)).equals(messageId)) {
mAdapter.notifyItemChanged(i);
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
};
if (isCloudRoom) {
avatarItem.setVisibility(View.VISIBLE);
avatarItem.setImageResource(R.drawable.ic_cloud_space_blue);
} else {
setAvatar();
}
if (mForwardMessages == null) {
rootView.findViewById(R.id.ac_ll_forward).setVisibility(View.GONE);
}
RealmRoom realmRoom = getRoom();
if (realmRoom != null) {
isMuteNotification = realmRoom.getMute();
if (!isBot) {
txtChannelMute.setText(isMuteNotification ? R.string.unmute : R.string.mute);
iconChannelMute.setText(isMuteNotification ? R.string.icon_speaker : R.string.icon_mute);
}
if (!mToolbar.isSearchFieldVisible()) {
iconMute.setVisibility(isMuteNotification ? View.VISIBLE : View.GONE);
}
}
registerListener();
// enable attachment popup camera if was visible
if (mAttachmentPopup != null && mAttachmentPopup.isShowing) {
if (ContextCompat.checkSelfPermission(G.fragmentActivity, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
EventManager.getInstance(AccountManager.selectedAccount).postEvent(EventManager.ON_CAMERA_PERMISSION_GRANTED);
}
}
onLinkClick = v -> {
if (keyboardViewVisible) {
hideKeyboard();
}
};
}
use of net.iGap.realm.RealmRegisteredInfo in project iGap-Android by KianIranian-STDG.
the class FragmentChat method showSpamBar.
/**
* manage need showSpamBar for user or no
*/
private void showSpamBar() {
RealmRegisteredInfo realmRegisteredInfo = DbManager.getInstance().doRealmTask(realm -> {
return RealmRegisteredInfo.getRegistrationInfo(realm, chatPeerId);
});
RealmContacts realmContacts = DbManager.getInstance().doRealmTask(realm -> {
return realm.where(RealmContacts.class).equalTo("id", chatPeerId).findFirst();
});
if (realmRegisteredInfo != null && realmRegisteredInfo.getId() != AccountManager.getInstance().getCurrentUser().getId()) {
if (phoneNumber == null) {
if (realmContacts == null && chatType == CHAT && !isChatReadOnly) {
initSpamBarLayout(realmRegisteredInfo);
vgSpamUser.setVisibility(View.VISIBLE);
}
}
if (realmRegisteredInfo.getId() != AccountManager.getInstance().getCurrentUser().getId()) {
if (!realmRegisteredInfo.getDoNotshowSpamBar()) {
if (realmRegisteredInfo.isBlockUser()) {
initSpamBarLayout(realmRegisteredInfo);
blockUser = true;
txtSpamUser.setText(G.fragmentActivity.getResources().getString(R.string.un_block_user));
vgSpamUser.setVisibility(View.VISIBLE);
} else {
if (vgSpamUser != null) {
vgSpamUser.setVisibility(View.GONE);
}
}
}
}
if (realmContacts != null && realmRegisteredInfo.getId() != AccountManager.getInstance().getCurrentUser().getId()) {
if (realmContacts.isBlockUser()) {
initSpamBarLayout(realmRegisteredInfo);
blockUser = true;
txtSpamUser.setText(G.fragmentActivity.getResources().getString(R.string.un_block_user));
vgSpamUser.setVisibility(View.VISIBLE);
} else {
if (vgSpamUser != null) {
vgSpamUser.setVisibility(View.GONE);
}
}
}
}
if (vgSpamUser != null) {
RelativeLayout.LayoutParams spamLayoutParam = (RelativeLayout.LayoutParams) vgSpamUser.getLayoutParams();
if (mediaContainer.getVisibility() == View.VISIBLE) {
chatContainer.removeView(vgSpamUser);
spamLayoutParam.topMargin = LayoutCreator.dp(95);
chatContainer.addView(vgSpamUser);
}
}
}
Aggregations