-
Notifications
You must be signed in to change notification settings - Fork 531
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix #4300, #2432: Introduce beta & general availability update notices and build flavors #4417
Conversation
This simplifies application component management significantly and allows individual build flavors to have their own unique module lists.
This also introduces dedicated beta & GA build flavors which is a necessary prerequisite. It also introduces an extra beta, alpha, and dev mode labels for the splash screen (the latter 2 were extra) with 2 second minimum wait timers for beta and alpha to ensure they are seen. A 5-second safety timer was added to ensure the splash screen can always be passed even if something goes wrong at the domain level (since there are now quite a few moving pieces to determine the user's current onboarding state).
Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue. |
…oduce-beta-ga-notices
Tests broken due to changes to the app startup experience haven't yet been fixed.
Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue. |
There's a bunch left to do here, this is mainly needed so that I can transfer changes to a different machine.
Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue. |
Conflicts: build_flavors.bzl scripts/assets/test_file_exemptions.textproto
…oduce-beta-ga-notices Conflicts: .github/workflows/build_tests.yml build_flavors.bzl scripts/assets/test_file_exemptions.textproto version.bzl
This also removes temporary debug code and TODOs, and finishes the tests for SplashActivity.
Conflicts: app/src/main/java/org/oppia/android/app/application/alpha/AlphaApplicationComponent.kt app/src/main/java/org/oppia/android/app/application/dev/DeveloperApplicationComponent.kt app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AppVersionActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/completedstorylist/CompletedStoryListActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/customview/LessonThumbnailImageViewTest.kt app/src/sharedTest/java/org/oppia/android/app/customview/interaction/MathExpressionInteractionsViewTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/DrawableBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/ImageViewBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/MarginBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerMarginBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerPaddingBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/TextViewBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/databinding/ViewBindingAdaptersTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/faq/FAQListFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/faq/FAQSingleActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/faq/FaqListActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/help/HelpActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/help/HelpFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/home/HomeActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/home/RecentlyPlayedFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/home/TopicSummaryViewModelTest.kt app/src/sharedTest/java/org/oppia/android/app/home/WelcomeViewModelTest.kt app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryListViewModelTest.kt app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryViewModelTest.kt app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/ongoingtopiclist/OngoingTopicListActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/options/OptionsActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/options/OptionsFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/parser/CustomBulletSpanTest.kt app/src/sharedTest/java/org/oppia/android/app/parser/HtmlParserTest.kt app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/player/state/StateFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/profile/AddProfileActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/profile/AdminAuthActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/profile/AdminPinActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/profile/PinPasswordActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfilePictureActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/recyclerview/BindableAdapterTest.kt app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/story/StoryActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/story/StoryFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/DragDropTestActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/ImageRegionSelectionInteractionViewTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/InputInteractionViewTestActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityDebugTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityProdTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/TestFontScaleConfigurationUtilActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/testing/TopicTestActivityForStoryTest.kt app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/TopicActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/TopicFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/conceptcard/ConceptCardFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/info/TopicInfoFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/practice/TopicPracticeFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/revision/TopicRevisionFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/utility/RatioExtensionsTest.kt app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughActivityTest.kt app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughFinalFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughTopicListFragmentTest.kt app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughWelcomeFragmentTest.kt app/src/test/java/org/oppia/android/app/activity/ActivityIntentFactoriesTest.kt app/src/test/java/org/oppia/android/app/home/HomeActivityLocalTest.kt app/src/test/java/org/oppia/android/app/parser/FractionParsingUiErrorTest.kt app/src/test/java/org/oppia/android/app/parser/StringToRatioParserTest.kt app/src/test/java/org/oppia/android/app/player/exploration/ExplorationActivityLocalTest.kt app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt app/src/test/java/org/oppia/android/app/profile/ProfileChooserFragmentLocalTest.kt app/src/test/java/org/oppia/android/app/story/StoryActivityLocalTest.kt app/src/test/java/org/oppia/android/app/testing/CompletedStoryListSpanTest.kt app/src/test/java/org/oppia/android/app/testing/HomeSpanTest.kt app/src/test/java/org/oppia/android/app/testing/OngoingTopicListSpanTest.kt app/src/test/java/org/oppia/android/app/testing/PlatformParameterIntegrationTest.kt app/src/test/java/org/oppia/android/app/testing/ProfileChooserSpanTest.kt app/src/test/java/org/oppia/android/app/testing/ProfileProgressSpanCountTest.kt app/src/test/java/org/oppia/android/app/testing/RecentlyPlayedSpanTest.kt app/src/test/java/org/oppia/android/app/testing/TopicRevisionSpanTest.kt app/src/test/java/org/oppia/android/app/testing/activity/TestActivityTest.kt app/src/test/java/org/oppia/android/app/testing/administratorcontrols/AdministratorControlsFragmentTest.kt app/src/test/java/org/oppia/android/app/testing/options/OptionsFragmentTest.kt app/src/test/java/org/oppia/android/app/testing/player/split/PlayerSplitScreenTest.kt app/src/test/java/org/oppia/android/app/testing/player/state/StateFragmentAccessibilityTest.kt app/src/test/java/org/oppia/android/app/topic/info/TopicInfoFragmentLocalTest.kt app/src/test/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentLocalTest.kt app/src/test/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityLocalTest.kt app/src/test/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityLocalTest.kt app/src/test/java/org/oppia/android/app/translation/AppLanguageResourceHandlerTest.kt app/src/test/java/org/oppia/android/app/translation/AppLanguageWatcherMixinTest.kt app/src/test/java/org/oppia/android/app/utility/math/MathExpressionAccessibilityUtilTest.kt instrumentation/src/java/org/oppia/android/instrumentation/application/TestApplicationComponent.kt testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleCustomContextTest.kt testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleOmissionTest.kt testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleTest.kt
Remaining TODOs before merge:
|
## Explanation Fix part of #4300. This PR introduces the strings needed in #4417 in isolation so that they can be translated via Translatewiki sooner than #4417 will be merged. ## Essential Checklist - [x] The PR title and explanation each start with "Fix #bugnum: " (If this PR fixes part of an issue, prefix the title with "Fix part of #bugnum: ...".) - [x] Any changes to [scripts/assets](https://github.com/oppia/oppia-android/tree/develop/scripts/assets) files have their rationale included in the PR explanation. - [x] The PR follows the [style guide](https://github.com/oppia/oppia-android/wiki/Coding-style-guide). - [x] The PR does not contain any unnecessary code changes from Android Studio ([reference](https://github.com/oppia/oppia-android/wiki/Guidance-on-submitting-a-PR#undo-unnecessary-changes)). - [x] The PR is made from a branch that's **not** called "develop" and is up-to-date with "develop". - [x] The PR is **assigned** to the appropriate reviewers ([reference](https://github.com/oppia/oppia-android/wiki/Guidance-on-submitting-a-PR#clarification-regarding-assignees-and-reviewers-section)). ## For UI-specific PRs only This PR only introduces strings and otherwise doesn't affect the UI.
Conflicts: app/src/main/java/org/oppia/android/app/splash/SplashActivityPresenter.kt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Completed self-review.
app/src/main/java/org/oppia/android/app/application/alpha/BUILD.bazel
Outdated
Show resolved
Hide resolved
utility/src/main/java/org/oppia/android/util/data/AsyncDataSubscriptionManager.kt
Outdated
Show resolved
Hide resolved
utility/src/main/java/org/oppia/android/util/logging/firebase/FirebaseEventLogger.kt
Outdated
Show resolved
Hide resolved
...oppia/android/domain/exploration/lightweightcheckpointing/ExplorationCheckpointController.kt
Outdated
Show resolved
Hide resolved
domain/src/main/java/org/oppia/android/domain/profile/ProfileManagementController.kt
Outdated
Show resolved
Hide resolved
domain/src/main/java/org/oppia/android/domain/topic/StoryProgressController.kt
Outdated
Show resolved
Hide resolved
Due to the significant time sensitivity of this PR, I'm force-merging it without review. I've self-reviewed it and plan to ask for a separate reviewer to take a look post-merge (#4567 is tracking this). |
Explanation
Fixes #4300
Fixes #2432
This PR introduces support for showing notices when users change from certain flavors of the app to the beta and/or GA (general availability) flavors (both of which are newly introduced in this PR).
The user behavior is as follows:
In addition to the above, text was added to the splash screen for the developer, alpha, and beta flavors of the app to make it a bit more explicit to the user. The alpha and beta splash experiences have been configured to wait 2 seconds so that the user has a moment to see the actual text before the app finishes loading.
Note also that existing alpha users will not see the beta notice after installing the first beta version (since no flavor has been recorded). While this is technically fixable, it doesn't seem worthwhile given the current small user audience that would be affected. Subsequent transitions from alpha to beta will work as expected (and lead to the beta notice being shown).
As a side note: #2432 is fixed as of this PR since the final planned build flavors are being introduced here. While more flavors may be added in the future, it seems sufficient to consider "build flavors are introduced" to be done now that there are developer, alpha, beta, and GA flavors of the app.
Technical things of note:
Application.getApplicationContext()
may actually not return itself in instrumentation cases. The changes help avoid this leading to actual issues in tests (but they should have no impact on the app's behavior in production environments).Details regarding test changes & exemptions:
Essential Checklist
For UI-specific PRs only
This PR absolutely should include screenshots & a demo video, but for the sake of optimizing time this will be done post-merge.