Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -127,13 +127,15 @@ public BillingFlowLauncher initiatePurchase(String productId) {
}

String finalOfferToken = offerToken;
BillingFlowParams.ProductDetailsParams.Builder paramsBuilder =
BillingFlowParams.ProductDetailsParams.newBuilder()
.setProductDetails(details);
if (finalOfferToken != null && !finalOfferToken.isEmpty()) {
paramsBuilder.setOfferToken(finalOfferToken);
}

List<BillingFlowParams.ProductDetailsParams> productDetailsParamsList =
Collections.singletonList(
BillingFlowParams.ProductDetailsParams.newBuilder()
.setProductDetails(details)
.setOfferToken(finalOfferToken) // FIXME: Argument 'finalOfferToken' might be null
.build()
);
Collections.singletonList(paramsBuilder.build());

BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setProductDetailsParamsList(productDetailsParamsList)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.d4rk.androidtutorials.java.R;
import com.d4rk.androidtutorials.java.databinding.DialogBottomSheetMenuBinding;
import com.d4rk.androidtutorials.java.ui.screens.settings.SettingsActivity;
import com.d4rk.androidtutorials.java.utils.ReviewHelper;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;

public class BottomSheetMenuFragment extends BottomSheetDialogFragment {
Expand Down Expand Up @@ -52,6 +53,11 @@ public View onCreateView(@NonNull LayoutInflater inflater,
dismiss();
});

binding.menuRate.setOnClickListener(v -> {
ReviewHelper.forceLaunchInAppReview(requireActivity());
dismiss();
});

binding.menuShare.setOnClickListener(v -> {
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,19 +104,27 @@ protected void onCreate(Bundle savedInstanceState) {
}
}
);
mainViewModel = new ViewModelProvider(this).get(MainViewModel.class);

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!prefs.getBoolean(getString(R.string.key_onboarding_complete), false)) {
boolean onboardingComplete = prefs.getBoolean(getString(R.string.key_onboarding_complete), false);
boolean shouldShowStartup = mainViewModel.shouldShowStartupScreen();
if (!onboardingComplete) {
if (shouldShowStartup) {
mainViewModel.markStartupScreenShown();
}
startActivity(new Intent(this, StartupActivity.class));
finish();
return;
}
if (shouldShowStartup) {
mainViewModel.markStartupScreenShown();
}
mBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());

StartupInitializer.schedule(this);

mainViewModel = new ViewModelProvider(this).get(MainViewModel.class);

// Fallback: show the consent form again if required.
ConsentInformation consentInformation = UserMessagingPlatform.getConsentInformation(this);
if (consentInformation.getConsentStatus() == ConsentInformation.ConsentStatus.REQUIRED) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ public void applySettings(String[] themeValues,
/**
* Checks if we need to show the startup screen.
*/
public boolean shouldShowStartupScreen() { // FIXME: Method 'shouldShowStartupScreen()' is never used
public boolean shouldShowStartupScreen() {
return shouldShowStartupScreenUseCase.invoke();
}

/**
* Mark startup screen as shown.
*/
public void markStartupScreenShown() { // FIXME: Method 'markStartupScreenShown()' is never used
public void markStartupScreenShown() {
markStartupScreenShownUseCase.invoke();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ public CharSequence provideSummary(ListPreference preference) {
return null;
}

public SettingsViewModel getSettingsViewModel() {
return settingsViewModel;
}

@Override
protected void onDestroy() {
super.onDestroy();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreferenceCompat;

import com.d4rk.androidtutorials.java.BuildConfig;
import com.d4rk.androidtutorials.java.R;
Expand All @@ -25,6 +26,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences_settings, rootKey);
SettingsActivity activity = (SettingsActivity) requireActivity();
SettingsViewModel settingsViewModel = activity.getSettingsViewModel();
ListPreference labelVisibilityMode = findPreference(getString(R.string.key_bottom_navigation_bar_labels));
if (labelVisibilityMode != null) {
labelVisibilityMode.setOnPreferenceChangeListener((preference, newValue) -> {
Expand All @@ -33,6 +36,16 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
return true;
});
}
SwitchPreferenceCompat consentAnalyticsPreference =
findPreference(getString(R.string.key_consent_analytics));
if (consentAnalyticsPreference != null) {
consentAnalyticsPreference.setOnPreferenceChangeListener((preference, newValue) -> {
if (newValue instanceof Boolean && settingsViewModel != null) {
settingsViewModel.setConsentAccepted((Boolean) newValue);
}
return true;
});
}
ListPreference defaultTab = findPreference(getString(R.string.key_default_tab));
if (defaultTab != null) {
defaultTab.setOnPreferenceChangeListener((preference, newValue) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public String getDarkMode() {
return getDarkModeUseCase.invoke();
}

public void setConsentAccepted(boolean accepted) { // FIXME: Method 'setConsentAccepted(boolean)' is never used
public void setConsentAccepted(boolean accepted) {
setConsentAcceptedUseCase.invoke(accepted);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
import androidx.lifecycle.ViewModelProvider;

import com.android.billingclient.api.ProductDetails;
import com.d4rk.androidtutorials.java.ads.AdUtils;
import com.d4rk.androidtutorials.java.data.repository.SupportRepository;
import com.d4rk.androidtutorials.java.databinding.ActivitySupportBinding;
import com.d4rk.androidtutorials.java.ui.components.navigation.BaseActivity;
import com.google.android.gms.ads.AdRequest;

import java.util.List;

Expand All @@ -30,8 +30,9 @@ protected void onCreate(Bundle savedInstanceState) {

supportViewModel = new ViewModelProvider(this).get(SupportViewModel.class);

AdUtils.loadBanner(binding.supportNativeAd);
AdUtils.loadBanner(binding.bannerAdView);
AdRequest adRequest = supportViewModel.initMobileAds();
binding.supportNativeAd.loadAd(adRequest);
binding.bannerAdView.loadAd(adRequest);

binding.buttonWebAd.setOnClickListener(v ->
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://bit.ly/3p8bpjj"))));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public SupportRepository.BillingFlowLauncher initiatePurchase(String productId)
return initiatePurchaseUseCase.invoke(productId);
}

public AdRequest initMobileAds() { // FIXME: Method 'initMobileAds()' is never used
public AdRequest initMobileAds() {
return initMobileAdsUseCase.invoke();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static void launchInAppReviewIfEligible(Activity activity,
launchReview(activity, onReviewLaunched);
}

public static void forceLaunchInAppReview(Activity activity) { // FIXME: Method 'forceLaunchInAppReview(android.app.Activity)' is never used
public static void forceLaunchInAppReview(Activity activity) {
launchReview(activity, null);
}

Expand Down
33 changes: 32 additions & 1 deletion app/src/main/res/layout/dialog_bottom_sheet_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,38 @@
</androidx.appcompat.widget.LinearLayoutCompat>
</com.google.android.material.card.MaterialCardView>

<!-- Item 4: Share -->
<!-- Item 4: Rate the app -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/menu_rate"
style="@style/Widget.Material3.CardView.Outlined"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="4dp"
android:clickable="true"
android:focusable="true">

<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="16dp">

<com.google.android.material.imageview.ShapeableImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="16dp"
android:src="@drawable/ic_rate_review" />

<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rate_us"
android:textAppearance="?attr/textAppearanceBodyLarge" />
</androidx.appcompat.widget.LinearLayoutCompat>
</com.google.android.material.card.MaterialCardView>

<!-- Item 5: Share -->
<com.google.android.material.card.MaterialCardView
android:id="@+id/menu_share"
style="@style/Widget.Material3.CardView.Outlined"
Expand Down