diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/AboutRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/AboutRepository.java new file mode 100644 index 00000000..2bd9f28d --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/AboutRepository.java @@ -0,0 +1,6 @@ +package com.d4rk.androidtutorials.java.data.repository; + +public interface AboutRepository { + String getVersionString(); + String getCurrentYear(); +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/HelpRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/HelpRepository.java new file mode 100644 index 00000000..f2f19139 --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/HelpRepository.java @@ -0,0 +1,14 @@ +package com.d4rk.androidtutorials.java.data.repository; + +import android.app.Activity; +import com.google.android.play.core.review.ReviewInfo; + +public interface HelpRepository { + void requestReviewFlow(OnReviewInfoListener listener); + void launchReviewFlow(Activity activity, ReviewInfo reviewInfo); + + interface OnReviewInfoListener { + void onSuccess(ReviewInfo info); + void onFailure(Exception e); + } +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/LessonRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/LessonRepository.java new file mode 100644 index 00000000..4ff72a1d --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/LessonRepository.java @@ -0,0 +1,6 @@ +package com.d4rk.androidtutorials.java.data.repository; + +public interface LessonRepository { + record Lesson(int titleResId, int codeResId, int layoutResId) {} + Lesson getLesson(String lessonName); +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/MainRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/MainRepository.java new file mode 100644 index 00000000..ba2af434 --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/MainRepository.java @@ -0,0 +1,17 @@ +package com.d4rk.androidtutorials.java.data.repository; + +import android.content.Intent; +import android.content.pm.PackageManager; +import com.google.android.play.core.appupdate.AppUpdateManager; + +public interface MainRepository { + boolean isAppInstalled(PackageManager packageManager, String packageName); + boolean applyThemeSettings(String[] darkModeValues); + String getBottomNavLabelVisibility(String labelKey, String labelDefaultValue); + String getDefaultTabPreference(String defaultTabKey, String defaultTabValue); + boolean shouldShowStartupScreen(); + void markStartupScreenShown(); + void applyLanguageSettings(); + AppUpdateManager getAppUpdateManager(); + Intent buildShortcutIntent(boolean isInstalled); +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/SettingsRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/SettingsRepository.java new file mode 100644 index 00000000..7ad0a23e --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/SettingsRepository.java @@ -0,0 +1,10 @@ +package com.d4rk.androidtutorials.java.data.repository; + +import android.content.SharedPreferences; + +public interface SettingsRepository { + void handlePreferenceChange(String key); + boolean applyTheme(); + void applyConsent(); + SharedPreferences getSharedPreferences(); +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/StartupRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/StartupRepository.java new file mode 100644 index 00000000..01ef39e2 --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/StartupRepository.java @@ -0,0 +1,19 @@ +package com.d4rk.androidtutorials.java.data.repository; + +import android.app.Activity; +import com.google.android.ump.ConsentRequestParameters; +import com.google.android.ump.FormError; + +public interface StartupRepository { + void requestConsentInfoUpdate( + Activity activity, + ConsentRequestParameters params, + Runnable onSuccess, + OnFormError onError); + + void loadConsentForm(Activity activity, OnFormError onError); + + interface OnFormError { + void onFormError(FormError error); + } +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/SupportRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/SupportRepository.java new file mode 100644 index 00000000..0d56bf4f --- /dev/null +++ b/app/src/main/java/com/d4rk/androidtutorials/java/data/repository/SupportRepository.java @@ -0,0 +1,17 @@ +package com.d4rk.androidtutorials.java.data.repository; + +import android.app.Activity; +import com.android.billingclient.api.ProductDetails; +import com.d4rk.androidtutorials.java.databinding.ActivitySupportBinding; +import java.util.List; + +public interface SupportRepository { + void initBillingClient(Runnable onConnected); + void queryProductDetails(List productIds, OnProductDetailsListener listener); + void initiatePurchase(Activity activity, String productId); + void initMobileAds(ActivitySupportBinding binding); + + interface OnProductDetailsListener { + void onProductDetailsRetrieved(List productDetailsList); + } +} diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCase.java index fbd94e0f..5fb16b2b 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetCurrentYearUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.about; -import com.d4rk.androidtutorials.java.ui.screens.about.repository.AboutRepository; +import com.d4rk.androidtutorials.java.data.repository.AboutRepository; /** Provides current year as a string. */ public class GetCurrentYearUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCase.java index 00839cda..5350ab9a 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/about/GetVersionStringUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.about; -import com.d4rk.androidtutorials.java.ui.screens.about.repository.AboutRepository; +import com.d4rk.androidtutorials.java.data.repository.AboutRepository; /** Returns the formatted app version string. */ public class GetVersionStringUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/android/GetLessonUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/android/GetLessonUseCase.java index d8768c92..80e1e689 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/android/GetLessonUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/android/GetLessonUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.android; -import com.d4rk.androidtutorials.java.ui.screens.android.repository.LessonRepository; +import com.d4rk.androidtutorials.java.data.repository.LessonRepository; /** Retrieves lesson data by name. */ public class GetLessonUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/LaunchReviewFlowUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/LaunchReviewFlowUseCase.java index fd38e5e7..a2da94bb 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/LaunchReviewFlowUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/LaunchReviewFlowUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.help; import android.app.Activity; -import com.d4rk.androidtutorials.java.ui.screens.help.repository.HelpRepository; +import com.d4rk.androidtutorials.java.data.repository.HelpRepository; import com.google.android.play.core.review.ReviewInfo; /** Launches the in-app review flow. */ diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/RequestReviewFlowUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/RequestReviewFlowUseCase.java index f5c4aada..0ffac953 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/RequestReviewFlowUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/help/RequestReviewFlowUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.help; -import com.d4rk.androidtutorials.java.ui.screens.help.repository.HelpRepository; +import com.d4rk.androidtutorials.java.data.repository.HelpRepository; /** Requests the Google Play review flow. */ public class RequestReviewFlowUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyLanguageSettingsUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyLanguageSettingsUseCase.java index 0af07c4c..3fc8de2d 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyLanguageSettingsUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyLanguageSettingsUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Applies the saved language preference. */ public class ApplyLanguageSettingsUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyThemeSettingsUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyThemeSettingsUseCase.java index 0fa78538..cf418d44 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyThemeSettingsUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ApplyThemeSettingsUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Applies theme preference and returns true if changed. */ public class ApplyThemeSettingsUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/BuildShortcutIntentUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/BuildShortcutIntentUseCase.java index be557a5e..9296c1c3 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/BuildShortcutIntentUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/BuildShortcutIntentUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.main; import android.content.Intent; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Creates an intent for the app shortcut. */ public class BuildShortcutIntentUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetAppUpdateManagerUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetAppUpdateManagerUseCase.java index dec14c16..60c6c9fb 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetAppUpdateManagerUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetAppUpdateManagerUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; import com.google.android.play.core.appupdate.AppUpdateManager; /** Provides the AppUpdateManager instance. */ diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetBottomNavLabelVisibilityUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetBottomNavLabelVisibilityUseCase.java index 121e2760..9a605399 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetBottomNavLabelVisibilityUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetBottomNavLabelVisibilityUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Returns bottom navigation label visibility preference. */ public class GetBottomNavLabelVisibilityUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetDefaultTabPreferenceUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetDefaultTabPreferenceUseCase.java index 37460727..e796741d 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetDefaultTabPreferenceUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/GetDefaultTabPreferenceUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Returns the default tab preference string. */ public class GetDefaultTabPreferenceUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/IsAppInstalledUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/IsAppInstalledUseCase.java index a1a2522a..13701170 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/IsAppInstalledUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/IsAppInstalledUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.main; import android.content.pm.PackageManager; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Checks if an app is installed by package name. */ public class IsAppInstalledUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/MarkStartupScreenShownUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/MarkStartupScreenShownUseCase.java index cd6b0e2a..e487410c 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/MarkStartupScreenShownUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/MarkStartupScreenShownUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Marks that the startup screen has been shown. */ public class MarkStartupScreenShownUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ShouldShowStartupScreenUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ShouldShowStartupScreenUseCase.java index 7967b28d..199b4c45 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ShouldShowStartupScreenUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/main/ShouldShowStartupScreenUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.main; -import com.d4rk.androidtutorials.java.ui.screens.main.repository.MainRepository; +import com.d4rk.androidtutorials.java.data.repository.MainRepository; /** Determines if the startup screen should be shown. */ public class ShouldShowStartupScreenUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/ApplyConsentUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/ApplyConsentUseCase.java index 12d23dbc..9a9c596b 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/ApplyConsentUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/ApplyConsentUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.settings; -import com.d4rk.androidtutorials.java.ui.screens.settings.repository.SettingsRepository; +import com.d4rk.androidtutorials.java.data.repository.SettingsRepository; /** Applies the Firebase consent settings. */ public class ApplyConsentUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/GetSharedPreferencesUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/GetSharedPreferencesUseCase.java index 385167d5..2d363eba 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/GetSharedPreferencesUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/GetSharedPreferencesUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.settings; import android.content.SharedPreferences; -import com.d4rk.androidtutorials.java.ui.screens.settings.repository.SettingsRepository; +import com.d4rk.androidtutorials.java.data.repository.SettingsRepository; /** Provides shared preferences used by the settings screen. */ public class GetSharedPreferencesUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/OnPreferenceChangedUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/OnPreferenceChangedUseCase.java index 28473c08..240386a0 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/OnPreferenceChangedUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/settings/OnPreferenceChangedUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.settings; -import com.d4rk.androidtutorials.java.ui.screens.settings.repository.SettingsRepository; +import com.d4rk.androidtutorials.java.data.repository.SettingsRepository; /** Handles a preference change and returns true if theme changed. */ public class OnPreferenceChangedUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/LoadConsentFormUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/LoadConsentFormUseCase.java index 67e6376a..f73c6fe8 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/LoadConsentFormUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/LoadConsentFormUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.startup; import android.app.Activity; -import com.d4rk.androidtutorials.java.ui.screens.startup.repository.StartupRepository; +import com.d4rk.androidtutorials.java.data.repository.StartupRepository; /** Loads and shows the consent form if required. */ public class LoadConsentFormUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/RequestConsentInfoUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/RequestConsentInfoUseCase.java index f5e4e06c..f0243ae8 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/RequestConsentInfoUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/startup/RequestConsentInfoUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.startup; import android.app.Activity; -import com.d4rk.androidtutorials.java.ui.screens.startup.repository.StartupRepository; +import com.d4rk.androidtutorials.java.data.repository.StartupRepository; import com.google.android.ump.ConsentRequestParameters; /** Requests consent info update via UMP. */ diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitBillingClientUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitBillingClientUseCase.java index 5a473bd5..7f01ee92 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitBillingClientUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitBillingClientUseCase.java @@ -1,6 +1,6 @@ package com.d4rk.androidtutorials.java.domain.support; -import com.d4rk.androidtutorials.java.ui.screens.support.repository.SupportRepository; +import com.d4rk.androidtutorials.java.data.repository.SupportRepository; /** Initializes billing client and invokes callback when connected. */ public class InitBillingClientUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitMobileAdsUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitMobileAdsUseCase.java index dd873a24..e91213d6 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitMobileAdsUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitMobileAdsUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.support; import com.d4rk.androidtutorials.java.databinding.ActivitySupportBinding; -import com.d4rk.androidtutorials.java.ui.screens.support.repository.SupportRepository; +import com.d4rk.androidtutorials.java.data.repository.SupportRepository; /** Initializes Google Mobile Ads. */ public class InitMobileAdsUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitiatePurchaseUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitiatePurchaseUseCase.java index 1dcdf6aa..86886c4d 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitiatePurchaseUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/InitiatePurchaseUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.support; import android.app.Activity; -import com.d4rk.androidtutorials.java.ui.screens.support.repository.SupportRepository; +import com.d4rk.androidtutorials.java.data.repository.SupportRepository; /** Launches billing flow for a product. */ public class InitiatePurchaseUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/QueryProductDetailsUseCase.java b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/QueryProductDetailsUseCase.java index f0df70f8..ddaaa540 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/QueryProductDetailsUseCase.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/domain/support/QueryProductDetailsUseCase.java @@ -1,7 +1,7 @@ package com.d4rk.androidtutorials.java.domain.support; import java.util.List; -import com.d4rk.androidtutorials.java.ui.screens.support.repository.SupportRepository; +import com.d4rk.androidtutorials.java.data.repository.SupportRepository; /** Queries in-app product details. */ public class QueryProductDetailsUseCase { diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/repository/AboutRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/repository/AboutRepository.java index c2a3c8d8..ba7327ad 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/repository/AboutRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/repository/AboutRepository.java @@ -12,7 +12,7 @@ /** * Repository for the "About" screen. Provides version info, date strings, etc. */ -public class AboutRepository { +public class AboutRepository implements com.d4rk.androidtutorials.java.data.repository.AboutRepository { private final Context context; diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/repository/LessonRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/repository/LessonRepository.java index 6dc1ac0a..a57ade15 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/repository/LessonRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/repository/LessonRepository.java @@ -2,48 +2,46 @@ import com.d4rk.androidtutorials.java.R; -public class LessonRepository { +public class LessonRepository implements com.d4rk.androidtutorials.java.data.repository.LessonRepository { - public record Lesson(int titleResId, int codeResId, int layoutResId) { } - - public Lesson getLesson(String lessonName) { + public com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson getLesson(String lessonName) { return switch (lessonName) { case "AlertDialog" -> - new Lesson(R.string.alert_dialog, R.raw.text_alertdialog_java, R.raw.text_center_button_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.alert_dialog, R.raw.text_alertdialog_java, R.raw.text_center_button_xml); case "SnackBar" -> - new Lesson(R.string.snack_bar, R.raw.text_snack_bar_java, R.raw.text_center_button_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.snack_bar, R.raw.text_snack_bar_java, R.raw.text_center_button_xml); case "Toast" -> - new Lesson(R.string.toast, R.raw.text_toast_java, R.raw.text_center_button_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.toast, R.raw.text_toast_java, R.raw.text_center_button_xml); case "ImageButtons" -> - new Lesson(R.string.image_buttons, R.raw.text_image_buttons_java, R.raw.text_image_buttons_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.image_buttons, R.raw.text_image_buttons_java, R.raw.text_image_buttons_xml); case "RadioButtons" -> - new Lesson(R.string.radio_buttons, R.raw.text_radio_buttons_java, R.raw.text_radio_buttons_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.radio_buttons, R.raw.text_radio_buttons_java, R.raw.text_radio_buttons_xml); case "Switch" -> - new Lesson(R.string.switches, R.raw.text_toggle_java, R.raw.text_toggle_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.switches, R.raw.text_toggle_java, R.raw.text_toggle_xml); case "Chronometer" -> - new Lesson(R.string.chronometer, R.raw.text_chronometer_java, R.raw.text_chronometer_layout_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.chronometer, R.raw.text_chronometer_java, R.raw.text_chronometer_layout_xml); case "DatePicker" -> - new Lesson(R.string.datepicker, R.raw.text_datepicker_java, R.raw.text_datepicker_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.datepicker, R.raw.text_datepicker_java, R.raw.text_datepicker_xml); case "TimePicker" -> - new Lesson(R.string.timepicker, R.raw.text_timepicker_java, R.raw.text_timepicker_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.timepicker, R.raw.text_timepicker_java, R.raw.text_timepicker_xml); case "InboxNotification" -> - new Lesson(R.string.inbox_notifications, R.raw.text_inbox_notification_java, R.raw.text_center_button_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.inbox_notifications, R.raw.text_inbox_notification_java, R.raw.text_center_button_xml); case "SimpleNotification" -> - new Lesson(R.string.simple_notifications, R.raw.text_simple_notification_java, R.raw.text_center_button_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.simple_notifications, R.raw.text_simple_notification_java, R.raw.text_center_button_xml); case "RatingBar" -> - new Lesson(R.string.rating_bar, R.raw.text_rating_bar_java, R.raw.text_rating_bar_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.rating_bar, R.raw.text_rating_bar_java, R.raw.text_rating_bar_xml); case "PasswordBox" -> - new Lesson(R.string.password_box, R.raw.text_password_java, R.raw.text_password_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.password_box, R.raw.text_password_java, R.raw.text_password_xml); case "TextBox" -> - new Lesson(R.string.textbox, R.raw.text_textbox_java, R.raw.text_textbox_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.textbox, R.raw.text_textbox_java, R.raw.text_textbox_xml); case "GridView" -> - new Lesson(R.string.grid_view, R.raw.text_grid_view_java, R.raw.text_grid_view_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.grid_view, R.raw.text_grid_view_java, R.raw.text_grid_view_xml); case "WebView" -> - new Lesson(R.string.web_view, R.raw.text_webview_java, R.raw.text_webview_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.web_view, R.raw.text_webview_java, R.raw.text_webview_xml); case "BottomNavigation" -> - new Lesson(R.string.bottom_navigation, R.raw.text_bottom_navigation_java, R.raw.text_bottom_navigation_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.bottom_navigation, R.raw.text_bottom_navigation_java, R.raw.text_bottom_navigation_xml); case "NavigationDrawer" -> - new Lesson(R.string.navigation_drawer, R.raw.text_navigation_drawer_java, R.raw.text_navigation_drawer_xml); + new com.d4rk.androidtutorials.java.data.repository.LessonRepository.Lesson(R.string.navigation_drawer, R.raw.text_navigation_drawer_java, R.raw.text_navigation_drawer_xml); default -> throw new IllegalArgumentException("Unknown lesson: " + lessonName); }; } diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/help/repository/HelpRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/help/repository/HelpRepository.java index 4f2361c7..aa02e5ce 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/help/repository/HelpRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/help/repository/HelpRepository.java @@ -12,7 +12,7 @@ /** * Repository for the Help screen. Manages the ReviewManager and in-app review flow. */ -public class HelpRepository { +public class HelpRepository implements com.d4rk.androidtutorials.java.data.repository.HelpRepository { private final ReviewManager reviewManager; @@ -25,7 +25,7 @@ public HelpRepository(@NonNull Context context) { * onSuccess -> returns the ReviewInfo to the caller * onFailure -> callback with exception */ - public void requestReviewFlow(@NonNull OnReviewInfoListener listener) { + public void requestReviewFlow(@NonNull com.d4rk.androidtutorials.java.data.repository.HelpRepository.OnReviewInfoListener listener) { reviewManager.requestReviewFlow() .addOnSuccessListener(listener::onSuccess) .addOnFailureListener(listener::onFailure); @@ -42,13 +42,4 @@ public void launchReviewFlow( reviewManager.launchReviewFlow(activity, reviewInfo); } - /** - * Simple callback interface to deliver success or failure - * when requesting a ReviewFlow. - */ - public interface OnReviewInfoListener { - void onSuccess(ReviewInfo info); - - void onFailure(Exception e); - } } \ No newline at end of file diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/repository/MainRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/repository/MainRepository.java index b1bc32df..f07ae9b8 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/repository/MainRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/repository/MainRepository.java @@ -18,7 +18,7 @@ * Repository class that handles data operations such as SharedPreferences, * app update checks, etc. */ -public class MainRepository { +public class MainRepository implements com.d4rk.androidtutorials.java.data.repository.MainRepository { private final Context context; private final SharedPreferences defaultSharedPrefs; diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/settings/repository/SettingsRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/settings/repository/SettingsRepository.java index c281c357..03301579 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/settings/repository/SettingsRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/settings/repository/SettingsRepository.java @@ -16,7 +16,7 @@ * Repository that handles reading/writing preferences (e.g., theme, language) * and applies the changes (e.g., calls setDefaultNightMode). */ -public class SettingsRepository { +public class SettingsRepository implements com.d4rk.androidtutorials.java.data.repository.SettingsRepository { private final Context context; private final SharedPreferences sharedPreferences; diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/startup/repository/StartupRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/startup/repository/StartupRepository.java index 6ee4e198..de83d952 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/startup/repository/StartupRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/startup/repository/StartupRepository.java @@ -13,7 +13,7 @@ * Repository that handles consent logic for the startup screen. * It keeps references to ConsentInformation and ConsentForm. */ -public class StartupRepository { +public class StartupRepository implements com.d4rk.androidtutorials.java.data.repository.StartupRepository { private final ConsentInformation consentInformation; private ConsentForm consentForm; @@ -33,7 +33,7 @@ public StartupRepository(Context context) { public void requestConsentInfoUpdate(Activity activity, ConsentRequestParameters params, Runnable onSuccess, - OnFormError onError) { + com.d4rk.androidtutorials.java.data.repository.StartupRepository.OnFormError onError) { consentInformation.requestConsentInfoUpdate( activity, params, @@ -55,7 +55,7 @@ public void requestConsentInfoUpdate(Activity activity, * @param activity the current Activity * @param onError callback invoked if there's a problem loading or showing the form */ - public void loadConsentForm(Activity activity, OnFormError onError) { + public void loadConsentForm(Activity activity, com.d4rk.androidtutorials.java.data.repository.StartupRepository.OnFormError onError) { UserMessagingPlatform.loadConsentForm( activity, form -> { @@ -76,10 +76,4 @@ public void loadConsentForm(Activity activity, OnFormError onError) { ); } - /** - * Simple functional interface for delivering form errors back to the caller. - */ - public interface OnFormError { - void onFormError(FormError error); - } } \ No newline at end of file diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/support/repository/SupportRepository.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/support/repository/SupportRepository.java index b7e8f888..5553627a 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/support/repository/SupportRepository.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/support/repository/SupportRepository.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.Map; -public class SupportRepository { +public class SupportRepository implements com.d4rk.androidtutorials.java.data.repository.SupportRepository { private final Context context; private final Map productDetailsMap = new HashMap<>(); @@ -74,7 +74,7 @@ public void onBillingServiceDisconnected() { * Query your product details for in-app items. * Typically called after billing client is connected. */ - public void queryProductDetails(List productIds, OnProductDetailsListener listener) { + public void queryProductDetails(List productIds, com.d4rk.androidtutorials.java.data.repository.SupportRepository.OnProductDetailsListener listener) { if (billingClient == null || !billingClient.isReady()) { return; } @@ -158,10 +158,4 @@ public void initMobileAds(ActivitySupportBinding binding) { binding.largeBannerAd.loadAd(new AdRequest.Builder().build()); } - /** - * Callback interface for when product details are fetched. - */ - public interface OnProductDetailsListener { - void onProductDetailsRetrieved(List productDetailsList); - } } \ No newline at end of file