Skip to content

Commit

Permalink
Add disclaimer support
Browse files Browse the repository at this point in the history
  • Loading branch information
Diego Serrano committed Feb 29, 2024
1 parent 78ac30c commit a9dce1c
Show file tree
Hide file tree
Showing 16 changed files with 258 additions and 49 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2.26.0 (2024-02-28)

- Add disclaimer support

## 2.25.1 (2023-07-12)

- Fix NullPointerException when setting color in tablets (https://github.com/Wootric/WootricSDK-flutter/issues/8)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ If you use Maven, you can include this library as a dependency:
<dependency>
<groupId>com.wootric</groupId>
<artifactId>wootric-sdk-android</artifactId>
<version>2.25.1</version>
<version>2.26.0</version>
</dependency>
```

Expand Down
7 changes: 0 additions & 7 deletions WootricSDK-Android.iml
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="WootricSDK-Android" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
Expand Down
4 changes: 2 additions & 2 deletions androidsdk/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
VERSION_NAME=2.25.1
VERSION_CODE=2251
VERSION_NAME=2.26.0
VERSION_CODE=2260
GROUP=com.wootric

POM_DESCRIPTION=WootricSDK Android
Expand Down
11 changes: 11 additions & 0 deletions androidsdk/src/main/java/com/wootric/androidsdk/Wootric.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.view.WindowManager;

import androidx.fragment.app.FragmentActivity;
Expand Down Expand Up @@ -258,6 +259,16 @@ public void setShowOptOut(boolean showOptOut) {
this.settings.setShowOptOut(showOptOut);
}

/**
* Show disclaimer text with link at the bottom of the survey
* @param disclaimerText String for the disclaimer message
* @param disclaimerLinkURL Uri of the website
* @param disclaimerLinkText String for the highlighted text to be pressed
*/
public void showDisclaimer(String disclaimerText, Uri disclaimerLinkURL, String disclaimerLinkText) {
this.settings.setDisclaimer(disclaimerText, disclaimerLinkURL, disclaimerLinkText);
}

/**
* Wootric provides designated class for providing custom messages
* @param customMessage WootricCustomMessage object
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

import com.wootric.androidsdk.Constants;
import com.wootric.androidsdk.R;
Expand All @@ -43,7 +44,6 @@ public class Settings implements Parcelable {
private Long firstSurvey = -1L;
private int adminPanelTimeDelay = Constants.NOT_SET;
private LocalizedTexts localizedTexts;

private Long userID;
private Long accountID;

Expand Down Expand Up @@ -90,6 +90,11 @@ public class Settings implements Parcelable {
private String clientID;
private String accountToken;

private Boolean showDisclaimer = false;
private String disclaimerText;
private Uri disclaimerLinkURL;
private String disclaimerLinkText;

public Settings(Settings settings) {
this.firstSurvey = settings.firstSurvey;
this.adminPanelTimeDelay = settings.getAdminPanelTimeDelay();
Expand Down Expand Up @@ -126,6 +131,10 @@ public Settings(Settings settings) {
this.thankYouButtonBackgroundColor = settings.thankYouButtonBackgroundColor;
this.socialSharingColor = settings.socialSharingColor;
this.surveyTypeScale = settings.surveyTypeScale;
this.showDisclaimer = settings.showDisclaimer;
this.disclaimerText = settings.disclaimerText;
this.disclaimerLinkURL = settings.disclaimerLinkURL;
this.disclaimerLinkText = settings.disclaimerLinkText;
}

public Settings() {
Expand All @@ -151,6 +160,7 @@ public void mergeWithSurveyServerSettings(Settings settings) {
this.surveyType = settings.surveyType;
this.customFirstQuestion = settings.customFirstQuestion;
this.customFirstQuestionEnabled = settings.customFirstQuestionEnabled;
this.showPoweredBy = settings.showPoweredBy;
}

public boolean firstSurveyDelayPassed(long timeFrom) {
Expand Down Expand Up @@ -182,7 +192,9 @@ public void setShowOptOut(boolean showOptOut) {

public boolean isShowOptOut() { return showOptOut; }

public boolean isShowPoweredBy() { return showPoweredBy; }
public boolean isShowPoweredBy() { return this.showPoweredBy; }

public boolean showDisclaimer() { return this.showDisclaimer; }

public boolean isCustomFirstQuestionEnabled() { return customFirstQuestionEnabled; }

Expand Down Expand Up @@ -254,7 +266,11 @@ public String getBtnEditScore() {
return localizedTexts.getEditScore().toUpperCase();
}

public String getBtnOptOut() { return localizedTexts.getOptOut().toUpperCase(); }
public String getBtnOptOut() { return localizedTexts.getOptOut(); }

public String getDisclaimerText() { return this.disclaimerText; }
public String getDisclaimerLinkText() { return this.disclaimerLinkText; }
public Uri getDisclaimerLinkURL() { return this.disclaimerLinkURL; }

public JSONObject getDriverPicklist(int score) throws JSONException {
JSONObject dpl = new JSONObject();
Expand Down Expand Up @@ -728,6 +744,24 @@ public void setScoreColor(int scoreColor) {
this.scoreColor = scoreColor;
}

public void setDisclaimer(String disclaimerText, Uri disclaimerLinkURL, String disclaimerLinkText) {
if (isBlank(disclaimerText)) {
Log.w(Constants.TAG, "setDisclaimer - disclaimerText cannot be blank.");
return;
}
if (disclaimerLinkURL == null) {
Log.w(Constants.TAG, "setDisclaimer - disclaimerLinkURL cannot be null.");
return;
}
if (isBlank(disclaimerLinkText)) {
Log.w(Constants.TAG, "setDisclaimer - disclaimerLinkText cannot be blank.");
return;
}
this.showDisclaimer = true;
this.disclaimerText = disclaimerText;
this.disclaimerLinkURL = disclaimerLinkURL;
this.disclaimerLinkText = disclaimerLinkText;
}
public int getThankYouButtonBackgroundColor () {
if (thankYouButtonBackgroundColor != Constants.NOT_SET) {
return thankYouButtonBackgroundColor;
Expand Down Expand Up @@ -794,6 +828,10 @@ public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.adminPanelSocial, 0);
dest.writeString(this.accountToken);
dest.writeString(this.clientID);
dest.writeByte(this.showDisclaimer ? (byte) 1 : (byte) 0);
dest.writeString(this.disclaimerText);
dest.writeParcelable(this.disclaimerLinkURL, 0);
dest.writeString(this.disclaimerLinkText);
}

private Settings(Parcel in) {
Expand Down Expand Up @@ -826,6 +864,10 @@ private Settings(Parcel in) {
this.adminPanelSocial = in.readParcelable(WootricSocial.class.getClassLoader());
this.accountToken = in.readString();
this.clientID = in.readString();
this.showDisclaimer = in.readByte() != 0;
this.disclaimerText = in.readString();
this.disclaimerLinkURL = in.readParcelable(Uri.class.getClassLoader());
this.disclaimerLinkText = in.readString();
}

public static final Creator<Settings> CREATOR = new Creator<Settings>() {
Expand Down
12 changes: 12 additions & 0 deletions androidsdk/src/main/java/com/wootric/androidsdk/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,13 @@

package com.wootric.androidsdk.utils;

import android.content.Intent;
import android.net.Uri;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.View;

import com.wootric.androidsdk.Constants;

Expand Down Expand Up @@ -83,4 +89,10 @@ public static String getTokenTDL(String accountToken) {
}
return "com";
}

public static SpannableString getSpannableString(ClickableSpan clickableSpan, String disclaimerText, String disclaimerLinkText) {
SpannableString ss = new SpannableString(disclaimerText + " " + disclaimerLinkText);
ss.setSpan(clickableSpan, disclaimerText.length() + 1, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,15 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
Expand Down Expand Up @@ -75,6 +82,7 @@ public class SurveyFragment extends DialogFragment
private static final String ARG_ACCESS_TOKEN = "com.wootric.androidsdk.arg.access_token";

private SurveyLayout mSurveyLayout;
private LinearLayout mFooter;
private WootricSurveyCallback mSurveyCallback;
private OnSurveyFinishedListener mOnSurveyFinishedListener;

Expand All @@ -87,6 +95,8 @@ public class SurveyFragment extends DialogFragment
private LinearLayout mPoweredBy;
private TextView mBtnOptOut;
private HashMap<String, String> mDriverPicklist;
private LinearLayout mDisclaimer;
private TextView mDisclaimerText;

private int mScore = -1;
private String mText;
Expand Down Expand Up @@ -146,18 +156,20 @@ public void onCreate(Bundle savedInstanceState) {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.wootric_fragment_survey, container, false);
mPoweredBy = (LinearLayout) view.findViewById(R.id.wootric_powered_by);

mDisclaimer = (LinearLayout) view.findViewById(R.id.wootric_disclaimer);

if (!mIsTablet) {
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
}

mSurveyLayout = (SurveyLayout) view.findViewById(R.id.wootric_survey_layout);
mSurveyLayout.setSurveyLayoutListener(this);

mFooter = (LinearLayout) view.findViewById(R.id.wootric_footer);
mBtnOptOut = (TextView) view.findViewById(R.id.wootric_btn_opt_out);
mBtnOptOut.setText(mSettings.getBtnOptOut());

if (!mSettings.isShowPoweredBy()) {
if (!mSettings.isShowPoweredBy() && mPoweredBy != null) {
mPoweredBy.setVisibility(View.GONE);
}

Expand All @@ -172,9 +184,6 @@ public void onClick(View v) {

if(!mIsTablet) {
mPoweredBy.setGravity(Gravity.RIGHT);
} else {
TextView mDotSeparator = (TextView) view.findViewById(R.id.footer_dot_separator);
mDotSeparator.setVisibility(View.VISIBLE);
}
}

Expand All @@ -191,13 +200,26 @@ public void onClick(View v) {
optOut();
}
});


TextView mDotSeparator = (TextView) footer.findViewById(R.id.footer_dot_separator);
mDotSeparator.setVisibility(View.VISIBLE);
}
mDisclaimerText = (TextView) mFooter.findViewById(R.id.wootric_disclaimer_text);
} else {
mDisclaimerText = (TextView) mDisclaimer.findViewById(R.id.wootric_disclaimer_text);
}

if (mSettings.showDisclaimer()) {
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Intent disclaimerIntent = new Intent(Intent.ACTION_VIEW, mSettings.getDisclaimerLinkURL());
startActivity(disclaimerIntent);
}
};
SpannableString ss = Utils.getSpannableString(clickableSpan, mSettings.getDisclaimerText(), mSettings.getDisclaimerLinkText());
mDisclaimerText.setText(ss);
mDisclaimerText.setMovementMethod(LinkMovementMethod.getInstance());
mDisclaimerText.setHighlightColor(Color.TRANSPARENT);
mDisclaimerText.setVisibility(View.VISIBLE);
}
return view;
}

Expand Down

0 comments on commit a9dce1c

Please sign in to comment.