From a2a2f3132aab3d3ca20e960fafdbf9db886fbbb4 Mon Sep 17 00:00:00 2001 From: Sergey Eremin Date: Sun, 3 Dec 2017 03:34:38 +0300 Subject: [PATCH] Issue #272 beta app feedback --- .../yalpstore/fragment/details/Beta.java | 92 ++++++++++++++++++- .../yalpstore/fragment/details/Review.java | 5 +- .../res/layout/details_activity_layout.xml | 44 ++++++++- app/src/main/res/values-ar/strings.xml | 4 + app/src/main/res/values-cs/strings.xml | 4 + app/src/main/res/values-de/strings.xml | 4 + app/src/main/res/values-el/strings.xml | 4 + app/src/main/res/values-es/strings.xml | 4 + app/src/main/res/values-eu/strings.xml | 4 + app/src/main/res/values-fr/strings.xml | 4 + app/src/main/res/values-it/strings.xml | 4 + app/src/main/res/values-ja/strings.xml | 4 + app/src/main/res/values-nl/strings.xml | 4 + app/src/main/res/values-pl/strings.xml | 4 + app/src/main/res/values-pt/strings.xml | 4 + app/src/main/res/values-ru/strings.xml | 4 + app/src/main/res/values-uk/strings.xml | 4 + app/src/main/res/values-zh/strings.xml | 4 + app/src/main/res/values/strings.xml | 4 + 19 files changed, 196 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Beta.java b/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Beta.java index a4057eda4..b0cfa540d 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Beta.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Beta.java @@ -1,14 +1,21 @@ package com.github.yeriomin.yalpstore.fragment.details; import android.preference.PreferenceManager; +import android.text.TextUtils; import android.view.View; +import android.widget.EditText; import android.widget.TextView; +import com.github.yeriomin.playstoreapi.GooglePlayAPI; +import com.github.yeriomin.yalpstore.ContextUtil; import com.github.yeriomin.yalpstore.DetailsActivity; import com.github.yeriomin.yalpstore.PlayStoreApiAuthenticator; import com.github.yeriomin.yalpstore.R; import com.github.yeriomin.yalpstore.model.App; import com.github.yeriomin.yalpstore.task.playstore.BetaToggleTask; +import com.github.yeriomin.yalpstore.task.playstore.PlayStorePayloadTask; + +import java.io.IOException; public class Beta extends Abstract { @@ -36,9 +43,33 @@ public class Beta extends Abstract { initExpandableGroup(R.id.beta_header, R.id.beta_container); setText(R.id.beta_header, app.isTestingProgramOptedIn() ? R.string.testing_program_section_opted_in_title : R.string.testing_program_section_opted_out_title); setText(R.id.beta_message, app.isTestingProgramOptedIn() ? R.string.testing_program_section_opted_in_message : R.string.testing_program_section_opted_out_message); - setText(R.id.beta_button, app.isTestingProgramOptedIn() ? R.string.testing_program_opt_out : R.string.testing_program_opt_in); + setText(R.id.beta_subscribe_button, app.isTestingProgramOptedIn() ? R.string.testing_program_opt_out : R.string.testing_program_opt_in); setText(R.id.beta_email, app.getTestingProgramEmail()); - activity.findViewById(R.id.beta_button).setOnClickListener(new BetaOnClickListener((TextView) activity.findViewById(R.id.beta_message), app)); + activity.findViewById(R.id.beta_feedback).setVisibility(app.isTestingProgramOptedIn() ? View.VISIBLE : View.GONE); + activity.findViewById(R.id.beta_subscribe_button).setOnClickListener(new BetaOnClickListener((TextView) activity.findViewById(R.id.beta_message), app)); + activity.findViewById(R.id.beta_submit_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + initBetaTask(new BetaFeedbackSubmitTask()).execute(); + } + }); + activity.findViewById(R.id.beta_delete_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + initBetaTask(new BetaFeedbackDeleteTask()).execute(); + } + }); + if (null != app.getUserReview() && !TextUtils.isEmpty(app.getUserReview().getComment())) { + ((EditText) activity.findViewById(R.id.beta_comment)).setText(app.getUserReview().getComment()); + activity.findViewById(R.id.beta_delete_button).setVisibility(View.VISIBLE); + } + } + + private BetaFeedbackTask initBetaTask(BetaFeedbackTask task) { + task.setPackageName(app.getPackageName()); + task.setEditText((EditText) activity.findViewById(R.id.beta_comment)); + task.setDeleteButton(activity.findViewById(R.id.beta_delete_button)); + return task; } static class BetaOnClickListener implements View.OnClickListener { @@ -58,4 +89,61 @@ public class Beta extends Abstract { new BetaToggleTask(app).execute(); } } + + static abstract private class BetaFeedbackTask extends PlayStorePayloadTask { + + protected String packageName; + protected EditText editText; + protected View deleteButton; + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public void setEditText(EditText editText) { + this.editText = editText; + setContext(editText.getContext()); + } + + public void setDeleteButton(View deleteButton) { + this.deleteButton = deleteButton; + } + } + + static private class BetaFeedbackSubmitTask extends BetaFeedbackTask { + + @Override + protected Void getResult(GooglePlayAPI api, String... arguments) throws IOException { + api.betaFeedback(packageName, editText.getText().toString()); + return null; + } + + @Override + protected void onPostExecute(Void result) { + super.onPostExecute(result); + if (success()) { + ContextUtil.toastShort(context, context.getString(R.string.done)); + deleteButton.setVisibility(View.VISIBLE); + } + } + } + + static private class BetaFeedbackDeleteTask extends BetaFeedbackTask { + + @Override + protected Void getResult(GooglePlayAPI api, String... arguments) throws IOException { + api.deleteBetaFeedback(packageName); + return null; + } + + @Override + protected void onPostExecute(Void result) { + super.onPostExecute(result); + if (success()) { + editText.setText(""); + ContextUtil.toastShort(context, context.getString(R.string.done)); + deleteButton.setVisibility(View.GONE); + } + } + } } diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Review.java b/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Review.java index 25ed4b41e..859ba677d 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Review.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/Review.java @@ -63,8 +63,9 @@ public class Review extends Abstract { } private boolean isReviewable(App app) { - return app.isInstalled() && !PreferenceManager.getDefaultSharedPreferences(activity) - .getBoolean(PlayStoreApiAuthenticator.PREFERENCE_APP_PROVIDED_EMAIL, false) + return app.isInstalled() + && !app.isTestingProgramOptedIn() + && !PreferenceManager.getDefaultSharedPreferences(activity).getBoolean(PlayStoreApiAuthenticator.PREFERENCE_APP_PROVIDED_EMAIL, false) ; } diff --git a/app/src/main/res/layout/details_activity_layout.xml b/app/src/main/res/layout/details_activity_layout.xml index ebc83c943..ffbdd539a 100644 --- a/app/src/main/res/layout/details_activity_layout.xml +++ b/app/src/main/res/layout/details_activity_layout.xml @@ -532,25 +532,59 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> -