package org.gdg.frisbee.android.onboarding;
import android.support.v4.app.ShareCompat;
import org.gdg.frisbee.android.BuildConfig;
import org.gdg.frisbee.android.R;
import org.gdg.frisbee.android.common.GdgActivity;
import org.gdg.frisbee.android.utils.PlusUtils;
import okhttp3.HttpUrl;
public class AppInviteLinkGenerator {
private static final String SENDER = "sender";
private static final HttpUrl NON_SIGNED_IN_INVITE_URL = HttpUrl.parse("https://fmec6.app.goo.gl/bVbA");
private final String dynamicLinkDomain;
private final String deepLinkBaseUrl;
static String extractSender(HttpUrl httpUrl) {
return httpUrl.queryParameter(SENDER);
}
public static AppInviteLinkGenerator create() {
return new AppInviteLinkGenerator("https://fmec6.app.goo.gl/", "https://gdg.events/");
}
private AppInviteLinkGenerator(String dynamicLinkDomain, String deepLinkBaseUrl) {
this.dynamicLinkDomain = dynamicLinkDomain;
this.deepLinkBaseUrl = deepLinkBaseUrl;
}
public static void shareAppInviteLink(GdgActivity activity) {
AppInviteLinkGenerator linkGenerator = create();
String gplusId = PlusUtils.getCurrentPlusId(activity);
HttpUrl appInviteLink = gplusId != null
? linkGenerator.createAppInviteLink(gplusId)
: NON_SIGNED_IN_INVITE_URL;
ShareCompat.IntentBuilder.from(activity)
.setChooserTitle(R.string.invite_friends)
.setText(activity.getString(R.string.invitation_message, appInviteLink))
.setType("text/plain")
.startChooser();
activity.sendAnalyticsEvent("AppInvite", "Shared",
gplusId != null ? "Signed In" : "Non Signed In");
}
private HttpUrl createAppInviteLink(String gplusId) {
return HttpUrl.parse(dynamicLinkDomain)
.newBuilder()
.addQueryParameter("link", createDeepLink(gplusId))
.addQueryParameter("apn", BuildConfig.APPLICATION_ID)
.build();
}
private String createDeepLink(String gplusId) {
return HttpUrl.parse(deepLinkBaseUrl)
.newBuilder()
.addPathSegment("invite")
.addQueryParameter(SENDER, gplusId)
.build()
.toString();
}
}