package com.kickstarter.ui.activities;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import com.kickstarter.KSApplication;
import com.kickstarter.R;
import com.kickstarter.libs.BaseActivity;
import com.kickstarter.libs.qualifiers.RequiresActivityViewModel;
import com.kickstarter.libs.qualifiers.WebEndpoint;
import com.kickstarter.libs.utils.AnimationUtils;
import com.kickstarter.services.KSWebViewClient;
import com.kickstarter.ui.views.KSWebView;
import com.kickstarter.viewmodels.HelpViewModel;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.ButterKnife;
@RequiresActivityViewModel(HelpViewModel.class)
public class HelpActivity extends BaseActivity<HelpViewModel> implements KSWebViewClient.Delegate {
public static final int HELP_TYPE_TERMS = 0;
public static final int HELP_TYPE_PRIVACY = 1;
public static final int HELP_TYPE_HOW_IT_WORKS = 2;
public static final int HELP_TYPE_COOKIE_POLICY = 3;
public static final int HELP_TYPE_FAQ = 4;
@IntDef({HELP_TYPE_TERMS, HELP_TYPE_PRIVACY, HELP_TYPE_HOW_IT_WORKS, HELP_TYPE_COOKIE_POLICY, HELP_TYPE_FAQ})
@Retention(RetentionPolicy.SOURCE)
public @interface HelpType {}
private @HelpType int helpType;
protected @Bind(R.id.kickstarter_web_view) KSWebView kickstarterWebView;
protected @Bind(R.id.loading_indicator_view) View loadingIndicatorView;
@Inject @WebEndpoint String webEndpoint;
protected void helpType(final @HelpType int helpType) {
this.helpType = helpType;
}
public static class Terms extends HelpActivity {
public Terms() {
helpType(HELP_TYPE_TERMS);
}
}
public static class Privacy extends HelpActivity {
public Privacy() {
helpType(HELP_TYPE_PRIVACY);
}
}
public static class HowItWorks extends HelpActivity {
public HowItWorks() {
helpType(HELP_TYPE_HOW_IT_WORKS);
}
}
public static class CookiePolicy extends HelpActivity {
public CookiePolicy() {
helpType(HELP_TYPE_COOKIE_POLICY);
}
}
public static class Faq extends HelpActivity {
public Faq() {
helpType(HELP_TYPE_FAQ);
}
}
@Override
protected void onCreate(final @Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((KSApplication) getApplicationContext()).component().inject(this);
setContentView(R.layout.help_layout);
ButterKnife.bind(this);
final String url = getUrlForHelpType(this.helpType);
kickstarterWebView.loadUrl(url);
kickstarterWebView.client().setDelegate(this);
}
protected String getUrlForHelpType(final @HelpType int helpType) {
final Uri.Builder builder = Uri.parse(webEndpoint).buildUpon();
switch (helpType) {
case HELP_TYPE_TERMS:
builder.appendEncodedPath("terms-of-use");
break;
case HELP_TYPE_PRIVACY:
builder.appendEncodedPath("privacy");
break;
case HELP_TYPE_HOW_IT_WORKS:
builder.appendEncodedPath("hello");
break;
case HELP_TYPE_COOKIE_POLICY:
builder.appendEncodedPath("cookies");
break;
case HELP_TYPE_FAQ:
builder.appendEncodedPath("help/faq/kickstarter+basics");
break;
}
return builder.toString();
}
@Override
public void webViewExternalLinkActivated(final @NonNull KSWebViewClient webViewClient, final @NonNull String url) {}
@Override
public void webViewOnPageStarted(final @NonNull KSWebViewClient webViewClient, final @Nullable String url) {
loadingIndicatorView.startAnimation(AnimationUtils.INSTANCE.appearAnimation());
}
@Override
public void webViewOnPageFinished(final @NonNull KSWebViewClient webViewClient, final @Nullable String url) {
loadingIndicatorView.startAnimation(AnimationUtils.INSTANCE.disappearAnimation());
}
@Override
public void webViewPageIntercepted(final @NonNull KSWebViewClient webViewClient, final @NonNull String url) {}
}