Add staging environment toggle

This commit is contained in:
Grishka 2024-05-21 20:17:46 +03:00
parent 2dae00800e
commit c94e1f939a
4 changed files with 32 additions and 4 deletions

View File

@ -13,7 +13,7 @@ android {
applicationId "org.joinmastodon.android"
minSdk 23
targetSdk 33
versionCode 97
versionCode 98
versionName "2.5.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@ -7,6 +7,7 @@ import org.joinmastodon.android.model.donations.DonationCampaign;
public class GetDonationCampaigns extends MastodonAPIRequest<DonationCampaign>{
private final String locale, seed;
private boolean staging;
public GetDonationCampaigns(String locale, String seed){
super(HttpMethod.GET, null, DonationCampaign.class);
@ -15,6 +16,10 @@ public class GetDonationCampaigns extends MastodonAPIRequest<DonationCampaign>{
setCacheable();
}
public void setStaging(boolean staging){
this.staging=staging;
}
@Override
public Uri getURL(){
Uri.Builder builder=new Uri.Builder()
@ -24,6 +29,8 @@ public class GetDonationCampaigns extends MastodonAPIRequest<DonationCampaign>{
.appendQueryParameter("platform", "android")
.appendQueryParameter("locale", locale)
.appendQueryParameter("seed", seed);
if(staging)
builder.appendQueryParameter("environment", "staging");
return builder.build();
}
}

View File

@ -5,6 +5,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
@ -32,6 +33,7 @@ import android.widget.Toolbar;
import com.squareup.otto.Subscribe;
import org.joinmastodon.android.BuildConfig;
import org.joinmastodon.android.E;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.MastodonAPIRequest;
@ -110,8 +112,11 @@ public class HomeTimelineFragment extends StatusListFragment implements ToolbarD
// TODO how often do we do this request? Maybe cache something somewhere?
if(AccountSessionManager.get(accountID).isEligibleForDonations()){
new GetDonationCampaigns(Locale.getDefault().toLanguageTag().replace('-', '_'), String.valueOf(AccountSessionManager.get(accountID).getDonationSeed()))
.setCallback(new Callback<>(){
GetDonationCampaigns req=new GetDonationCampaigns(Locale.getDefault().toLanguageTag().replace('-', '_'), String.valueOf(AccountSessionManager.get(accountID).getDonationSeed()));
if(BuildConfig.DEBUG && getActivity().getSharedPreferences("debug", Context.MODE_PRIVATE).getBoolean("donationsStaging", false)){
req.setStaging(true);
}
req.setCallback(new Callback<>(){
@Override
public void onSuccess(DonationCampaign result){
if(result==null)

View File

@ -1,5 +1,7 @@
package org.joinmastodon.android.fragments.settings;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;
@ -9,6 +11,7 @@ import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.fragments.HomeFragment;
import org.joinmastodon.android.fragments.onboarding.AccountActivationFragment;
import org.joinmastodon.android.model.viewmodel.CheckableListItem;
import org.joinmastodon.android.model.viewmodel.ListItem;
import org.joinmastodon.android.ui.utils.DiscoverInfoBannerHelper;
import org.joinmastodon.android.updater.GithubSelfUpdater;
@ -18,6 +21,8 @@ import java.util.List;
import me.grishka.appkit.Nav;
public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
private CheckableListItem<Void> donationsStagingItem;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
@ -29,7 +34,8 @@ public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
resetUpdateItem=new ListItem<>("Reset self-updater", null, this::onResetUpdaterClick),
new ListItem<>("Reset search info banners", null, this::onResetDiscoverBannersClick),
new ListItem<>("Reset pre-reply sheets", null, this::onResetPreReplySheetsClick),
new ListItem<>("Clear dismissed donation campaigns", null, this::onClearDismissedCampaignsClick)
new ListItem<>("Clear dismissed donation campaigns", null, this::onClearDismissedCampaignsClick),
donationsStagingItem=new CheckableListItem<>("Use staging environment for donations", null, CheckableListItem.Style.SWITCH, getPrefs().getBoolean("donationsStaging", false), this::toggleCheckableItem)
));
if(!GithubSelfUpdater.needSelfUpdating()){
resetUpdateItem.isEnabled=selfUpdateItem.isEnabled=false;
@ -40,6 +46,12 @@ public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
@Override
protected void doLoadData(int offset, int count){}
@Override
public void onStop(){
super.onStop();
getPrefs().edit().putBoolean("donationsStaging", donationsStagingItem.checked).apply();
}
private void onTestEmailConfirmClick(ListItem<?> item){
AccountSession sess=AccountSessionManager.getInstance().getAccount(accountID);
sess.activated=false;
@ -81,4 +93,8 @@ public class SettingsDebugFragment extends BaseSettingsFragment<Void>{
args.putString("account", accountID);
Nav.goClearingStack(getActivity(), HomeFragment.class, args);
}
private SharedPreferences getPrefs(){
return getActivity().getSharedPreferences("debug", Context.MODE_PRIVATE);
}
}