package com.commit451.bypass.sample;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.text.method.LinkMovementMethod;
import android.text.style.ImageSpan;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.commit451.bypasspicassoimagegetter.BypassPicassoImageGetter;
import com.squareup.picasso.Picasso;
import in.uncod.android.bypass.Bypass;
import in.uncod.android.bypass.ImageSpanClickListener;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.http.GET;
public class MainActivity extends AppCompatActivity {
public interface GitHubService {
@GET("Commit451/LabCoat/raw/master/README.md")
Call<ResponseBody> getMarkdown();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ViewGroup root = (ViewGroup) findViewById(R.id.root);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://gitlab.com/")
.build();
GitHubService service = retrofit.create(GitHubService.class);
final TextView textView = (TextView) findViewById(R.id.text);
textView.setMovementMethod(LinkMovementMethod.getInstance());
service.getMarkdown().enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
Bypass bypass = new Bypass(MainActivity.this);
bypass.setImageSpanClickListener(new ImageSpanClickListener() {
@Override
public void onImageClicked(View view, ImageSpan imageSpan, String url) {
Snackbar.make(root, "Image clicked with url: " + url, Snackbar.LENGTH_LONG)
.show();
}
});
try {
String content = response.body().string();
textView.setText(bypass.markdownToSpannable(content,
new BypassPicassoImageGetter(textView, Picasso.with(MainActivity.this))));
} catch (Exception e) {
Snackbar.make(root, "Failed to load Markdown", Snackbar.LENGTH_INDEFINITE)
.show();
} finally {
response.body().close();
}
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(MainActivity.this, "Failed to load Markdown", Toast.LENGTH_SHORT)
.show();
}
});
}
}