package com.duckduckgo.mobile.android.util;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Build;
import android.widget.Toast;
import com.duckduckgo.mobile.android.R;
/**
* Created by fgei on 4/20/17.
*/
public class OnboardingHelper {
private static final String PACKAGE_CHROME = "com.android.chrome";
private static final String PACKAGE_FIREFOX = "org.mozilla.firefox";
private static final String BASE_URL = "https://duckduckgo.com/";
private static final String ADD_TO_HOMESCREEN_T_PARAM = "?t=ddg_android_hs";
private Context context;
private PackageManager packageManager;
private boolean isTablet = false;
private boolean isApi14;
public OnboardingHelper(Context context) {
this.context = context.getApplicationContext();
packageManager = context.getPackageManager();
isTablet = context.getResources().getBoolean(R.bool.isTablet);
isApi14 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
}
public boolean shouldShowOnboarding() {
return !PreferencesManager.getHasShownOnboarding() && !isTablet && isApi14;
}
public boolean shouldShowOnboardingBanner() {
return !PreferencesManager.isOnboardingBannerDismissed() && !isTablet && isApi14;
}
public void setOnboardingDismissed() {
PreferencesManager.setHasShownOnboarding();
}
public void setOnboardingBannerDismissed() {
PreferencesManager.setOnboardingBannerDismissed();
}
public void addToHomeScreen() {
context.sendBroadcast(getAddToHomescreenIntent(context));
PreferencesManager.setDDGAddedToHomeScreen();
Toast.makeText(context, R.string.ddg_added_to_home_page, Toast.LENGTH_SHORT).show();
}
public boolean isDefaultBrowserSelected() {
ResolveInfo resolveInfo = getDefaultActivityForIntent(packageManager, getDDGIntent());
if(resolveInfo == null || resolveInfo.activityInfo == null || resolveInfo.activityInfo.packageName == null) return false;
ActivityInfo activityInfo = resolveInfo.activityInfo;
return activityInfo.packageName != null;
}
public boolean isDefaultBrowserFirefox() {
return isDefaultBrowserForPackage(PACKAGE_FIREFOX);
}
public boolean isDefaultBrowserChrome() {
return isDefaultBrowserForPackage(PACKAGE_CHROME);
}
private boolean isDefaultBrowserForPackage(String packageName) {
if(!isDefaultBrowserSelected()) return false;
ActivityInfo activityInfo = getDefaultActivityForIntent(packageManager, getDDGIntent()).activityInfo;
return activityInfo.packageName.contains(packageName);
}
private ResolveInfo getDefaultActivityForIntent(PackageManager packageManager, Intent intent) {
return packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
}
public static Intent getAddToHomescreenIntent(Context context) {
Intent ddgIntent = getDDGAddToHomeScreenIntent();
Intent shortcutIntent = new Intent();
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, ddgIntent);
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.ddg_homescreen_label));
shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
shortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
shortcutIntent.putExtra("duplicate", false);
return shortcutIntent;
}
private static Intent getDDGIntent() {
return new Intent(Intent.ACTION_VIEW, Uri.parse(BASE_URL));
}
private static Intent getDDGAddToHomeScreenIntent() {
String url = BASE_URL + ADD_TO_HOMESCREEN_T_PARAM;
return new Intent(Intent.ACTION_VIEW, Uri.parse(url));
}
}