From fb97f7ae83b617246abae00d19ea8a39a69cea97 Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Fri, 19 Jun 2020 12:47:39 +0300 Subject: [PATCH] NY-10746: [AN] JR crash on answer call --- .../data/sdk/calls/ConferenceSDKModule.java | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java index c7eacc2658..9dd5f398fb 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java @@ -2987,6 +2987,38 @@ public class ConferenceSDKModule extends BaseSDKModule { } + private synchronized void activeCallTimerTask(boolean samsungIAP, + boolean[] hasPurchasedProducts, + int[] maxCallDuration, + boolean isModerator, + boolean isVideoConference) { + if (hasCreatedActiveCall() && mConferenceSDKListener != null) { + long milliseconds = mActiveConference.getConferenceDuration(); + String message = (samsungIAP && !hasPurchasedProducts[0]) ? + statusUpdateTask(milliseconds, maxCallDuration, hasPurchasedProducts, isModerator) : + null; + String time = ""; + if (mActiveConference != null && mActiveConference.isWaiting()) { + time = NynjaApp.getComponent().context().getString(R.string.call_waiting_period); + } else { + time = getTime(milliseconds); + } + final boolean videoEnabled = (isVideoConference && + ((mActiveConference.mData != null && mActiveConference.mData.hasRemoteVideoTrack) || + (mActiveConference.mState != null && mActiveConference.mState.isOwnStreamActive))); + synchronized (mConferenceSDKListener) { + for (ConferenceSDKListener sdkListener : mConferenceSDKListener) { + sdkListener.timeAway(videoEnabled, time); + if (message != null && !hasPurchasedProducts[0]) { + sdkListener.showPurchaseDialog(isModerator, message); + } + } + } + } else { + stopTimer(); + } + } + private void startTimer() { stopTimer(); mTimer = new Timer(); @@ -2997,30 +3029,8 @@ public class ConferenceSDKModule extends BaseSDKModule { final boolean samsungIAP = samsungPurchaseRequired(); statusUpdateTask = new TimerTask() { @Override public void run() { - if (hasCreatedActiveCall() && mConferenceSDKListener != null) { - long milliseconds = mActiveConference.getConferenceDuration(); - String message = (samsungIAP && !hasPurchasedProducts[0]) ? - statusUpdateTask(milliseconds, maxCallDuration, hasPurchasedProducts, isModerator) : - null; - String time = ""; - if (mActiveConference != null && mActiveConference.isWaiting()) { - time = NynjaApp.getComponent().context().getString(R.string.call_waiting_period); - } else { - time = getTime(milliseconds); - } - synchronized (mConferenceSDKListener) { - for (ConferenceSDKListener sdkListener : mConferenceSDKListener) { - sdkListener.timeAway((isVideoConference && - (mActiveConference.mData.hasRemoteVideoTrack || mActiveConference.mState.isOwnStreamActive)), - time); - if (message != null && !hasPurchasedProducts[0]) { - sdkListener.showPurchaseDialog(isModerator, message); - } - } - } - } else { - stopTimer(); - } + activeCallTimerTask(samsungIAP, hasPurchasedProducts, maxCallDuration, + isModerator, isVideoConference); } }; mTimer.scheduleAtFixedRate(statusUpdateTask, SECOND, SECOND); -- GitLab