mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-06 14:27:24 +00:00
Dispose everything properly
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
2022d07671
commit
08efe40d28
@ -30,7 +30,6 @@ import android.support.multidex.MultiDex;
|
|||||||
import android.support.multidex.MultiDexApplication;
|
import android.support.multidex.MultiDexApplication;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.nextcloud.talk.BuildConfig;
|
|
||||||
import com.nextcloud.talk.dagger.modules.BusModule;
|
import com.nextcloud.talk.dagger.modules.BusModule;
|
||||||
import com.nextcloud.talk.dagger.modules.ContextModule;
|
import com.nextcloud.talk.dagger.modules.ContextModule;
|
||||||
import com.nextcloud.talk.dagger.modules.DatabaseModule;
|
import com.nextcloud.talk.dagger.modules.DatabaseModule;
|
||||||
@ -51,11 +50,11 @@ import org.webrtc.PeerConnectionFactory;
|
|||||||
import org.webrtc.voiceengine.WebRtcAudioManager;
|
import org.webrtc.voiceengine.WebRtcAudioManager;
|
||||||
import org.webrtc.voiceengine.WebRtcAudioUtils;
|
import org.webrtc.voiceengine.WebRtcAudioUtils;
|
||||||
|
|
||||||
import java.security.GeneralSecurityException;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import androidx.work.Configuration;
|
||||||
import androidx.work.ExistingPeriodicWorkPolicy;
|
import androidx.work.ExistingPeriodicWorkPolicy;
|
||||||
import androidx.work.OneTimeWorkRequest;
|
import androidx.work.OneTimeWorkRequest;
|
||||||
import androidx.work.PeriodicWorkRequest;
|
import androidx.work.PeriodicWorkRequest;
|
||||||
@ -124,14 +123,7 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
|
|||||||
|
|
||||||
initializeWebRtc();
|
initializeWebRtc();
|
||||||
DisplayUtils.useCompatVectorIfNeeded();
|
DisplayUtils.useCompatVectorIfNeeded();
|
||||||
|
buildComponent();
|
||||||
try {
|
|
||||||
buildComponent();
|
|
||||||
} catch (final GeneralSecurityException exception) {
|
|
||||||
if (BuildConfig.DEBUG) {
|
|
||||||
exception.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
componentApplication.inject(this);
|
componentApplication.inject(this);
|
||||||
refWatcher = LeakCanary.install(this);
|
refWatcher = LeakCanary.install(this);
|
||||||
@ -144,6 +136,7 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
|
|||||||
PeriodicWorkRequest periodicCapabilitiesUpdateWork = new PeriodicWorkRequest.Builder(CapabilitiesWorker.class,
|
PeriodicWorkRequest periodicCapabilitiesUpdateWork = new PeriodicWorkRequest.Builder(CapabilitiesWorker.class,
|
||||||
1, TimeUnit.DAYS).build();
|
1, TimeUnit.DAYS).build();
|
||||||
|
|
||||||
|
WorkManager.initialize(getApplicationContext(), new Configuration.Builder().build());
|
||||||
WorkManager.getInstance().enqueue(pushRegistrationWork);
|
WorkManager.getInstance().enqueue(pushRegistrationWork);
|
||||||
WorkManager.getInstance().enqueue(accountRemovalWork);
|
WorkManager.getInstance().enqueue(accountRemovalWork);
|
||||||
WorkManager.getInstance().enqueueUniquePeriodicWork("DailyCapabilitiesUpdateWork",
|
WorkManager.getInstance().enqueueUniquePeriodicWork("DailyCapabilitiesUpdateWork",
|
||||||
@ -166,7 +159,7 @@ public class NextcloudTalkApplication extends MultiDexApplication implements Lif
|
|||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
//region Protected methods
|
//region Protected methods
|
||||||
protected void buildComponent() throws GeneralSecurityException {
|
protected void buildComponent() {
|
||||||
componentApplication = DaggerNextcloudTalkApplicationComponent.builder()
|
componentApplication = DaggerNextcloudTalkApplicationComponent.builder()
|
||||||
.busModule(new BusModule())
|
.busModule(new BusModule())
|
||||||
.contextModule(new ContextModule(getApplicationContext()))
|
.contextModule(new ContextModule(getApplicationContext()))
|
||||||
|
@ -468,8 +468,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
inChat = false;
|
inChat = false;
|
||||||
dispose();
|
|
||||||
ApplicationWideCurrentRoomHolder.getInstance().clear();
|
ApplicationWideCurrentRoomHolder.getInstance().clear();
|
||||||
leaveRoom();
|
leaveRoom();
|
||||||
}
|
}
|
||||||
@ -477,7 +477,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
private void dispose() {
|
private void dispose() {
|
||||||
Disposable disposable;
|
Disposable disposable;
|
||||||
for (int i = 0; i < disposableList.size(); i++) {
|
for (int i = 0; i < disposableList.size(); i++) {
|
||||||
if ((disposable = disposableList.get(i)).isDisposed()) {
|
if (!(disposable = disposableList.get(i)).isDisposed()) {
|
||||||
disposable.dispose();
|
disposable.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -575,6 +575,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(GenericOverall genericOverall) {
|
public void onNext(GenericOverall genericOverall) {
|
||||||
|
dispose();
|
||||||
getRouter().popToRoot();
|
getRouter().popToRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -655,6 +656,10 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void pullChatMessages(int lookIntoFuture) {
|
private void pullChatMessages(int lookIntoFuture) {
|
||||||
|
if (!inChat) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!lookingIntoFuture && lookIntoFuture == 1) {
|
if (!lookingIntoFuture && lookIntoFuture == 1) {
|
||||||
lookingIntoFuture = true;
|
lookingIntoFuture = true;
|
||||||
}
|
}
|
||||||
@ -708,6 +713,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
|||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(3, observable -> inChat)
|
.retry(3, observable -> inChat)
|
||||||
|
.takeWhile(observable -> inChat)
|
||||||
.subscribe(new Observer<Response>() {
|
.subscribe(new Observer<Response>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(Disposable d) {
|
||||||
|
@ -73,7 +73,6 @@ import net.orange_box.storebox.listeners.OnPreferenceValueChangedListener;
|
|||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.CookieManager;
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -167,9 +166,6 @@ public class SettingsController extends BaseController {
|
|||||||
@Inject
|
@Inject
|
||||||
UserUtils userUtils;
|
UserUtils userUtils;
|
||||||
|
|
||||||
@Inject
|
|
||||||
CookieManager cookieManager;
|
|
||||||
|
|
||||||
private UserEntity currentUser;
|
private UserEntity currentUser;
|
||||||
private String credentials;
|
private String credentials;
|
||||||
|
|
||||||
@ -424,7 +420,6 @@ public class SettingsController extends BaseController {
|
|||||||
|
|
||||||
|
|
||||||
removeAccountButton.addPreferenceClickListener(view1 -> {
|
removeAccountButton.addPreferenceClickListener(view1 -> {
|
||||||
cookieManager.getCookieStore().removeAll();
|
|
||||||
boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser.getId());
|
boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser.getId());
|
||||||
|
|
||||||
OneTimeWorkRequest accountRemovalWork = new OneTimeWorkRequest.Builder(AccountRemovalWorker.class).build();
|
OneTimeWorkRequest accountRemovalWork = new OneTimeWorkRequest.Builder(AccountRemovalWorker.class).build();
|
||||||
|
@ -107,12 +107,7 @@ public class SwitchAccountController extends BaseController {
|
|||||||
public void onNext(UserEntity userEntity) {
|
public void onNext(UserEntity userEntity) {
|
||||||
userUtils.disableAllUsersWithoutId(userEntity.getId());
|
userUtils.disableAllUsersWithoutId(userEntity.getId());
|
||||||
if (getActivity() != null) {
|
if (getActivity() != null) {
|
||||||
getActivity().runOnUiThread(new Runnable() {
|
getActivity().runOnUiThread(() -> getRouter().popCurrentController());
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
getRouter().popCurrentController();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user