package com.alorma.github.ui.activity; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.view.View; import android.widget.Button; import butterknife.BindView; import butterknife.ButterKnife; import com.alorma.github.BuildConfig; import com.alorma.github.R; import com.alorma.github.sdk.services.repo.CreateRepositoryClient; import com.alorma.github.ui.activity.base.RepositoryThemeActivity; import com.alorma.github.ui.activity.repo.RepoDetailActivity; import com.alorma.github.ui.fragment.CreateRepositoryFragment; import core.repositories.Repo; import rx.Subscriber; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public class CreateRepositoryActivity extends RepositoryThemeActivity implements CreateRepositoryFragment.CreateRepositoryInterface, View.OnClickListener { @BindView(R.id.create) Button create; private Repo repo; private CreateRepositoryFragment fragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.create_repository_activity); ButterKnife.bind(this); setTitle(R.string.create_repository_activity); fragment = new CreateRepositoryFragment(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.content, fragment); ft.commit(); } @Override public void onRepositoryReady() { create.setEnabled(true); create.setOnClickListener(this); } @Override public void onRepositoryNotReady() { create.setEnabled(false); } @Override public void onClick(View v) { if (fragment != null) { CreateRepositoryClient client = new CreateRepositoryClient(fragment.getRequest()); client.observable().subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<Repo>() { @Override public void onCompleted() { openRepo(repo); } @Override public void onError(Throwable e) { if (BuildConfig.DEBUG) { Snackbar.make(create, "Error creating repository: " + e.getMessage(), Snackbar.LENGTH_SHORT).show(); e.printStackTrace(); } else { Snackbar.make(create, "Error creating repository", Snackbar.LENGTH_SHORT).show(); } } @Override public void onNext(Repo repo) { CreateRepositoryActivity.this.repo = repo; } }); } } private void openRepo(Repo repo) { Intent intent = RepoDetailActivity.createLauncherIntent(this, repo.toInfo()); startActivity(intent); finish(); } }