package com.kickstarter.ui.activities;
import android.app.DownloadManager;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.TextView;
import com.kickstarter.R;
import com.kickstarter.libs.BaseActivity;
import com.kickstarter.libs.qualifiers.RequiresActivityViewModel;
import com.kickstarter.libs.utils.ObjectUtils;
import com.kickstarter.services.apiresponses.InternalBuildEnvelope;
import com.kickstarter.viewmodels.DownloadBetaViewModel;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
@RequiresActivityViewModel(DownloadBetaViewModel.class)
public final class DownloadBetaActivity extends BaseActivity<DownloadBetaViewModel> {
protected @Bind(R.id.build) TextView buildTextView;
protected @Bind(R.id.changelog) TextView changelogTextView;
@Override
public void onCreate(final @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.download_beta_layout);
ButterKnife.bind(this);
final Observable<String> build = viewModel.outputs.internalBuildEnvelope()
.map(InternalBuildEnvelope::build)
.filter(ObjectUtils::isNotNull)
.map(Object::toString);
build
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(buildTextView::setText);
build
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::requestDownload);
viewModel.outputs.internalBuildEnvelope()
.map(InternalBuildEnvelope::changelog)
.compose(bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(changelogTextView::setText);
}
@OnClick(R.id.open_downloads_button)
public void openDownloadsOnClick(final @NonNull View v) {
final Intent intent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
startActivity(intent);
}
private void requestDownload(final @NonNull String build) {
final Intent intent = new Intent(Intent.ACTION_VIEW)
.setData(Uri.parse("https://www.kickstarter.com/mobile/beta/builds/" + build));
startActivity(intent);
}
}