Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Fixes #3839 Cancel env download if a new env is set #3842

Merged
merged 1 commit into from
Aug 20, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class EnvironmentsManager implements DownloadsManager.DownloadsListener, SharedPreferences.OnSharedPreferenceChangeListener {

Expand All @@ -34,6 +35,7 @@ default void onEnvironmentSetError(@NonNull String error) {}
private DownloadsManager mDownloadManager;
private SharedPreferences mPrefs;
private ArrayList<EnvironmentListener> mListeners;
private long mEnvDownloadId = -1;

public EnvironmentsManager(@NonNull Context context) {
mContext = context;
Expand Down Expand Up @@ -66,6 +68,10 @@ public void end() {
}

public void setOrDownloadEnvironment(@NonNull String envId) {
if (mEnvDownloadId != -1) {
mDownloadManager.removeDownload(mEnvDownloadId, true);
}

if (EnvironmentUtils.isBuiltinEnvironment(mContext, envId)) {
SettingsStore.getInstance(mContext).setEnvironment(envId);
mListeners.forEach(environmentListener -> environmentListener.onEnvironmentSetSuccess(envId));
Expand Down Expand Up @@ -152,10 +158,21 @@ public void reject() {

// DownloadsManager


@Override
public void onDownloadsUpdate(@NonNull List<Download> downloads) {
Download envDownload = downloads.stream().filter(download -> EnvironmentUtils.getExternalEnvironmentByPayload(mContext, download.getUri()) != null).findFirst().orElse(null);
if (envDownload != null) {
mEnvDownloadId = envDownload.getId();
}
}

@Override
public void onDownloadCompleted(@NonNull Download download) {
Environment env = EnvironmentUtils.getExternalEnvironmentByPayload(mContext, download.getUri());
if (env != null) {
mEnvDownloadId = -1;

// We don't want the download to be left in the downloads list, so we just remove it when the download is done.
mDownloadManager.removeDownload(download.getId(), false);
UnzipTask unzip = new UnzipTask(mContext);
Expand Down